一、默认参数

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

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

>>> int('123')
123
>>> int('123', 8)
83

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

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

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

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

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

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

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

>>> power(5)
25

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

# OK:
def fn1(a, b=1, c=2):pass
# Error:
def fn2(a=1, b):pass

二、可变参数

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

def fn(*args):print (args)

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

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> fn()
()
>>> fn('a')
('a',)
>>> fn('a', 'b')
('a', 'b')
>>> fn('a', 'b', 'c')
('a', 'b', 'c')

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

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

def average(*args):sum = 0.0if len(args) == 0:return sumfor x in args:sum = sum + xreturn sum / len(args)

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

>>> average()
0
>>> average(1, 2)
1.5
>>> average(1, 2, 2, 3, 4)
2.4

Python学习:定义函数的默认参数和可变参数相关推荐

  1. python可变参数和关键字参数位置_python笔记——函数的参数(位置参数、默认参数、可变参数、关键字参数、命名关键字参数、参数组合)...

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...

  2. python 关键字参数为什么只能出现在最后_Python笔记2——默认参数,可变参数,关键字参数,参数组合...

    1.借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题;写计算机程序也是一样,函数就是最基本的一种代码抽象的方式 2.abs()求绝对值的函数 3.cmp()比较两个值大小的函数 ...

  3. python学习笔记---函数【廖雪峰】

    函数 调用函数 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个"别名": >>> a = abs # 变量a指向ab ...

  4. Java可变参数 Python可变参数 Scala可变参数

    Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...

  5. python函数做n_【python】定义函数、参数、递归(n!)

    函数### 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个"别名": >>> a = abs # 变量a指向abs函 ...

  6. python函数参数之必选参数,默认参数,可变参数,关键字参数

    Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数, 1 默认参数 定义形式:def calc(para1,para2=None):其 ...

  7. Python中定义函数的关键字是什么?一起来学习下吧

    python中定义函数的关键字是def. Python使用def关键字开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值, 在expressions ...

  8. Python的位置参数、默认参数、关键字参数、可变参数之间的区别

    1. 位置参数 调用函数时需根据定义的参数位置来传参 def print_hello(name, sex):print('hello %s %s, welcome to python world!' ...

  9. python中def fun(a、b=200)_python中的函数的参数和可变参数

    最近在搞python的过程中需要用到给函数传可变参数..所以去网上找前人的帖子学习了一下 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函 ...

最新文章

  1. 标准的JS里,eval和window.eval属于不同的语法!
  2. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolution model - Application
  3. wxWidgets:在 Unix (GTK+) 下打印
  4. GDCM:CryptographicMessageSyntax的测试程序
  5. .NET Core开发日志——RequestDelegate
  6. 【51单片机快速入门指南】9:省电模式(低功耗)
  7. MYSQL 时间处理
  8. sis地址获取器_TencentOS tiny深度源码分析(2)—— 调度器
  9. javascript笔记---貌似大叔
  10. Vmware 15 安装 win7 虚拟机 (初学者操作与详解教程)
  11. 数据结构--图 记事本
  12. matlab视频分辨率更改
  13. modelica语言学习心得
  14. 身边的逻辑学——简单的真理不简单(2) 无论如何,清晰思考利多于弊
  15. Unity 【Content Size Fitter】- 聊天气泡自动适配Text文本框大小
  16. UBuntu18.04 Qt之双HDMI接2个4K屏并分别设置分辨率、主屏、副屏
  17. [OpenGL] 小游戏 - 太空对战
  18. windows下面重置U盘
  19. 侯捷C++课程笔记02: 面向对象高级编程(下)
  20. zabbix使用163邮箱实现监控报警(六)

热门文章

  1. vc 预定义 STRICT用法(转)
  2. python列表去重去空_Python 列表去重去除空字符的例子
  3. 单片机怎么和手机通信,你知道吗?
  4. 订单生产线分配以及拆分逻辑实现
  5. 一个进程能用的最大内存(堆区)空间大小为1G
  6. SQL主键外键!!!
  7. JavaScript-模块化开发(一)基础知识
  8. Linux 清理缓存和缓存内容
  9. Jdbc工具类的打包(包含jar包分享)
  10. python中mod函数用法_Python 函数的介绍和用法