函数的参数
形式参数(形参)
形参只在函数内部有效,函数调用结束返回主调用函数后不能再使用该形参。
实际参数(实参)
实参可以是常量,变量,表达式,函数等,但都必须有确定的值,应该预先赋值,再带入实参。
默认参数
如果函数定义中有默认参数,实参中没有该默认参数,调用形参时会带入默认参数。(下面函数c 的Country还是USA)
def stu_register(name,age,course,country = "CN"): print("------注册学生信息-------") print('Name: %s' % name) print("Age: %s" % age) print("Country: %s " % country) print("Course: %s" % course) a = stu_register("dapeng",18,"python") b = stu_register("kanshan",13,"Go") c = stu_register("laoge",19,"java","USA") print(a)
传入的实参位置和形参位置必须是一一对应的。
默认参数要放在位置参数后面。
关键参数:给实参指定形参名,可以不按顺序放。但是关键参数必须要放在位置参数后面。
一个位置参数只能同时接受一个值,实参里不能同时像一个形参传入两个值。
在形参前面加*,形参接受到的参数可以形成元组
如下,msg对应的实参lucy,后面的实参和user对应,打包形成元组,发送给users。
def send_alert(msg,*user): for u in user: print("报警发送给 %s" % u) send_alert('lucy','dapeng','liusir')
如果传送给形参的是列表或者元组,需要在列表或者元组前面加*号。
def send_alert(msg,*user): for u in user: print("报警发送给 %s" % u) send_alert('lucy',*['dapeng','liusir','fhjfj'])
def send_alert(msg,*args,**kwargs): print(msg,args,kwargs) send_alert('lucy','dapeng','liusir','fhjfj')
lucy ('dapeng', 'liusir', 'fhjfj') {} (处理结果有个空字典,空字典接受自定义的实参)
在实参里加入自定义参数
def send_alert(msg,*args,**kwargs): print(msg,args,kwargs) send_alert('lucy','dapeng','liusir','fhjfj',age = 18,city = "nanjing") lucy ('dapeng', 'liusir', 'fhjfj') {'age': 18, 'city': 'nanjing'}
最后结果传入字典
def send_alert(msg,*args,**kwargs): print(msg,args,kwargs) d = {"yeuu":"eueuj"} send_alert("dapeng",**d) dapeng () {'yeuu': 'eueuj'}
越是困难的事越要立即去做,这样收益才会最大!!!