Python是一种易于学习且使用灵活的编程语言,这使得它成为了大多数人学习编程的首选语言。在Python中,函数是一系列代码块,用于完成特定的功能,函数的参数在调用函数时传递给函数。对于初学者来说,理解如何传递参数是一个很好的起点。下面将从多个角度介绍Python传递实参的方法。

1. 位置实参
位置实参是最常见的Python参数类型之一。对于位置实参,函数调用时将实参填入指定位置的形参中。下面是一个简单的例子:
def greet_user(username):
"""显示简单的问候语"""
print(f"hello, {username.title()}!")
greet_user('jesse')
在这个例子中,位置实参'jesse'传递给了函数greet_user()的形参username。输出结果:'hello, Jesse!'。
2. 关键字实参
关键字实参是实参名称和值一起传递给函数。可以通过名称而不是位置来指定实参。
def describe_pet(animal_type, pet_name):
"""显示宠物的信息"""
print(f"i 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(pet_name='willie', animal_type='dog')
在这里,关键字实参animal_type和pet_name都是由参数名和值构成的,它们分别匹配函数定义中的形参animal_type和pet_name。我们可以根据需要以任意顺序传递实参,输出结果:
i have a hamster.
My Hamster's name is Harry.
i have a dog.
My Willie's name is Willie.
3. 默认值
默认值是在函数定义中指定的参数值。如果调用函数时未提供该参数,则使用默认值。例如:
def describe_pet(pet_name, animal_type='dog'):
"""显示宠物的信息"""
print(f"i have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet(pet_name='willie')
describe_pet(pet_name='harry', animal_type='hamster')
在这里,函数定义中的形参animal_type包含默认值'dog'。因此,如果我们调用describe_pet()时未填写animal_type,它将使用默认值。输出结果:
i have a dog.
My Willie's name is Willie.
i have a hamster.
My Harry's name is Harry.
4. 可变长实参
有时我们想要让函数能够接受任意数量的实参,这时我们可以使用可变长实参。Python函数在定义时使用星号*来实现这个功能。下面是一个例子:
def make_pizza(*toppings):
"""打印客户点的所有配料"""
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
在这个例子中,我们使用了星号*来实现一个可变长实参的函数。toppings收到的实参是一个元组,包含所有客户点的配料。输出结果:
('pepperoni',)
('mushrooms', 'green peppers', 'extra cheese')
5. 任意数量的关键字实参
如果需要接受任意数量的关键字实参,我们可以使用一个以两个星号**开头的形参。这个形参将所有的键值对封装到一个字典中。下面是一个例子:
def build_profile(first, last, **user_info):
"""创建一个字典,其中包含我们知道的有关用户的一切"""
user_info['first_name'] = first
user_info['last_name'] = last
return user_info
user_profile = build_profile('albert', 'einstein',location='princeton', field='physics')
print(user_profile)
在这个例子中,实参first和last分别存储到形参first和last中。而关键字实参location和field分别存储到一个字典中,并通过形参user_info进行访问。输出结果:
{'location': 'princeton', 'field': 'physics', 'first_name': 'albert', 'last_name': 'einstein'}
总结:
Python中有多种传递实参的方式,如位置实参、关键字实参、默认值、可变长实参和任意数量的关键字实参。对于每种方法,我们都可以灵活地根据需要选用。掌握这些传递实参的方法对于Python编程的初学和后期开发都是必要的。