Python 学习笔记03【函数的参数】
作者:互联网
函数参数分类,如下:
- 位置参数
- 默认参数
- 可变参数
- 关键字参数
- 组合参数
- 位置参数:x、n 为位置参数
def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x return s
- 默认参数:n为默认参数,调用时,默认参数可以不用传
- 默认参数,可以降低函数调用难度,非必须参数可以不传
- 默认参数必须传入不可变对象,否则多次调用会有问题(参见 https://www.liaoxuefeng.com/wiki/1016959663602400/1017261630425888)
def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s<style></style>
>>> power(5,3)
125
power(5) 相当于 power(5,2)
<style></style>>>> power(5)
25
- 可变参数
- 可变参数就是传入的参数个数是可变的,0个或任意多个
- 在函数内部,参数numbers收到的是一个tuple
- 可变参数定义 *args
def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum<style></style>
>>> calc(1,2)
5
>>> calc(1,2,3)
14
将现有的tuple或list当做可变参数传入函数:只需要在tuple或list前加上 * 即可
<style></style> <style></style>>>> list_1 = [1,2,3]
>>> calc(*list_1)
14
>>> tuple_1 = (1,2,3)
>>> calc(*tuple_1)
14
- 关键字参数
- 允许传入0个或多个 含有参数名称参数
- 关键字参数在函数内部被封装成一个dict
- 关键字参数的定义 **kw
- 关键字参数的参数名称不受限制,可以任意定义
>>> def person(name,age,**kw):
... print('name:',name,'age:',age,'other:',kw)
<style></style>### 函数调用
>>> person('花花',1.7)# 无关键字参数
name: 花花 age: 1.7 other: {}
>>> person('花花',1.7,city='杭州')#有一个关键字参数
name: 花花 age: 1.7 other: {'city': '杭州'}
>>> person('花花',1.7,city='杭州',gender='男')#两个关键字参数
name: 花花 age: 1.7 other: {'city': '杭州', 'gender': '男'}
<style></style>>>> extra = {'city':'杭州','gender':'公'}
>>> person('花花',1.7,**extra)#将预先定义好的dict当做关键字参数传到函数中
name: 花花 age: 1.7 other: {'city': '杭州', 'gender': '公'}
- 命名关键字参数:限制关键字参数的名称
- 参数中没有可变参数:
*
后面的参数被视为命名关键字参数
# 命名关键字参数的定义
>>> def person(name, age, *, city, job):
... print(name, age, city, job, sep=',')
#命名关键字参数的调用
>>> person('花花',1.7,city='杭州',job='play')
花花,1.7,杭州,play
-
- 参数中 有 可变参数:可变参数后面的参数被视为命名关键字参数
>>> def person(name, age, *args, city, job):
... print(name, age, args, city, job, sep=',')
>>> person('花花',1.7,city='hangzhou',job='play')
花花,1.7,(),hangzhou,play
>>> person('花花',1.7,'花花 is lovely',city='hangzhou',job='play')
花花,1.7,('花花 is lovely',),hangzhou,play
- 组合参数【未完待续】
<style></style>
标签:花花,03,1.7,name,city,Python,笔记,关键字,参数 来源: https://www.cnblogs.com/wooluwalker/p/12240992.html