Python:函数和Lambda表达式

函数

参数

def 函数(形参):  # 在使用函数时形参可任意更改名称或改为具体数据
*args #可变参数允许传入零个到任意个参数,它们在函数调用时自动组装为一个元组 (tuple)
**kw #关键字参数允许传入零个到任意个参数,它们在函数内部自动组装为一个字典 (dict)
*, nkw #使用命名关键字参数时,要特别注意不能缺少参数名

函数的返回值

def printme(str):
    print(str)      #没有return,返回值为None
printme('hello')   # hello
temp = printme('hello')    # hello      #temp表示返回值
print(temp)       # None     没有return,返回值为None
print(type(temp))  # <class 'NoneType'>

global num

没有global修饰,num就是自己局部的变量

有global修饰,num就是全局的num,全局中只能出现一个num,如果出现了值的改变,大家一起变

内嵌函数

内嵌函数只能在outer函数内部被调用

修改闭包作用域中的变量

nonlocal num  # nonlocal关键字声明

斐波那契数列 f(n)=f(n-1)+f(n-2), f(0)=0 f(1)=1

# 利用递归
def recur_fibo(n):
    if n <= 1:
        return n
    return recur_fibo(n - 1) + recur_fibo(n - 2)
lst = list()
for k in range(11):
    lst.append(recur_fibo(k))
print(lst)  # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

Lambda 表达式

lambda argument_list: expression

lambda # 定义匿名函数的关键词。
argument_list # 函数参数,它们可以是位置参数、默认参数、关键字参数,和正规函数里的参数类型一样。
:   # 冒号,在函数参数和表达式中间要加个冒号。
expression #只是一个表达式,输入函数参数,输出一些值。
注意:
expression 中没有 return 语句,因为 lambda 不需要它来返回,表达式本身结果就是返回值。
匿名函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

匿名函数

filter(function, iterable)    # 过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换
map(function, *iterables)   # 根据提供的函数对指定序列做映射

猜你喜欢

转载自blog.csdn.net/xiaokeaiuiya/article/details/108550220