Python函数

Python函数

参数

  • 必选参数
  • 默认参数
  • 可变参数
  • 关键字参数
  • 命名关键字参数

必选参数

必选参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样
例:

def fun(x,n):
    s = 1
    while n>0:
        n = n-1
        s = s*x
    return s
print(fun(3,4))

输出结果:

81

默认参数

默认参数可以简化函数的调用

  • 必选参数在前,默认参数在后
  • 可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上
  • 默认参数必须指向不变对象

例:

def fun(x,n=2):
    s = 1
    while n>0:
        n = n-1
        s = s*x
    return s
print(func(5))

输出结果:

25

思考:为什么默认参数不能放在必选参数前面?

可变参数

  • 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
    例:
def func(*number):
    sum = 0
    for num in number:
        sum += num
    return sum

print(func(2,3,5))

输出结果:

10
  • 当存在一个listtuple时,需要调用一个可变参数时可以这样做:
nums = [1,2,3,4]
func(*nums)

关键字参数

  • 关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
  • 函数的调用者可以传入任意不受限制的关键字参数

命名关键字参数

  • 要限制关键字参数的名字,就可以用命名关键字参数
  • 命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数
    例:
def person(name, age, *, city, job):
    print(name, age, city, job)


  • 命名关键字参数可以有缺省值

特别注意:
如果没有可变参数,就必须加一个作为特殊分隔符。如果缺少,Python解释器将无法识别位置参数和命名关键字参数

参数组合

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

虽然可以组合多达5种参数,但不要同时使用太多的组合,否则函数接口的可理解性很差。

小结

  • 默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误
  • 要注意定义可变参数和关键字参数的语法
  • *args是可变参数,args接收的是一个tuple
  • **kw是关键字参数,kw接收的是一个dict
  • 命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值
  • 定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数
  • 使用*args**kwPython的习惯写法,当然也可以用其他参数名,但最好使用习惯用法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章