# 一、函数的参数分为两大类"
# 1、形参:在定义函数时,括号内定义的变量名,称之为形式参数,简称形参=》变量名
def func(x, y):
print(x,y)
# 2、实参:在调用函数时,括号内传入的值,称之为实际参数,简称实参=》变量值
func(1,2)
# 二:在python中参数的种类
# 1、位置参数:
# (1)位置形参:在函数定义阶段,按照从左到右的顺序,依次定义形参(变量名),称之为位置形参
# 特点:必须被传值
def func(x, y):
print(x,y)
func(1,2) # func(1)少一个位置形参 func(1,2,3)多了位置形参
# (2)位置实参:在函数调用阶段,按照从左到右的顺序,依次定义实参(传入的变量值),称之为位置实参
# 特点:按照位置,一一对应
# func(1,2,3,4,5,6)
# 2、关键字实参:咱函数调用阶段,按照key= value的形式的形参名传值,该形式称之为关键字实参
# 特点:在传值时可以完全打乱顺序,但时仍能够指名道姓地为指定的形参传值
def func(name, age):
print(f'name is {name}, age is {age}')
func(age = 18, name = 'egon')
# 注意:可以混用位置实参与关键字实参,但是
# 1)位置实参必须放在关键字实参的前面
def func(name, age, salary):
print(name)
print(age)
print(salary)
func('egon', salary=100, age = 18)
func('egon', 18, salary=100)
# func('egon', salary=100, 18) # SyntaxError: positional argument follows keyword argument
# 2)不能为同一个形参重复赋值
# func('egon', 18, age=18, salary=100) # TypeError: func() got multiple values for argument 'age'
# 3.默认形参:在函数定义阶段已经为某个形参赋值,该形参称之为有默认值的形参,简称默认形参
# 特点:定义阶段就已经被赋值意味着在函数的调用阶段可以不用为其赋值
def func(x, y =2):
print(x, y)
func(1)
# 注意:
# 1)默认形参应该跟在位置形参的后面
# def func(y =2, x): # SyntaxError: non-default argument follows default argument
# pass
# 2)默认形参的值通常应该是不可变类型
l = []
def func(name, hobby,hobbies = l):
hobbies.append(hobby)
print(f"{name}'s hoobies is {hobbies}")
func('jack','play')
func('mac', 'music')
func('egon', 'read')
# 改进:
def func(name, hobby,hobbies = None):
if hobbies is None:
hobbies = []
hobbies.append(hobby)
print(f"{name}'s hoobies is {hobbies}")
func('jack','play')
func('mac', 'music')
func('egon', 'read')
# 3)默认形参的值只在函数定义阶段被赋值依次,函数定义之后的改变对默认形参没有影响
m = 333
def func(x, y = m): # y指向值333的地址
print(x, y)
m = 1111 # m指向新的地址,但不影响y指向的地址
func('xxx')
22函数的参数
最新推荐文章于 2024-10-28 11:00:05 发布