Python学习:定义函数的默认参数和可变参数
一、默认参数
定义函数的时候,还可以有默认参数。
例如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学习:定义函数的默认参数和可变参数相关推荐
- python可变参数和关键字参数位置_python笔记——函数的参数(位置参数、默认参数、可变参数、关键字参数、命名关键字参数、参数组合)...
定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...
- python 关键字参数为什么只能出现在最后_Python笔记2——默认参数,可变参数,关键字参数,参数组合...
1.借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题;写计算机程序也是一样,函数就是最基本的一种代码抽象的方式 2.abs()求绝对值的函数 3.cmp()比较两个值大小的函数 ...
- python学习笔记---函数【廖雪峰】
函数 调用函数 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个"别名": >>> a = abs # 变量a指向ab ...
- Java可变参数 Python可变参数 Scala可变参数
Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...
- python函数做n_【python】定义函数、参数、递归(n!)
函数### 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个"别名": >>> a = abs # 变量a指向abs函 ...
- python函数参数之必选参数,默认参数,可变参数,关键字参数
Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数, 1 默认参数 定义形式:def calc(para1,para2=None):其 ...
- Python中定义函数的关键字是什么?一起来学习下吧
python中定义函数的关键字是def. Python使用def关键字开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值, 在expressions ...
- Python的位置参数、默认参数、关键字参数、可变参数之间的区别
1. 位置参数 调用函数时需根据定义的参数位置来传参 def print_hello(name, sex):print('hello %s %s, welcome to python world!' ...
- python中def fun(a、b=200)_python中的函数的参数和可变参数
最近在搞python的过程中需要用到给函数传可变参数..所以去网上找前人的帖子学习了一下 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函 ...
最新文章
- 标准的JS里,eval和window.eval属于不同的语法!
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolution model - Application
- wxWidgets:在 Unix (GTK+) 下打印
- GDCM:CryptographicMessageSyntax的测试程序
- .NET Core开发日志——RequestDelegate
- 【51单片机快速入门指南】9:省电模式(低功耗)
- MYSQL 时间处理
- sis地址获取器_TencentOS tiny深度源码分析(2)—— 调度器
- javascript笔记---貌似大叔
- Vmware 15 安装 win7 虚拟机 (初学者操作与详解教程)
- 数据结构--图 记事本
- matlab视频分辨率更改
- modelica语言学习心得
- 身边的逻辑学——简单的真理不简单(2) 无论如何,清晰思考利多于弊
- Unity 【Content Size Fitter】- 聊天气泡自动适配Text文本框大小
- UBuntu18.04 Qt之双HDMI接2个4K屏并分别设置分辨率、主屏、副屏
- [OpenGL] 小游戏 - 太空对战
- windows下面重置U盘
- 侯捷C++课程笔记02: 面向对象高级编程(下)
- zabbix使用163邮箱实现监控报警(六)