一、形参与实参
1.形参
只在函数内部有效。在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。
2.实参
可以是常量,变量,表达式,函数等,无论实参是哪种类型的量,在进行函数调用时,都必须有确定的值。
二、位置参数
调用函数时,必须将函数调用中的每个实参都关联到函数定义中的一个形参。
关联方式是基于实参的顺序,这被称作位置参数。
def register(name, age, major, country):
"""
学籍注册程序
:param name:str
:param age:integer
:param major:str(Chinese,Computer,English)
:param country:str(China,Japan,US)
:return:
"""
info = """
-----------你的注册信息----------
name = %s
age = %d
major = %s
country = %s
""" % (name, age, major, country)
print(info)
register('Mick', 20, 'CS', 'US')
#输出
'''
-----------你的注册信息----------
name = Mick
age = 20
major = CS
country = US
'''
其中,Mick,20,CS,US分别对应name,age,major,country。
三、默认参数
在编写函数时,可以给每个形参设定一个固定值,即为默认值。
在调用函数给形参提供实参时,就使用实参值,否则,使用实参的默认值。
def register(name, age, major, country='China'):
......
register('Mick', 20, 'computer', 'US')
register('张三', 21, 'Chinese')
register('李四', 20, 'English')
#输出
'''
-----------你的注册信息----------
name = Mick
age = 20
major = computer
country = US
-----------你的注册信息----------
name = 张三
age = 21
major = Chinese
country = China
-----------你的注册信息----------
name = 李四
age = 20
major = English
country = China
'''
其中,country='China'为默认参数。
四、关键参数
关键字实参 是传递给函数的名称:值对。直接将形参与实参关联起来。
注:关键参数必须放在位置参数之后。
register(age=22, name='Alex', 'computer', 'US')
报错:SyntaxError: positional argument follows keyword argument
register('Alex', 22, country='China', major='computer')
以上为正确写法。
五、非固定参数
若函数在定义时,不确定用户想传入多少个参数,就可以使用非固定参数。
def register(name, age, major, country='China', *args, **kwargs):
info = """
-----------你的注册信息----------
name = %s
age = %d
major = %s
country = %s
""" % (name, age, major, country)
print(info)
print(args)
print(kwargs)
#输出
'''
-----------你的注册信息----------
name = Alex
age = 22
major = computer
country = China
()
{}
'''
args为元组(),kwargs为字典,此时未传入参数,两者均为空。
def register(name, age, major, country='China', *args, **kwargs):
info = """
-----------你的注册信息----------
name = %s
age = %d
major = %s
country = %s
""" % (name, age, major, country)
print(info, end='')
print('sex='+str(kwargs.get('sex')))
register('Alex', 22, country='China', major='computer', sex='F')
#输出
'''
-----------你的注册信息----------
name = Alex
age = 22
major = computer
country = China
sex=F
'''
将sex作为参数传入kwargs,此时kwargs内存入了键值对sex=’F‘,在函数内部可用字典的方式打印出来。
def add(*n):
ar = 0
for x in n:
ar = ar + x
print(n)
print(ar)
return ar
add(1, 2, 5, 7)
#输出
(1, 2, 5, 7)
15
将1,2,5,7作为参数传入args,此时args内存入了一串数字,在函数内部可用元组的方式使用。