一、参数设定
def lsm(x,y,z):
sum=x+y+z
return sum
1、顺序传入
lsm(1,2,3)
(1)定义了一个包含参数的list, 用*list解包,相当于顺序传入
a=[1,2.3]
lsm(*a)
>>>6
2、关键词
lsm(x=1,y=2,z=3)
顺序和关键词的方法混合使用,先顺序后关键词的原则
lsm(1,y=2,z=3)
但如果第一个参数是关键词,后面就必须是关键词
lsm(x=1,2,z=3) #报错
3、默认参数,z=3为默认值
def lsm(x,y,z=3):
sum=x+y+z
return sum
lsm(x=1,y=2)
默认值是可以修改的
def lsm(x,y,z=3):
sum=x+y+z
return sum
lsm(x=1,y=2,z=4)
默认参数必须放到参数列表的末位
def lsm(x=1,y,z=3): #报错
sum=x+y+z
return sum
4、不定长参数*args
(1)
def lsm(x,*args):
for i in args:
x+i
return sum
lsm(1,2,3,4)
(2)
●函数定义时,*可以将按位置传递进来的参数’打包"成元组(tuple)类型
●函数调用时,*可以“解包’待传递到函数中的元组、列表、集合、字符串等类型,并按位置传递到函数入口参数中
def lsm(x,*args):
print(x)
print(args)
return sum
lsm(1,[2,2],[3,4])
>>>1
([2,2],[3,4])
a=[1,2,3]
lsm(1,*a)
(3)函数定义的*arg在最后,则全部的参数都必须以顺序的方式传入
lsm(1,2,x=1) #报错
(4)*arg定义在最前面,后面的参数必须以关键词的形式传入
def lsm(*args,x):
print(x)
print(args)
return sum
lsm(1,2,x=1)
5、不定长参数**kwargs将不定长的关键字参数打包成字典
**可以解压带传递到函数入口参数中的字典
(1)与默认参数结合定义,kwargs将没有定义的关键字打包
def lsm(a,b=5,c=7,**kwargs):
print(a)
print(b,c)
print(kwargs)
return
lsm(1,x=3,y=8,b=1)
>>>1
>>>1 7
>>>{'x':3,'y'=8}
(2)几种定义方法结合使用
def lsm(a,b,*args,**kwargs):
print(a)
print(b)
print(args)
print(kwargs)
return
lsm(1,6,4,7,x=3,y=8)
>>>1
>>>6
>>>(4,7)
>>>{'x':3,'y'=8}
二、lambda函数:匿名函数
1、接收多个参数,只返回一个表达式的值
lsm=lambda a,b: 3+a+b
lsm(3,3)
>>>9
2、应用于列表元素的排序
(1)按照列表中每个子列表的第二个元素排序
lsm=[[1,2,3],[1,3,2],[3,1,2]]
sorted(lsm,key=lambda a:a[1])
[[3,1,2],[1,2,3],[1,3,2]]
(2)按照两个数据的和排序,倒序
lsm=[[1,8,3],[1,3,9],[3,1,10]]
sorted(lsm,key=lambda a:sum(a),reverse=True)
[[3,1,10],[1,3,9],[1,8,3]]
3、应用于字典成员的排序
lsm_dict={'x':3,'c':5,'z':7,'y'=8}
dict(sorted(lsm_dict.items(),key=lambda a:a[0]))
>>>{'c':5,'x':3,'y'=8,'z':7}
三、变量作用域
1、局部变量
2、全局变量
3、局部变量转为全局变量
当局部变量需要在函数外引用时,在变量前加global转换为全局变量
4、同名变量引用