一、位置参数

调用函数时根据函数定义的参数位置来传递参数。

def my_func(name, age):
    print("我叫%s,今年%s"%(name,age))

# 两个参数的顺序必须一一对应,且少一个参数都不可以
my_func('Victor', 24)

二、关键词参数

用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。

def my_func(name, age):
    print("我叫%s,今年%s"%(name,age))
# 两个参数的顺序必须一一对应,且少一个参数都不可以

# 位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
my_func('Victor',age=25)
my_func(name='Victor',age=25)
my_func(age=26,name='Vicotr')


三、默认参数

用于定义函数时为参数提供默认值,调用函数时可传可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)

def my_func(name, sex=2):
    # 正确的默认参数定义方式--> 位置参数在前,默认参数在后
    sex_dict = {1: u'先生', 2: u'女士'}
    print('hello %s %s, welcome to python world!' %(name, sex_dict.get(sex, u'先生')))


my_func('Alice')
# 调用时不传sex的值,则使用默认值2

my_func('Victor', 1)
# 调用时传入sex的值,并指定为2

四、参数组(可变参数)

要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c....作为一个list或者tuple传进来,如果利用可变参数,调用函数的方式可以更加简化

def test(*args):
    '''
    *args  中 * 代表接收参数个数不受限制 args可自定义
    我们传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组
    '''
    for i in args :
        # 如果不循环遍历会以元组形式输出(1, 2, 3, 4, 5)
        print(i)
        

test(1, 2, 3, 4, 5)