函数
参数
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) # 根据提供的函数对指定序列做映射