匿名函数
1.普通函数
def 函数名(参数列表):
函数体
2.匿名函数
函数名 = lambda 参数列表:返回值
sum1 = lambdm (args,*kwargs):None
说明:
函数名 ----变量名
lambda ---关键字
参数列表 ----(参数名1,参数名2...)(至少有一个函数)
返回值 -----相当于有一个return语句的函数体
匿名函数的调用和普通函数一样:函数名(实参列表)也支持位置参数,关键字参数,不定长函数
变量的作用域
1.变量的作用域
变量的作用域是指变量更够使用的范围
2.全局变量和局部变量
全局变量:声明在函数和类的外面的变量都是全局变量,作用域是从声明开始到整个py文件结束。
3.局部变量
声明在函数和类中的变量都是局部变量。声明在函数中的变量,作用域从声明开始到整个函数结束。
def fuc():
a = 123 #a就是局部变量
4.global 关键字
在函数中说明一个变量是全局变量
`注意:值在函数中使用
name = 'uzi'
def fuc():
global name#说明当前使用的变量为全局变量
name ='letme'
print(name)
fuc() # 'letme'
5.nonlocal 关键字
想要在局部变量中修改局部变量的值
def fuc():
abc = 100
nonlocal abc
abc = 200
print(abc)
fuc() #200
4.函数作为变量
1.声明函数就是声明一个类型是function的变量,函数名实质就是一个变量名
def fuc():
print()
print(type(fuc)) #<class 'function'>
2.函数作为列表元素
a = 10
list1 = [1,a]
def fuc():
print('love')
return 10
list2 = [1,fuc(),fuc]
print(list2) #[1,10,fuc地址]
3.将函数作为参数
def fuc1(n):
n()
def fuc2():
print('chenguo is good man')
fuc1(fuc2) #chenguo is good man
列表.sort(key = None ,reverse = False) 使用sort的时候,可以通过key赋值一个函数变量,来规定列表中的元素按照什么标准来排序 这儿的函数要求有一个参数和返回值。
lst3 = [(10,20),(100,3),(1,90)]
def sum1(item):
return item[1]
list3.sort(key = sum1)
print(list3) #[(100, 3), (10, 20), (1, 90)]
4.将函数作为返回值
根据运算符号,返回对应的功能
def oper(opera):
if opera =='+':
def fuc1(*args,**kwargs):
#*args = (tuple)
#**kwaggs = {dict}
sum1 = 0
for x in args:
sum1 += x
for y in kwargs:
sum1 += kwargs[y]
return sum1
return fuc1
re = oper('+')(34,56,35,a = 12 , b = 45)
print(re)#182
函数的调用
1.补充:python中的函数可以有多个返回值
求多个数的和以及平均值
def sum1(*n):
sum2 = sum(n)
avrg = sum2/len(n)
return (sum2, avrg) #同时返回和 、平均值
a = sum1
print(a(12,3,4,4)) #(23, 5.75)
递归函数
递归函数:函数中调用函数本身,这样的函数就是递归函数(自己调自己)
循环能做的事情递归都可以做,但是实际上循环能解决的问题绝对不选递归
网友评论