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

打印 上一主题 下一主题

主题 1590|帖子 1590|积分 4770

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、默认参数

定义函数的时候,还可以有默认参数。
例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数:
  1. >>> int('123')
  2. 123
  3. >>> int('123', 8)
  4. 83
复制代码
int()函数的第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数。
可见,函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。
我们来定义一个计算 x 的N次方的函数:
  1. def power(x, n):
  2.     s = 1
  3.     while n > 0:
  4.         n = n - 1
  5.         s = s * x
  6.     return s
复制代码
假设计算平方的次数最多,我们就可以把 n 的默认值设定为 2:
  1. def power(x, n=2):
  2.     s = 1
  3.     while n > 0:
  4.         n = n - 1
  5.         s = s * x
  6.     return s
复制代码
这样一来,计算平方就不需要传入两个参数了:
  1. >>> power(5)
  2. 25
复制代码
由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:
  1. # OK:
  2. def fn1(a, b=1, c=2):
  3.     pass
  4. # Error:
  5. def fn2(a=1, b):
  6.     pass
复制代码
二、可变参数

如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:
  1. def fn(*args):
  2.     print (args)
复制代码
可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:
  1. '''
  2. 学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
  3. 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
  4. '''
  5. >>> fn()
  6. ()
  7. >>> fn('a')
  8. ('a',)
  9. >>> fn('a', 'b')
  10. ('a', 'b')
  11. >>> fn('a', 'b', 'c')
  12. ('a', 'b', 'c')
复制代码
可变参数也不是很神秘,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。
定义可变参数的目的也是为了简化调用。假设我们要计算任意个数的平均值,就可以定义一个可变参数:
  1. def average(*args):
  2.     sum = 0.0
  3.     if len(args) == 0:
  4.         return sum
  5.     for x in args:
  6.         sum = sum + x
  7.     return sum / len(args)
复制代码
这样,在调用的时候,可以这样写:
  1. >>> average()
  2. 0
  3. >>> average(1, 2)
  4. 1.5
  5. >>> average(1, 2, 2, 3, 4)
  6. 2.4
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表