1、函数的定义和调用
<code>def function(x,y):
\t\t\treturn x+y/<code>
- def #是定义函数的关键字
- function #是函数名
- (x,y) #括号内为参数
- return #通过return返回值,把值赋给变量
- 扩展知识点:print只是普通的打印但是不能赋值变量
- 通过定义函数,再次调用函数可以实现代码的复用
2、函数参数
<code>def funtion(x,y=10,*args,**kwargs):
\t\t\tpass #pass暂时不进行任何操作/<code>
- Python中函数主要有这三种参数:
- (1)必备参数(x):调用时必须传入
- (2)默认参数(y=10) :调用时可以不传入,不传入时默认使用默认值
- (3)不定长参数(*args、**kwargs):可以传入也可以不传入,不传入时默认为空元祖和空字典
- 其中不定长参数有:元组和字典两种类型,字典传入是,必须是键值对的形式,且只能最后传入,定义时也只能放在最后面
- None 空值
- 拆包:类似于元组拆包,在传入时也可以通过解包传入不定长参数
3、函数的作用域
- 全局变量、局部变量
- 函数不会改变传入的不可变对象的值!
- 函数内部定义的变量在函数外部不可以使用,是局部变量
- global 是全局变量声明,声 明之后可以在全局使用,这里的全局指的是当前py文件中。
- 注意:函数内外名字要一致,否则就是一个新变量
- nonlocal 是声明局部变量(嵌套函数中使用)
- 闭包:把内部函数和外部变量都称为闭包
- 闭包作用:可以在外部修改函数内部的变量值,是函数内部与外界沟通的桥梁
4、递归函数和匿名函数
- 递归函数:函数内部调用函数自己本身,和while循环类似,也需要一个结束条件,否则超出递归深度就会报错。例如:
<code>def recursion(n):
if n<=1:
return 1
else:
return n *recursion(n-1)/<code>
- 匿名函数:就是没有函数名的函数,主要用来定义那种不是特别复杂的函数,常用于函数的参数中。
- 例如:
<code>g = lambda x : x+1
li.sort(key=lambda x: str(x)) #li是一个列表,key参数是可以接受函数的,所以可以直接写成匿名函数/<code>
- filter() 内置函数 过滤器
- filter(函数,需要过滤的元素等) 如:list(filter(lambda x:x>5,li)) #过滤列表li里大于5的元素
- map 统一对元素进行操作 如: list(map(lambda x : x*10,li)) #将列表li里的元素都进行乘以10的操作
- zip 统一配对的内置函数 zip(tu,li) #tu是一个元组,li是一个列表,将其组成一个字典
- 回调函数 把一个函数体当做参数传递给另一个函数去使用
<code>def func(f):
\t\t\tf()
print('调用了了另外一个函数')
def play():
print('函数使用')
func(play) #调用play函数/<code>
閱讀更多 槑孨 的文章