zoukankan      html  css  js  c++  java
  • python第九期学习笔记(八)(函数)

    转自:https://www.cnblogs.com/jin-xin/articles/10863032.html

     

    匿名函数的定义:

      函数名 = lambda 参数:返回值

    1)lambda 是定义匿名函数的关键字,相当于函数的def

    2)lambda 后面直接加形参,形参加多少都可以,只要用逗号隔开就行

    3)返回值在冒号之后设置,返回值和正常的函数一样,可以是任意数据类型

    4)匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据

    func=lambda a,b:a+b
    print(func(3,4))

    func=lambda a,b,*args,sex='alex',c,**kwargs:kwargs
    print(func(3,4,c=666,name='alex'))

    func=lambda **kwargs:kwargs
    print(func(name='alex',job='student'))

    func=lambda x:(x[0],x[2])
    print(func('afafasd'))

    #返回两个数中较大的数
    func=lambda a,b:a if a>b else b
    print(func(2,99))

    常用的内置函数:

    list() 将一个可迭代对象转换成列表

    tuple() 将一个可迭代对象转换成元组

    dict() 通过相应的方式创建字典

    abs() 返回绝对值

    sum() 求和

    min() 求最小值

    max() 最大值

    reversed() 将一个序列翻转, 返回翻转序列的迭代器

    bytes() 把字符串转换成bytes类型

    zip() 拉链方法

    sorted排序函数

    filter筛选过滤

    map 映射函数:map(function,iterable)

     

    #计算两个列表中相同位置的数据的和
    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8, 10]
    ret=list(map(lambda x,y:x+y,lst1,lst2))
    print(ret)
    reduce:
    reduce的作用是先把列表中的前俩个元素取出计算出一个值然后临时保存着,
    接下来用这个临时保存的值和列表中第三个元素进行计算,求出一个新的值将最开始
    临时保存的值覆盖掉,然后在用这个新的临时值和列表中第四个元素计算.依次类推
    from functools import reduce
    l = reduce(lambda x,y:x*10+y,[5,6,7,8])
    print(l) #5678
     

    
    

    闭包的定义:

        1. 闭包是嵌套在函数中的函数。

        2. 闭包必须是内层函数对外层函数的变量(非全局变量)的引用。

    # def make_averager():
    # series = []
    # def averager(new_value):
    # series.append(new_value)
    # total = sum(series)
    # return total/len(series)
    # return averager
    # avg = make_averager()
    # # 函数名.__code__.co_freevars 查看函数的自由变量
    # print(avg.__code__.co_freevars)

    def wrapper(a,b):
    def inner():
    print(a)
    print(b)
    return inner
    a = 2
    b = 3
    ret = wrapper(a,b)
    #查看函数的自由变量
    print(ret.__code__.co_freevars)
    综上所述:只要含有自由变量的就是闭包

     

  • 相关阅读:
    PPT文档页数显示的增加和更新
    Android http超时选项的测试
    64位win7硬盘安装64位ubuntu 13.04
    为博客园添加目录的配置总结
    Android webview通过http get下载文件下载两次的问题及解决方法
    ubuntu12.04安装搜狗输入法和配置
    samsung Galaxy s2(GT i9100g )刷机升级至4.4小记
    uva 11584 Partitioning by Palindromes
    uva 10534 Wavio Sequence
    poj 1185 炮兵阵地
  • 原文地址:https://www.cnblogs.com/gaoyuxia/p/11696670.html
Copyright © 2011-2022 走看看