Python函数参数

根据廖叔叔的python教程整理

函数参数

1. 位置参数

  • 普通形式的参数,没有默认值
  • 调用时可以按参数顺序传入对应参数,可以按关键字形式传入(x=123,按关键字传入可以不按顺序),所以位置参数也叫必选参数
  • 位置参数必须在默认参数之前
def square(x):
    return x * x
print(square(10))

def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
print(power(10, 2))
print(power(x=10, n=2))
print(power(10, n=2))
print(power(x=10, 2)) # SyntaxError: positional argument follows keyword argument

2. 默认参数

  • 定义函数时带有默认值:参数=默认值。如果调用时没有值传递给默认参数,那么参数将取默认值
  • 位置参数必须在默认参数之前
  • 可以不按顺序提供默认参数。当不按顺序提供部分默认参数时,需要把参数名写上
  • 使用默认参数有什么好处?最大的好处是能降低调用函数的难度
  • 定义默认参数要牢记一点:默认参数必须指向不变对象,因为Python调用函数传递引用!
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

print(power(5))
print(power(5, 2))
print(power(5, 3))

3. 可变参数

  • 顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
  • 由于函数调用提供了关键字以及非关键字两种参数类型,Python用两种方法来支持变长参数。一种是指定元组作为可变参数,另一种是指定字典作为关键字参数。
# 由于参数个数不确定,我们首先想到可以传入一个list或tuple
def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
print(calc([1, 3, 5, 7, 9]))
print(calc((1, 3, 5, 7, 9)))

# 利用可变参数,稍微修改定义函数的方式,简化后续调用
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
print(calc(1, 3, 5, 7, 9)
nums = [1, 3, 5, 7, 9]
print(calc(*nums)) # *nums表示把nums这个list的所有元素作为可变参数传进去。 

4. 关键字参数

如果有不定数目的或者额外集合的关键字,参数被放入一个字典中:键为参数名,值为相应的参数值。

def showInfo(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

showInfo('Bob', 35, city='Beijing')
showInfo('Adam', 45, gender='M', job='Engineer')
extra = {'city': 'Beijing', 'job': 'Engineer'}
showInfo('Jack', 24, **extra)

5. 命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。这种方式定义的函数如下

# 1.命名关键字参数需要一个特殊分隔符*
def showInfo(name, age, *, city, job): 
    print(name, age, city, job)

# 2.如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了
def showInfo(name, age, *args, city, job):
    print(name, age, args, city, job)

# 3.如果没有可变参数,就必须加一个*作为特殊分隔符。如果缺少*,命名关键字参数就变成位置参数了
def showInfo(name, age, city, job): 
    print(name, age, city, job)

6.参数组合

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

对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值