一、位置参数:按照从左到右的顺序依次定义的参数称之为位置参数
-
位置形参:在函数定义阶段,按照从左到右的顺序直接定义的‘变量名’
特点:必须被传值,多一个不行少一个也不行 -
位置实参:在函数调用阶段, 按照从左到右的顺序依次传入的值

二、关键字参数 -
默认参数(默认形参):在定义函数阶段,就已经被赋值的形参,称之为默认参数
特点:在定义阶段就已经被赋值,意味着在调用阶段可以不用为其赋值

-
关键字实参:在函数调用阶段,按照key=value的形式传入的值
特点:指名道姓给某个形参传值,可以完全不参照顺序

三、位置形参与默认参数(默认形参)混用
-
位置形参必须在默认形参的左边

-
默认参数的值是在函数定义阶段被赋值的,准确地说被赋予的是值的内存地址
示例1:
a = 7
def func(x, b=a):b=>7的内存地址
print(x, b)
a = 8
func(1)
结果:
1 7
示例2:
a = [1, 3]
def func(x, y=a): # y=>[1,]的内存地址
print(x, y)
a.append(9)
func(2)
结果:
2 [1, 3, 9]
- 默认值可以被指定为任意数据类型,但是最好不要使用可变类型,函数最理想的状态:函数的调用只跟函数本身有关系,不受外界代码的影响
a = [1, 2, 3]
def func(x, y=a):
print(x, y)
a.append(4)
a.append(5)
a.append(6)
func(11)
func(22)
func(33)
def func(x, y, z, l=None):
if l is None:
l = []
l.append(x)
l.append(y)
l.append(z)
print(l)
func(1, 2, 3)
func(11, 22, 33)
list_1 = [111, 222]
func(1, 2, 3, list_1)
结果:
[1, 2, 3]
[11, 22, 33]
[111, 222, 1, 2, 3]
博客介绍了Python函数的参数类型。包括位置参数,其形参在定义阶段按顺序定义,实参调用时按顺序传值,必须传值;关键字参数,默认形参定义时已赋值,调用可不传,关键字实参按key=value传值,不按顺序。还提及位置形参与默认形参混用规则。
622

被折叠的 条评论
为什么被折叠?



