Skip to content

Latest commit

 

History

History
83 lines (57 loc) · 2.75 KB

07-函数.md

File metadata and controls

83 lines (57 loc) · 2.75 KB

函数

命令行查看函数文档:help(function_name)


函数定义

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
  • return可以返回另一个函数
  • 函数体内使用pass占位,表示一个空函数
  • 函数可以返回多个值,比如return a, b

参数

调用函数时可使用的正式参数类型:

  • 必需参数:默认形式
  • 关键字参数:显示的指定参数名
  • 命名关键字参数
  • 默认参数:函数可以指定参数的默认值,
    • 默认参数必须指向不变对象
    • 默认参数必须放在参数列表的最后面
  • 不定长参数

命名关键字参数

对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数,如果要限制关键字参数的名字,就可以用命名关键字参数, 例如,只接收 city 和 job 作为关键字参数。这种方式定义的函数如下:

# *后面的参数被视为命名关键字参数,命名关键字参数必须传入参数名,如果没有传入参数名,调用将报错。
def person(name, age, *, city, job):
    print(name, age, city, job)

不定长参数

使用* 与 **表示参数为不定长参数

def arg(name, *numbers, **address):
    print(name)
    print(numbers)
    print(type(numbers))
    print(address)
    print(type(address))

* 与 **的区别:

  • 对于 *形参 python创建一个空的元组,然后把接收到的参数存储在元组中
  • **形参接收的是字典

参数组合

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。 但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数、关键字参数

def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

def f2(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

匿名函数

python 使用 lambda 来创建匿名函数。所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。