defdescribe_pet(animal_type, pet_name):""""显示宠物的信息"""print(f"\nI have a {animal_type}.")print(f"My {animal_type}'s name is {pet_name}.")
describe_pet('dog','wangcai')
describe_pet('dog','dahuang')
8.2.2 关键字实参
defdescribe_pet(animal_type, pet_name):""""显示宠物的信息"""print(f"\nI have a {animal_type}.")print(f"My {animal_type}'s name is {pet_name}.")
describe_pet(animal_type='hamster', pet_name='harry')
关键字实参是指我们在定义实参时顺便将实参的值赋给了形参,无需考虑顺序,因为是有对应关系的。
8.2.3 默认值
defdescribe_pet(pet_name, animal_type='dog'):""""显示宠物的信息"""print(f"\nI have a {animal_type}.")print(f"My {animal_type}'s name is {pet_name}.")
describe_pet(pet_name='wangcai')
defdescribe_pet(pet_name, animal_type='dog'):""""显示宠物的信息"""print(f"\nI have a {animal_type}.")print(f"My {animal_type}'s name is {pet_name}.")
describe_pet('willie')
describe_pet(pet_name='wille')
describe_pet('MiMi','cat')
defbuild_person(first_name, last_name, age=None):
person ={'first': first_name,'last': last_name}if age:
person['age']= age
return person
musician = build_person('jimi','hendrix',27)print(musician)
musician = build_person('jimi','hendrix', age=27)print(musician)
musician = build_person('jimi','hendrix',)print(musician)
函数定义中的None等价于空字符串
8.3.4 结合while循环和函数
defget_formatted_name(first_name, last_name):"""返回全名"""
full_name =f"{first_name}{last_name}"return full_name.title()whileTrue:print("\nPlease tell me your name:")print("(enter 'q' at any time to quit)")
f_name =input("First name:")if f_name =='q':break
l_name =input("Last name:")if l_name =='q':break
formatted_name = get_formatted_name(f_name, l_name)print(f"\nHello, {formatted_name}!")
8.4 传递列表
defgreet_users(names):"""向列表中的每位用户发出简单的问候"""for name in names:
msg =f"Hello, {name.title()}!"print(f"\n{msg}")
8.4.1 在函数中修改列表
函数对列表所做的任何修改都是永久性的
unprinted_designs =['phone case','robot pendant','dodecahedron']
completed_models =[]while unprinted_designs:
current_design = unprinted_designs.pop()print(f"\nPrinting model: {current_design}")
completed_models.append(current_design)print("\nThe following models have been printed:")for completed_models in completed_models:print(completed_models)defprint_models(unprinted_designs, completed_models):while unprinted_designs:
current_design = unprinted_designs.pop()print(f"Printing model:{current_design}")
completed_models.append(current_design)defshow_completed_models(completed_models):print("\nThe following models have been printed:")for completed_model in completed_models:print(completed_model)
unprinted_designs =['phone case','robot pendant','dodecahedron']
completed_models =[]
print_models(unprinted_designs[:], completed_models)
show_completed_models(completed_models)
defmake_pizza(*toppings):"""打印顾客点的所有配料"""print("\nMaking a pizza with the following toppings:")for topping in toppings:print(f"-{topping}")
make_pizza('mushrooms','green peppers','extra cheese')
defmake_pizza(size,*toppings):"""打印顾客点的所有配料"""print(f"\nMaking a {size} pizza with the following toppings:")for topping in toppings:print(f"-{topping}")
make_pizza(16,'mushrooms','green peppers','extra cheese')