python函数篇

2020-05-18  本文已影响0人  星中有数

以下内容为阅读廖雪峰课程所做的课程笔记

1、调用函数

注:函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:

>>> a = abs  # 变量a指向abs函数

>>> a(-1)   # 所以也可以通过a调用abs函数1

2、定义函数

注:函数可以返回多个值,但实际上返回的多个值时一个tuple,在语法上返回一个tuple可以省略括号,按位置赋给对应的值。

3、函数参数


注1:默认参数, 要牢记一点:默认参数必须指向不变对象!

注2:可变参数

可变参数就是传入的参数个数是可变的,有以下2种方式

1)传入一个list或tuple

2) 在参数前面加了一个*号

def  calc(*numbers):

    sum =0

    for n in numbers: 

         sum = sum + n * n

    return  sum

>>> calc(1, 2)    

  5

 >>> calc() 

0    

>>> nums = [1, 2, 3] 

>>> calc(*nums) 

14  

注3:关键字参数

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

def  person(name, age, **kw):

        print('name:', name,'age:', age,'other:', kw)

# 引用例1:

>>> extra = {'city': 'Beijing', 'job': 'Engineer'} 

>>> person('Jack', 24, city=extra['city'], job=extra['job']) 

name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}  

# 引用例2:

>>> extra = {'city': 'Beijing', 'job': 'Engineer'} 

>>> person('Jack', 24, **extra)

 name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}  

注4:命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数,和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。

附:

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

**kw是关键字参数,kw接收的是一个dict。

以及调用函数时如何传入可变参数和关键字参数的语法:

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

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

使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

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

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

上一篇下一篇

猜你喜欢

热点阅读