Python编程:从入门到实践第八章读书笔记8.2
#8.2.1位置实参
#pets.py
def describe_pet(animal_type,pet_name):
"""显示宠物的信息"""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet('hamster','harry') #要按顺序提供形参的实参
##1.调用函数多次
def describe_pet(animal_type,pet_name):
"""显示宠物信息"""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet('hamster','harry')
describe_pet('dog','willie')
##2.位置实参的顺序很重要
describe_pet('harry','hamster')
#8.2.2关键字实参
#关键字实参是传递给函数的名称-值对。你直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆
#关键字实参让你无需考虑函数调用中的实参顺序,还清楚的指出了函数调用中各个值的用途
describe_pet(animal_type = 'hamster',pet_name = 'harry')
describe_pet(pet_name = 'harry',animal_type = 'hamster') #关键字实参无关顺序
#注意:使用关键词实参时,务必准确地指定函数定义中的形参名
#8.2.3默认值
def describe_pet(pet_name,animal_type='dog'): #给形参指定默认值;在调用函数中给形参提供了实参时,Python将使用指定的是数值;否则,将使用形参的默认值。
#因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可以清除指出函数的用法
"""显示宠物的信息"""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(pet_name = 'willie')
describe_pet('willie') #如果函数调用中只包含宠物的名字,这个实参将关联到函数定义中的第一个实参
describe_pet(pet_name = 'harry',animal_type = 'hamster')
#注意:在在使用默认值时,在形参列表中必须先列出没有默认值的形参,才列出有默认值的形参。这让Python依然能够正确地解读位置实参
#8.2.4等效的函数调用
def describe_pet(pet_name,animal_type='dog'):
"""显示宠物的信息"""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
#一条名为willie的小狗
describe_pet('willie')
describe_pet(pet_name = 'willie')
#一只名为harry的仓鼠
describe_pet('harry','hamster')
describe_pet(pet_name = 'harry', animal_type = 'hamster')
describe_pet(animal_type='hamster',pet_name='harry')
#注意:使用哪种调用方式无关紧要,只要函数调用能生成你希望的输出就行。使用对你来说容易理解的调用方式即可。
#8.2.5避免实参错误
def describe_pet(pet_name,animal_type):
"""显示宠物的信息"""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet()
#Python读取函数的代码,并指出我们需要为哪些形参提供实参,这提供了极大的帮助。这也是应该给变量和函数指定描述性名称的原因