函数-参数-拆包
1.定义
def fun():
pass
fun()
2.参数
默认值:
def fun2(a,b=20,c=1): print(a) fun2(a=20,c=29)
fun2(10,30)
不定长参数:
def add(a,b,*args): #元组 print(a) print(b) print(args) #(45, 34, 5) add(12,3,45,34,5)
拆包
A =(1,23,4)
B= {'age':100, 'name':'join'}
fun(10,20, *A, **B) -->等价于 fun(10,20,1,23,4, age=100, name='join')
fun(10,20,A,B) --->A和B仅仅是一个变量,和10没什么区别
def fun3(a,b,*args,**kwargs): print(a) print(b) print(args) #() print(kwargs) #{'age': 'lisi', 'name': 'zhangsan'} fun3(12,4,name="zhangsan",age="lisi") #参数顺序不能改变
A=(1,2,3)
B={'name':'zhangsan','age':20}
fun3(12,3,A,B)
fun3(12,3,*A,**B) # 拆包 将*A拆成(,),,将**B拆成{key:value}
->
(1, 2, 3)
{'age': 20, 'name': 'zhangsan'}
值反馈:
对于不可变类型(数字,字符串,元组),没有反馈作用;可变类型可以修改;
本质就是赋值
3.返回值
return a,b,c -->(a,b,c)
return [a,b,c]
4.局部变量
a=100
def fun():
# global a;#声明为全局变量
a=200 #定义变量,此为局部变量
print(a)
fun()
print(a)
对于引用类型的变量,可以在局部变量进行修改
5.全局变量
建议全局变量命名为:g_a
6.匿名函数 lambda表达式
fun = lambda 参数:式子
fun = lambda a,b:a+b #只能写表达式
c = fun(10,20)
应用:
1.排序
a=[ {'name':'zhangsan','age':12}, {'name':'lsii','age':22}, {'name':'admin','age',32}]
a.sort(key=lambda x:x['age]) 不可加空格
def test(a,b,func): print(func(a,b)) func=input('请输入lambda表达式') test(11,22,func)
python2中,输入的字符串当做表达式执行,
在python3中会报错