2.8Python语言的函数(Function)

函数定义

def 函数名(参数1, 默认值参数 = 值, *元组参数, **字典参数):
    函数体
    [return 返回值]

参数传递方式

默认值参数必须放在其它位置参数的后面,关键字参数必须放在位置参数后面。

  • 参数的传递不仅支持位置参数从左往右依次传递方式,不支持关键字参数传递方式。
  • 函数调用时传递的参数个数与函数定义时接收的参数个数无需相同。
  • 函数调用时传递的参数数据类型与函数定义时默认参数的数据类型无需相同。
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
    print("-- This parrot wouldn't", action, end=' ')
    print("if you put", voltage, "volts through it.")
    print("-- Lovely plumage, the", type)
    print("-- It's", state, "!")

该函数接受一个必选参数(voltage)和三个可选参数(stateaction 和 type)。该函数可用下列方式调用:

parrot(1000)                                          # 1 positional argument
parrot(voltage=1000)                                  # 1 keyword argument
parrot(voltage=1000000, action='VOOOOOM')             # 2 keyword arguments
parrot(action='VOOOOOM', voltage=1000000)             # 2 keyword arguments
parrot('a million', 'bereft of life', 'jump')         # 3 positional arguments
parrot('a thousand', state='pushing up the daisies')  # 1 positional, 1 keyword

特殊参数传递方式

默认情况下,参数可以按位置或关键字传递给 Python 函数。为了让代码易读、高效,最好限制参数的传递方式,这样,开发者只需查看函数定义,即可确定参数项是仅按位置、按位置或关键字,还是仅按关键字传递。

/ 和 * 是可选的。参数的形式使用/ 和 * 来区分仅位置参数和仅关键字参数。仅限位置形参应放在 / (正斜杠)前,仅限关键字参数应放在*(星号)后面。

def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
      -----------    ----------     ----------
        |             |                  |
        |        Positional or keyword   |
        |                                - Keyword only
         -- Positional only

嵌套函数

函数还可以定义在另外的函数体中,称为“嵌套函数”。

嵌套函数可以访问外部函数中的变量,而外部函数不可以访问嵌套函数中的变量。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/python/pythonbasic/2736.html

发表评论

登录后才能评论