前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python学习:定义函数的默认参数和可变参数

Python学习:定义函数的默认参数和可变参数

原创
作者头像
Python学习者
发布2022-10-15 16:14:56
1.7K0
发布2022-10-15 16:14:56
举报
文章被收录于专栏:Python学习者

一、默认参数

定义函数的时候,还可以有默认参数。

例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数:

代码语言:python
代码运行次数:0
复制
>>> int('123')
123
>>> int('123', 8)
83

int()函数的第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数。

可见,函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。

我们来定义一个计算 x 的N次方的函数:

代码语言:python
代码运行次数:0
复制
def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

假设计算平方的次数最多,我们就可以把 n 的默认值设定为 2:

代码语言:python
代码运行次数:0
复制
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

这样一来,计算平方就不需要传入两个参数了:

代码语言:python
代码运行次数:0
复制
>>> power(5)
25

由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:

代码语言:python
代码运行次数:0
复制
# OK:
def fn1(a, b=1, c=2):
    pass
# Error:
def fn2(a=1, b):
    pass

二、可变参数

如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:

代码语言:python
代码运行次数:0
复制
def fn(*args):
    print (args)

可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:

代码语言:python
代码运行次数:0
复制
#Python学习交流群:711312441
>>> fn()
()
>>> fn('a')
('a',)
>>> fn('a', 'b')
('a', 'b')
>>> fn('a', 'b', 'c')
('a', 'b', 'c')

可变参数也不是很神秘,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

定义可变参数的目的也是为了简化调用。假设我们要计算任意个数的平均值,就可以定义一个可变参数:

代码语言:python
代码运行次数:0
复制
def average(*args):
    sum = 0.0
    if len(args) == 0:
        return sum
    for x in args:
        sum = sum + x
    return sum / len(args)

这样,在调用的时候,可以这样写:

代码语言:python
代码运行次数:0
复制
>>> average()
0
>>> average(1, 2)
1.5
>>> average(1, 2, 2, 3, 4)
2.4

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、默认参数
  • 二、可变参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档