python---函数与函数参数

函数是一种基本的代码抽象方式,其主要的优点是增强代码的重用性和可读性。函数的定义包含五大要点,分别是def、函数名、函数体、参数、返回值,已经两个英文符号,分别是括号(括号内为参数)和冒号(:)。

函数的参数类型有:必选参数(位置参数)、默认参数、可变参数、关键字参数和命名关键字参数。函数中,参数定义的顺序必须为必选参数(位置参数)、默认参数、可变参数、命名关键字参数和关键字参数。

总的来说,函数的参数可分为三大类,位置参数、默认值参数、可变长参数。

位置参数,调用时应按照定义时的对应的位置传参,或者也可以用键值对进行传参。默认参数,在函数定义的过程中,以参数名等于默认值的形式给出,用来提高程序的健壮性。可变长度的参数可分为两类,一类是非关键字可变长参数(元组),一类是关键字可变长参数(字典)。

参数传入时需要注意以下几点:

1、默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误;

2、*args是可变参数,args接收的是一个tuple;

3、**kw是关键字参数,kw接收的是一个dict;

4、可变参数既可以直接传入:func(1,2,3),又可以先组装list或tuple,再通过*args传入:funct(*(1,2,3));

5、关键字参数既可以直接传入:func(a=1, b=2),又可以先组装成dict,再通过**kw传入:func(**{'a':'1', 'b':'2'});

6、使用*args和**kw是python的习惯写法,当然也可以使用其他参数名

7、命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值;

8、定义命名的关键字参数在没有可变参数的情况下不要忘记写分隔符*,否则定义的将是位置参数

def person(name, age, *, city, job ):
    print(name, age, city, job)
def person(name, age, *args, city, job):
    print(name, age, args, city, job)

和关键字参数*kw不同,命名关键字参数需要一个特殊的分隔符*,*后面的参数被视为命名关键字参数。

若可变参数后面跟着命名关键字参数,后面跟着命名关键字参数就不需要一个特殊分隔符*了。

猜你喜欢

转载自blog.csdn.net/qianmo0417/article/details/84777324