22函数的参数

# 一、函数的参数分为两大类"
# 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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值