2020 python学习第十二天————函数参数与函数对象

1.1 函数的参数分两类

1.1.1 定义阶段函数内指定的参数称之为形式参数,简称形参

  形参就相当于变量名

1.1.2 调用阶段括号内传入的值称之为实际参数,简称实参

  实参就相当于变量值

调用函数时会将实参的值绑定给形参,变量只能在函数内用

1.2 第一组形参与实参

1.2.1 位置形参

  按照从左到右的顺序依次定义形参

  特点:必须被传值,多一个不行少一个也不行

    def func(x,y):

1.2.2 位置实参

  按照从左到右的顺序依次定义实参

  特点:按照位置与形参一一对应

    func(1,2)

1.2.3 关键字实参

  按照key=value的形式为指定的形参传值

  特点:指名道姓为某个形参传值,可以完全打乱顺序

    def func(x, y):

    func(y=2, x=1)

  注意:可以混用位置实参与关键字实参,但是

  1、不能对同一个形参重复赋值

    def func(x,y):

    func(1,2,x=3)

  2、关键字实参必须跟在位置实参的后面

    def func(x,y):

    func(1,y=2)

1.2.4 默认参数

  特点:具有默认值的形参,指的是在定义函数阶段就已经为参数赋值,这意味着在调用函数阶段可以不用为默认参数传值

  注意:

    1、位置形参必须放在默认形参的前面。

    2、默认形参的值是在函数定义阶段就被固定的,如果调用没有为默认形参传值,那么不会每次调用都重新赋值。函数的调用彼此之间应该做到没有关联,所以说默认形参的通常应该是不可变类型。

1.3 第二组形参与实参

可变长参数

  可变长指的是在调用函数时,传入的实参个数不固定,而实参是为形参赋值的

  所以对应着也应该有新的形参格式来负责接收不固定长度的实参

1.3.1 形参中带*与**

  1. *形参名:*会负责把溢出的位置实参存成元组然后赋值给后面的形参名,形参名通过应该是args

  2. **形参名:**会负责把溢出的关键字实参存成字典然后赋值给后面的形参名,形参名通过应该是kwargs

    注意:*与**在形参中混用,整体的顺序如下

      def func(x,y=2,*m,**n):

1.3.2 实参中带*与**

  1. 实参中带*,*后跟的那个值应该是一个可以被for循环遍历的值

    *会后面的那个值打散成位置实参

  2. 实参中带**,*后跟的那个值应该是一个字典

    **会后面的那个值打散成关键字实参

  形参中带*与**是汇总操作

  实参中带*与**是打散操作

2.1 函数对象

在python中函数是第一类对象,简称函数对象

函数对象指的就是可以把函数当做变量一样去使用

2.2 可以赋值

def foo():

f=foo

f()

2.3 可以当做参数传给另外一个函数

def func(aaa)  # aaa=函数foo的内存地址

  print(aaa)

def foo():

  print(‘from foo‘)

func(foo)

2.4 可以当做函数的返回值

2.5 可以当做容器类型的元素

相关推荐