标签:分割 def class 位置 取值 col order 位置实参 add
形参:定义函数()中出现的变量名,用来接收外界传来的值 # 注:形参随着函数的调用才产生,随着函数调用结束而销毁 ? 实参:函数调用()中传入的实际值,值可以是常量,变量,表达式或者三者的组合 ? ‘‘‘ def fn(形参): pass fn(实参) ‘‘‘
def fn1(a,b,c): print(a,b,c) ? # 位置实参:按照位置的顺序,从左到右为形参传递值 fn1(10,20,30) fn1(30,20,10) ? # 关键字实参:可以不按顺序传递,形参按名字取值 fn1(a = 10,b = 20, c = 30) fn1(c = 30,b = 20,a = 10 ) ? # 两者混用: ***** # 关键字实参必须出现在位置实参之后, # 多个位置实参还是按位置传参, # 关键字实参为 没有从位置实参拿到值的形参 传值,可以不用按位置传值 fn1(10,c = 30,a = 20) # 10按位置传给a,a = 20给a传参,c = 20传给c # 合法传参 fn1(10,b = 20,c = 30) fn1(10,c = 20,b = 30)
位置形参
位置形参: def fn(a,b,c): print(a,b,c) 位置形参可以由 位置实参 与关键字实参 传值 fn(10,20,30) fn(a = 10,b = 20,c = 30)
默认形参
默认形参:具有默认值,用=赋值 def fn(a = 10,b = 20): print(a,b) 位置形参可以由 位置实参 与关键字实参 传值,还可以不用传值(采用自身默认值) fn(20,30) fn(a = 200,b = 300) fn(100) #就给a传值 fn(b = 100) #就给b传值 ? 位置形参与默认形参同时存在,默认形参必须在后 def fn(a,b,c = 10,d = 20): print(a,b,c,d) ? 位置形参必须传值,默认形参分情况传值 fn(100,200,d = 1000)
可变长位置形参
变长位置形参 可变长形参只能由 位置参数 传值 def fn(a,b = 10,*args): print(a,b,args) ? 可变长形参会以元组形式接收 位置形参与默认形参未接受完的 所有传入的位置实参,用索引取值 注意:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参前,导致默认形参必须以位置实参传值 fn(100,200,300)
关键字形参
关键字形参 必须由关键字实参传值 *为分割线,可以有变量名*args,也可以用来做分隔 ? # 1、可变位置形参以元组方式接收值 # 如:接收10,20,30三个数 def fn1(*args): print(args) # (10, 20, 30) # 第一种传参 fn1(10, 20, 30) ? # 第二种传参 t = (10, 20, 30) # 单列集合及字符串类型都可以 fn1(*t)
可变长关键字形参
可变长关键字形参:用来接收没有被关键字形参未接受完的关键字实参 def fn(*,a,b = 20,c,**kwargs): print(a,b,kwargs) ? fn(a = 10,b = 50,c = 50,d = 0,f = ‘asd‘) ? def fn2(**kwargs): print(kwargs) # {‘name‘: ‘Owen‘, ‘age‘: 18} # 第一种传参 fn2(name=‘Owen‘, age=18) ? # 第二种传参 d = {‘name‘: ‘Owen‘, ‘age‘: 18} # 单列集合及字符串类型都可以 fn2(**d)
def fn(a,b,c = 10,d = 30,*args,e,f,**kwargs): print(a,b,c,d,args,e,f,kwargs) fn(1,2,3,4,5,6,7,8,9,e = 10,f = 20,g = 30, h = 40) ? # 总结: # 位置形参:可由 位置实参及关键字实参 传值 # 默认形参:可由 位置实参及关键字实参 传值,也可不传值 # 可变长位置形参:接收 位置形参及默认形参未接收完的 位置实参,若可变长位置形参要传入值,则其前面参数都必须是位置形参 # 关键字形参:只能由关键字实参传值 # 可变长关键字形参:接收关键字形参未接收完的关键字实参
?
标签:分割 def class 位置 取值 col order 位置实参 add
原文地址:https://www.cnblogs.com/penghengshan/p/10623069.html