python函数

本文详细介绍了Python函数的参数使用,包括顺序传入、列表解包、默认参数、不定长参数*args和关键字参数**kwargs。还探讨了lambda函数的运用,如匿名函数、列表排序及字典成员排序。同时讲解了变量作用域中的局部和全局变量转换。
摘要由CSDN通过智能技术生成

一、参数设定

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、同名变量引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值