标签:固定 inpu func ack 形参 年龄 地址 strong 执行
函数
定义函数时申请内存空间保存函数体代码,将上述内存地址绑定函数名。定义函数时不会执行函数整体代码,但是会检测函数语法。
调用函数时通过函数名找到函数的内存地址,然后触发函数体代码的执行。
无参函数:def func():
有参函数:
def jisuan(x,y):
print(x+y)
print(x*y)
jisuan(2,3) # 5 # 6
空函数,函数代码体为pass:
def func(x,y):
pass
def pai():
name = input("你的姓名:")
age = input("你的年龄:")
msg = "名字:{} 年龄:{}".format(name,age)
print(msg)
pai()
函数形参:在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名
函数实参:在调用函数时传入的值称之为实际参数,简称实参,相当于变量值
在调用函数时,实参(变量值)会绑定给形参(变量名),这种绑定关系只能在函数体内使用,调用关系结束后接触绑定关系。
1、位置参数:按照从左到右的顺序依次定义的参数称之为位置参数
位置形参的特点:必须被传值,参数不能多也不能少
位置实参:在函数调用阶段,按照位置的顺序与形参一一对应
def func(x,y):
print(x,y)
func(1,2)
2、关键字参数:
关键字实参:在函数调用阶段,按照key=value的形式传入的值
def func(x,y):
print(x,y)
func(x=1,y=2)
3、默认参数:
默认形参:在定义函数阶段,就已经被赋值的形参,在条用阶段不用为其赋值,若后续需要重新赋值也是可以再赋值的。
默认值传的是值的内存地址,虽然可以传任意类型,但是最好不要传可变类型。
函数调用最好不受外界代码的影响
def func(x,y=3):
print(x,y)
func(x=1)
func(x=1,y=5)
def func(x,y,z,l=None):
if l is None:
l = []
l.append(x)
l.append(y)
l.append(z)
print(l)
new_l = [11,22]
func(1,2,3,new_l)
4、可变长参数:在调用参数时,传入的值(实参)不固定
(1)、*形参名:用来接收溢出位置实参,*后面约定俗成跟args
def func(x,y,*z):
print(x,y,*z)
func(1,3,5,2,6,7,4) # 1 3 5 2 6 7 4
def func(x,y,*z):
print(x,y,z)
func(1,3,5,2,6,7,4) # 1 3 (5, 2, 6, 7, 4)
(2)、**形参名:用来接收溢出的关键字实参,**后面约定俗成跟kwargs
def func(x,y,**kwargs):
print(x,y,kwargs)
func(x=1,y=2,z=3,zz=7,zzz=9) # 1 2 {‘z‘: 3, ‘zz‘: 7, ‘zzz‘: 9}
*和**在实参中的应用案例:
def func(x,y,*args):
print(x,y,args)
func(1,2,*[1,2,3]) #1 2 (1, 2, 3)
def func(x,y,**kwargs):
print(x,y,kwargs)
func(x="red",y="blue",z="grey",zz="white") # red blue {‘z‘: ‘grey‘, ‘zz‘: ‘white‘}
*和**混合使用:
*args必须在**kwargs的前面
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,4,2,a=3,b=7,c=8) # (1, 2, 4, 2) {‘a‘: 3, ‘b‘: 7, ‘c‘: 8}
5、命名关键字参数:
在定义函数时,在*后定义的参数,称之为命名关键字参数。命名关键字实参必须按照key=value的形式传参
def func(x,y,*,a,b):
print(x,y,a,b)
func(11,22,a=33,b=44) # 11 22 33 44
标签:固定 inpu func ack 形参 年龄 地址 strong 执行
原文地址:https://www.cnblogs.com/fdsimin/p/12562749.html