Python基础之函数的参数

Python基础之函数的参数

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、
可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代
码。

1、 位置参数

我们先写一个计算 x^2 的函数:

def power(x):
    return x * x

对于 power(x) 函数,参数x就是一个位置参数。
当我们调用 power 函数时,必须传入有且仅有的一个参数x:

>>> power(5)
25
>>> power(15)
225

现在,如果我们要计算 x^3 怎么办?可以再定义一个 power3 函数,但是如果要计算 x^4 、 x^5 ……
怎么办?我们不可能定义无限多个函数。
你也许想到了,可以把 power(x) 修改为 power(x, n) ,用来计算 x^n ,说干就干:

def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

对于这个修改后的 power(x, n) 函数,可以计算任意n次方:

>>> power(5, 2)
25
>>> power(5, 3)
125

修改后的 power(x, n) 函数有两个参数:x和n,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数 x 和 n 。
2. 默认参数
新的 power(x, n) 函数定义没有问题,但是,旧的调用代码失败了,原因是我们增加了一个参数,导致旧的代码因为缺少一个参数而无法正常调用:

>>> power(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: power() missing 1 required positional argument: 'n'

Python的错误信息很明确:调用函数 power() 缺少了一个位置参数 n 。
这个时候,默认参数就排上用场了。由于我们经常计算 x^2 ,所以,完全可以把第二个参数 n 的默认值设定为2:

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

这样,当我们调用 power(5) 时,相当于调用 power(5, 2) :

>>> power(5)
25
>>> power(5, 2)
25

而对于 n > 2 的其他情况,就必须明确地传入 n ,比如 power(5, 3) 。
从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:
一是必选参数在前,默认参数在后,否则Python的解释器会报错;
二是当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作
为默认参数。
3. 使用默认参数有什么好处?
举个例子,我们写个一年级小学生注册的函数,需要传入 name 和 gender 两个参数:

def enroll(name, gender):
    print('name:', name)
    print('gender:', gender)

这样,调用 enroll() 函数只需要传入两个参数:

>>> enroll('Sarah', 'F')
name: Sarah
gender: F

如果要继续传入年龄、城市等信息怎么办?这样会使得调用函数的复杂度大大增加。
我们可以把年龄和城市设为默认参数:

def enroll(name, gender, age=6, city='Beijing'):
    print('name:', name)
    print('gender:', gender)
    print('age:', age)
    print(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值