Python工程师之Python编程:从入门到实践【2.4】

8.2.2 关键字实参

关键字实参 是传递给函数的名称值对。因为直接在实参中将名称和值关联起来,所
以向函数传递实参时不会混淆(不会得到名为Hamster的harry这样的结果)。关键
字实参让你无须考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的
用途。
下面来重新编写pets.py,在其中使用关键字实参来调用describe_pet() :
def describe_pet(animal_type, pet_name):
"""显示宠物的信息。"""
print(f"\nI have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet(animal_type='hamster', pet_name='harry')
函数describe_pet() 还和之前一样,但调用这个函数时,向Python明确地指出
了各个实参对应的形参。看到这个函数调用时,Python知道应该将实参'hamster'
和'harry' 分别赋给形参animal_type 和pet_name 。输出正确无误,指出有
一只名为Harry的仓鼠。
关键字实参的顺序无关紧要,因为Python知道各个值该赋给哪个形参。下面两个函
数调用是等效的:
describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='harry', animal_type='hamster')
注意  使用关键字实参时,务必准确指定函数定义中的形参名。

8.2.3 默认值

编写函数时,可给每个形参指定默认值 。在调用函数中给形参提供了实参时,
Python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认
值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地
指出函数的典型用法。
例如,如果你发现调用describe_pet() 时,描述的大多是小狗,就可将形参
animal_type 的默认值设置为'dog' 。这样,调用describe_pet() 来描述小
狗时,就可不提供这种信息:
def describe_pet(pet_name, animal_type='dog'):
"""显示宠物的信息。"""
print(f"\nI have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet(pet_name='willie')
这里修改了函数describe_pet() 的定义,在其中给形参animal_type 指定了
默认值'dog' 。这样,调用这个函数时,如果没有给animal_type 指定值,
Python就将把这个形参设置为'dog' :
I have a dog.
My dog's name is Willie.
请注意,在这个函数的定义中,修改了形参的排列顺序。因为给animal_type 指
定了默认值,无须通过实参来指定动物类型,所以在函数调用中只包含一个实参
——宠物的名字。然而,Python依然将这个实参视为位置实参,因此如果函数调用
中只包含宠物的名字,这个实参将关联到函数定义中的第一个形参。这就是需要将
pet_name 放在形参列表开头的原因。
现在,使用这个函数的最简单方式是在函数调用中只提供小狗的名字:
describe_pet('willie')
这个函数调用的输出与前一个示例相同。只提供了一个实参'willie' ,这个实参
将关联到函数定义中的第一个形参pet_name 。由于没有给animal_type 提供实
参,Python将使用默认值'dog' 。
如果要描述的动物不是小狗,可使用类似于下面的函数调用:
describe_pet(pet_name='harry', animal_type='hamste

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值