8.1:定义函数
打印问候语简单函数,名为greet_user ():
# def:函数定义
def greet_user():
# 文档字符串的注释,藐视函数是做什么的
"""显示简单的问候语"""
# 打印Hello
print("Hello!")
# 调用函数定义
greet_user()
运行结果:
Hello!
8.1.1: 向函数传递信息
让函数greet_user() 不仅向用户显示Hello!,还将用户的名字作为抬头。在函数定义def greet_user ()的括号内添加username。 通过添加username,让函数接受你给username指定的任何值。
def greet_user(username):
"""显示简单的问候语"""
print(f"Hello, {username.title()}!")
# 代码greet_user('jesse') 调用函数greet_user(),并向它提供执行函数调用print()所需的信息
greet_user('jesse')
8.1.2:实参和形参
在函数greet_user () 定义中,变量username是一个形参(parameter),即函数完成工作所需的信息。在代码greet_user('jesse')中,值'jesse'是一个实参(argument),即调用函数时传递给函数的信息。
8.2:传递实参
函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。(实参的顺序与形参的顺序相同)
8.2.1: 位置实参
例子:指出一个宠物属于哪种动物以及它叫什么名字:
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('hamster', 'harry')
a. 多次调用函数:
可根据需要调用函数任意次。要再描述一个宠物,只需要再次调用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('hamster', 'harry')
describe_pet('dog', 'willie')
b . 为止实参的顺序很重要:
使用位置实参来调用函数时,如果实参的顺序不正确,结果可能出乎意料。
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('harry', 'hamster')
8.2.2: 关键字实参
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')
使用关键字实参时,务必准确指定函数定义中的形参名
8.2.3: 默认值
编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,python将使用指定的实参值;否则,将使用形参的默认值。
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')
8.2.4 等效的函数调用
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('willie')
describe_pet(pet_name='willie')
describe_pet('harry', 'hamster')
describe_pet(pet_name='harry',