趋近智
if 语句for 循环with 自动关闭文件from ... importself 参数说明finally 块:清理操作使用 def 关键字定义基本函数可以打包代码。但当你能向函数传递信息时,它们会变得非常实用。想象一个问候用户的函数;它需要知道用户的名字。或者一个将两个数字相加的函数;它需要知道要加哪两个数字。这就是参数和实参的作用。
让我们来看一个简单示例:
# 定义一个带有一个名为 'user_name' 的参数的函数
def greet(user_name):
"""打印一个简单的问候语。"""
print(f"Hello, {user_name}!")
# 调用函数,传入实参 "Alice"
greet("Alice")
# 再次调用函数,传入不同的实参
greet("Bob")
在这段代码中:
def greet(user_name): 中的 user_name 是参数。它是函数内部的一个占位符,代表我们想要问候的名字。"Alice" 和 "Bob" 是实参。它们是我们在调用 greet 函数时提供的具体值。当 greet("Alice") 运行时,值 "Alice" 会被赋值给函数内部的 user_name 参数。函数可以接受多个参数,在定义时用逗号分隔。调用函数时,你按照相同的顺序提供对应的实参。这被称为使用位置实参,因为实参的位置决定了哪个参数会接收哪个实参。
def describe_pet(animal_type, pet_name):
"""显示宠物的信息。"""
print(f"I have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name}.")
# 使用位置实参调用
describe_pet("hamster", "Harry")
print("---") # 仅用于分隔输出
describe_pet("dog", "Willie")
输出:
I have a hamster.
My hamster's name is Harry.
---
I have a dog.
My dog's name is Willie.
在这里,首次调用 describe_pet("hamster", "Harry") 时:
"hamster"(第一个实参)被赋值给 animal_type(第一个参数)。"Harry"(第二个实参)被赋值给 pet_name(第二个参数)。顺序很重要。如果你调用 describe_pet("Max", "cat"),输出将不正确,因为 "Max" 会被赋值给 animal_type,而 "cat" 会被赋值给 pet_name。
位置实参到参数的对应关系。第一个实参对应第一个参数,第二个实参对应第二个参数,依此类推。
Python 也支持使用关键字实参。这需要指定参数名,后跟等号(=)和你想要传递的值。
def describe_pet(animal_type, pet_name):
"""显示宠物的信息。"""
print(f"I have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name}.")
# 使用关键字实参调用
describe_pet(animal_type="hamster", pet_name="Harry")
print("---")
# 关键字实参的顺序不重要
describe_pet(pet_name="Willie", animal_type="dog")
输出:
I have a hamster.
My hamster's name is Harry.
---
I have a dog.
My dog's name is Willie.
使用关键字实参时:
pet_name="Willie")。关键字实参到参数的对应关系。实参根据指定的名称与参数匹配,无论顺序如何。
调用函数时,你可以混合使用位置实参和关键字实参。但有一个规则:位置实参必须在关键字实参之前。
def describe_pet(animal_type, pet_name):
"""显示宠物的信息。"""
print(f"I have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name}.")
# 有效:位置实参在前
describe_pet("cat", pet_name="Whiskers")
# 无效:关键字实参后不能跟位置实参
# describe_pet(animal_type="dog", "Buddy") # 这会导致 SyntaxError
理解如何使用参数和实参将数据传递给函数,是编写灵活可复用代码的根本。你现在可以编写每次调用时处理不同数据的函数了。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造