python 函数形参

  • 位置参数
    必须按照准确顺序将函数调用中的实参传递给函数定义中相应的形参。
def user(name, age):
	print("{} is {} years old".format(name,age)) # format()方法是寻找字符串中{}标识,然后把参数依次赋值给字符串中

user("Tom", 10)
user(10, "Tom")

# 输出
Tom is 10 years old
10 is Tom years old
  • 关键字参数
    仅针对函数的调用,通过"参数名=参数值"的方式,可以直接在实参中将名称和值关联起来。这样就不需要根据形参名字来区分参数了,即使不按照顺序,解释器也可以通过给出的关键字来匹配参数的值。

🌰1:单个关键字参数

def user(name, age):
	print("{} is {} years old".format(name, age))

user("Tom", 10)
user(age=10, name="Tom") # 即使实参的位置不是按照形参位置,也能匹配到相对应参数的值。

# 输出:
Tom is 10 years old
Tom is 10 years old

🌰2:可变长度关键字参数,即字典参数。可以传递多个关键字参数

1、如何使用:在定义函数的形参中,使用带有两个星号的形参,此时在调用函数时就可以传递多个关键字参数,这些关键字参数都会传递给带有两个星号的形参中
2、使用场景:在预先不知道传递给函数的会是什么信息的情况下

def users(f_name, l_name, **user_info):
	print("first name: " + f_name)
	print("last name: " + l_name)
	for arg_name, arg_value in user_info.items():
		print("{}:{}".format(arg_name, arg_value))

users("tom", "leaf", location="here", height=150, length=80 )

# 输出
first name: tom
last name: leaf
location:here
height:150
length:80
  • 默认参数
    编写函数时形参指定了默认值的参数,在调用函数中给形参提供了实参时,优先使用调用函数时提供的实参,如果调用函数时没有提供实参值,使用函数定义中的默认值

Tip:关键字参数必须放在所有位置参数的右边。如果放在左边,调用函数时传递的实参会默认从左往右进行关联,很有可能用户这个实参是传递给位置参数的,但是却被左边的关键字参数拦截接收,那么关键字参数右边的位置参数就没有实参传递。此时就会报错。

def user(name, age=12):
	print("{} is {} years old".format(name, age))

user("Tom", 10) # age参数传递了实参值,那么优先使用传递的实参值
user("Tom")
user(name="Tom")
user(age=10, name="Tom") # 两个参数都是关键字参数,那么参数位置颠倒也可以正确匹配到

# 输出:
Tom is 10 years old
Tom is 12 years old
Tom is 12 years old
Tom is 10 years old
  • 非关键字可变长参数(元组)

1、如何使用:在定义函数的形参中,使用带有一个星号的形参,此时在调用函数时就可以传递多个参数,这些参数都会被封装到一个元组中,传递给函数定义中这个带有一个星号的形参
2、使用场景:在预先不知道传递给函数的会是什么信息的情况下

def users(*names):
	print(str(names))
	for name in names:
		print(name)

users("tech")
users("tom", "test", "amy")

# 输出
tech
tach

('tom','tets','amy')
tom
test
amy

Tip:如果要让函数接受不同类型的实参,就必须在函数定义中将接纳任意数量实参的形参放在最后,这样Python会先匹配位置实参和关键字实参,最后再将余下的实参都收集到最后一个元组实参中。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值