函数的传参
参数划分
- 形参
- 写在函数声明的位置的变量叫形参,形式上的一个完整,表示这个函数需要xxx
- 实参
- 在函数调用的时候给参数传递的值叫实参
def meet(sex): #sex:形参
print("性别:%s"%(sex))
meet("男") #"男":实参
def func(a:int,b:str) #形参跟的数据类型只是个提示,没有约束性
pass
func(1,2)
实参
- 位置参数
def meet(sex,old,happy):
print("性别:%s,年龄:%s,爱好:%s"%(sex,old,happy))
meet("男",10,"篮球")
#根据参数位置,从左到右,一一对应
- 关键字参数
def meet(sex,old,happy):
print("性别:%s,年龄:%s,爱好:%s"%(sex,old,happy))
meet(sex="男",old=10,happy="篮球")
#一一对应,可以打乱顺序
- 混合传参
def meet(sex,old,happy):
print("性别:%s,年龄:%s,爱好:%s"%(sex,old,happy))
meet("男",10,happy="篮球")
#既有位置参数又有关键字参数
#位置参数要在关键字参数之前,否则会报错
形参
- 位置参数 与实参角度的位置参数是一种
- 优先级:位置>默认值
- 默认值参数:形参是默认参数时,实参可以不必传递
三元运算符
只针对if 。。。else。。。
#格式:条件成立的结果 if 条件判断 else 条件不成立的结果
a = 1000
b = 2000
c = a if a > b else b
print(c)
def complie(a,b):
return a if a > b else b
print(complie(10,20))
枚举
- 描述
- enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
- 语法
- enumerate(sequence,[strart=0])
- 参数
- sequence:一个序列、迭代器或其他支持迭代对象
- start:下标起始位置
- 返回值
- 返回enumerate(枚举)对象
lst = [1,2,3,4,5]
dic = {}
for k,v in enumerate(lst,10):
dic[k] = v
print(dic)
函数的动态参数
形参的第三种参数:动态参数
- 动态接收位置参数:*args
- * 在函数定义的时候叫聚合
- args 可以更改,最好保持不变
- 位置参数>动态位置参数
def func(a,b,*args):
print(a,b,args)
func(1,2,3,4,5,6,7)
def func(a,b,*args): #*args:聚合
print(a,b,*args) #*args:打散--原数据类型
func(1,2,3,4,5,6,7)
def func(*args,a=1,b=2):
print(a,b,*args)
func(1,2,3,4,5,6,7)
#上面这种情况关键字参数要放在动态参数后面
lst = [1,2,3,4,5,6]
def func(*args):
print(*args)
func(*lst)
#传参数的时候先打散,不做为一体传入,在函数里再用打散可以获取单个元素
- 动态接收关键字参数:**kwargs
def func(a,b,**kwargs):
print(a,b,kwargs) #打印出字典,加一个*取出的是键,不能打散
func(1,2,c=5,d=7)
#运行结果
1 2 {'c': 5, 'd': 7}
def func(a,b,*args,c=1,d=2,**kwargs):
print(a,b,args,c,d,kwargs)
func(1,2,3,4,5,6,7,8,e=0,f=5)
dic = {"1":2,"4":"a","3":4}
def func(**kwargs):
print(kwargs)
func(**dic) #先打散在传入
- 万能传参(常用)
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,3,4,5,6,a=8,b=9)
形参顺序
位置参数 、*args 、默认参数 、**kwargs
函数的注释
def func(a,b):
"""
函数作用
:param a: 参数说明
:param b: 参数说明
:return: 返回值说明
"""
pass
print(func.__doc__) #打印函数的注释信息