杰瑞科技汇

Python函数如何正确调用?

什么是函数?

在编程中,函数 是一个组织好的、可重复使用的、用来实现单一或相关联功能的代码块。

Python函数如何正确调用?-图1
(图片来源网络,侵删)

你可以把函数想象成一个“工具箱里的工具”,有一个叫 add_numbers 的函数,它的功能就是“把两个数字加起来”,当你需要计算两个数的和时,你不需要每次都写一遍加法代码,只需要调用这个“工具”(函数)就行了。

函数调用的基本语法

要使用一个函数,你需要调用它,函数调用的基本语法如下:

function_name(argument1, argument2, ...)
  • function_name: 你要调用的函数的名称。
  • 圆括号是必须的,它告诉 Python 你正在调用一个函数。
  • argument1, argument2, ...: 这些是参数,也就是你传递给函数的输入值,函数会使用这些值来执行它的任务,参数是可选的,有些函数不需要任何参数。

函数调用的步骤

函数调用分为两步:

  1. 定义函数: 你需要创建这个函数,使用 def 关键字。
  2. 调用函数: 在代码的其他地方,通过函数名来执行它。

示例 1: 无参数、无返回值的函数

这种函数执行一个操作,但不返回任何值,也不接收任何输入。

Python函数如何正确调用?-图2
(图片来源网络,侵删)
# 步骤 1: 定义函数
def say_hello():
    """打印 'Hello, World!' 到控制台"""
    print("Hello, World!")
# 步骤 2: 调用函数
# 直接写下函数名和一对括号
say_hello()

输出:

Hello, World!

注意: 如果你只写下 say_hello 而不带括号,你得到的是函数这个“对象”本身,而不是执行它。

print(say_hello)  # 输出: <function say_hello at 0x...>

示例 2: 带参数、无返回值的函数

函数可以接收输入(参数),并根据这些输入执行操作。

# 步骤 1: 定义函数
def greet(name):
    """向指定的人问好"""
    print(f"你好, {name}! 欢迎来到 Python。")
# 步骤 2: 调用函数,并传入参数 "Alice"
greet("Alice")
# 调用函数,并传入参数 "Bob"
greet("Bob")

输出:

Python函数如何正确调用?-图3
(图片来源网络,侵删)
你好, Alice! 欢迎来到 Python。
你好, Bob! 欢迎来到 Python。

示例 3: 带参数、有返回值的函数

这是最常见的函数类型,函数执行计算后,通过 return 语句将结果返回给调用者。

# 步骤 1: 定义函数
def add(a, b):
    """计算两个数的和并返回结果"""
    result = a + b
    return result
# 步骤 2: 调用函数,并用一个变量来接收返回值
sum_result = add(5, 3)
# 现在可以使用这个结果
print(f"5 + 3 的结果是: {sum_result}")
# 你也可以直接在表达式中使用它
print(f"10 + 20 的结果是: {add(10, 20)}")

输出:

5 + 3 的结果是: 8
10 + 20 的结果是: 30

注意: 一旦函数执行到 return 语句,函数就会立即终止,后面的代码将不再执行。

def check_number(num):
    if num > 10:
        return "这个数大于 10"
    print("这条语句不会被执行,num > 10")
    return "这个数小于等于 10"
print(check_number(15))

输出:

这个数大于 10

函数参数的传递方式

Python 函数的参数传递非常灵活。

1 位置参数

这是最常见的方式,参数的顺序必须和定义时的顺序一致。

def describe_pet(animal_type, pet_name):
    """显示宠物信息"""
    print(f"我有一只 {animal_type}。")
    print(f"它的名字叫 {pet_name}。")
# 按顺序传递参数
describe_pet("狗", "旺财")

输出:

我有一只 狗。
它的名字叫 旺财。

2 关键字参数

使用参数名来传递参数,这样顺序就不重要了,代码可读性也更高。

def describe_pet(animal_type, pet_name):
    """显示宠物信息"""
    print(f"我有一只 {animal_type}。")
    print(f"它的名字叫 {pet_name}。")
# 使用关键字参数,顺序可以打乱
describe_pet(pet_name="咪咪", animal_type="猫")

输出:

我有一只 猫。
它的名字叫 咪咪。

3 默认参数

在定义函数时,可以给参数指定一个默认值,如果调用时没有提供该参数,就使用默认值。

def describe_pet(pet_name, animal_type="狗"):
    """显示宠物信息,animal_type 默认为 '狗'"""
    print(f"我有一只 {animal_type}。")
    print(f"它的名字叫 {pet_name}。")
# 只提供了 pet_name,animal_type 使用默认值
describe_pet("大黄")
# 提供了所有参数,覆盖了默认值
describe_pet("小黑", "猫")

输出:

我有一只 狗。
它的名字叫 大黄。
我有一只 猫。
它的名字叫 小黑。

重要规则: 在定义函数时,没有默认值的参数必须放在有默认值的参数前面,否则会报错。

4 可变数量的参数 (*args**kwargs)

有时你不知道会传入多少个参数。

  • *args: 用于接收任意数量的位置参数,它会将这些参数打包成一个元组
  • **kwargs: 用于接收任意数量的关键字参数,它会将这些参数打包成一个字典
# 使用 *args
def make_pizza(*toppings):
    """打印顾客点的所有配料"""
    print("\n制作一个披萨,配料如下:")
    for topping in toppings:
        print(f"- {topping}")
make_pizza("意大利辣香肠")
make_pizza("蘑菇", "青椒", "洋葱")
# 使用 **kwargs
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)

输出:

制作一个披萨,配料如下:
- 意大利辣香肠
制作一个披萨,配料如下:
- 蘑菇
- 青椒
- 洋葱
{'location': 'princeton', 'field': 'physics', 'first_name': 'albert', 'last_name': 'einstein'}

函数作为参数传递

在 Python 中,函数是“一等公民”,意味着函数可以被当作变量一样传递给其他函数。

def add(a, b):
    return a + b
def subtract(a, b):
    return a - b
def calculate(func, x, y):
    """接受一个函数和两个数字,并调用该函数"""
    print(f"计算结果: {func(x, y)}")
# 将 add 函数作为参数传递给 calculate
calculate(add, 5, 3)  # 输出: 计算结果: 8
# 将 subtract 函数作为参数传递给 calculate
calculate(subtract, 5, 3) # 输出: 计算结果: 2

嵌套函数调用

一个函数的返回结果可以作为另一个函数的参数。

def add(a, b):
    return a + b
def multiply(a, b):
    return a * b
# 先计算 5 + 3,然后将结果 (8) 和 4 一起传递给 multiply 函数
result = multiply(add(5, 3), 4)
print(f"最终结果是: {result}") # 输出: 最终结果是: 32

概念 语法/示例 描述
基本调用 my_function() 执行函数 my_function 的代码。
带参数调用 my_function(arg1, arg2) 向函数传递数据(参数)。
接收返回值 result = my_function() 将函数通过 return 返回的值存储在变量中。
位置参数 my_func('a', 'b') 按定义顺序传递参数。
关键字参数 my_func(arg2='b', arg1='a') 按参数名传递参数,顺序可变。
默认参数 def my_func(a, b=10): 定义时给参数默认值,调用时可省略。
可变参数 def my_func(*args, **kwargs): 接收任意数量的位置参数(元组)和关键字参数(字典)。
函数作为参数 calculate(add, 5, 3) 将一个函数对象传递给另一个函数。

掌握函数调用是学习 Python 的基石,多写、多练,你很快就能熟练运用它来写出结构清晰、可重用的代码。

分享:
扫描分享到社交APP
上一篇
下一篇