定义与调用函数

函数是编程中的一个重要概念,它是一组可以重复使用的代码块。通过函数,我们可以将代码分成一个个模块,每个模块完成一个特定的任务,这样程序会更加清晰、简洁,也便于维护。


1. 什么是函数?

  • 定义函数:用来将一段代码封装起来并命名,方便重复使用。
  • 调用函数:在需要时运行这个封装的代码。

你可以把函数想象成一个“工具”,当需要这个工具时,只需调用它,而不必每次都重新造一个。


2. 定义函数

语法

def 函数名(参数列表):
    函数体
    return 返回值  # 可选
  • def:表示定义一个函数。
  • 函数名:用来标识这个函数。建议用有意义的名字,例如 calculate_area 表示“计算面积”。
  • 参数列表:函数接受的数据输入,用括号包裹,多个参数用逗号分隔。如果不需要参数,可以留空。
  • 函数体:缩进的代码块,表示函数的具体实现。
  • return:将函数的结果返回给调用方。

简单示例

def say_hello():
    print("你好,欢迎学习 Python!")

3. 调用函数

定义了函数之后,就可以调用它了。调用函数的方式是通过写出函数名并传入参数(如果需要)。

示例

def say_hello():
    print("你好,欢迎学习 Python!")

# 调用函数
say_hello()

输出

你好,欢迎学习 Python!

4. 函数的参数

函数可以通过参数接收外部输入,让它变得更加灵活。

位置参数

位置参数是按顺序传递的,调用函数时必须提供。

def greet(name):
    print(f"你好,{name}!")

greet("小明")

输出

你好,小明!

默认参数

给参数设置一个默认值,在调用函数时可以选择性地传递。

def greet(name="朋友"):
    print(f"你好,{name}!")

greet()          # 使用默认值
greet("小红")    # 传递自定义值

输出

你好,朋友!
你好,小红!

可变参数

*args 表示可以接收任意数量的位置参数,用 **kwargs 表示可以接收任意数量的关键字参数。

def add_numbers(*args):
    print("传入的数字:", args)
    print("总和:", sum(args))

add_numbers(1, 2, 3, 4)

输出

传入的数字: (1, 2, 3, 4)
总和: 10

5. 返回值

函数可以通过 return 将结果返回给调用者。如果没有 return,函数会默认返回 None

示例:计算两数之和

def add(a, b):
    return a + b

result = add(5, 3)
print(f"5 和 3 的和是:{result}")

输出

5 和 3 的和是:8

示例:多返回值

def calculate(a, b):
    return a + b, a * b

sum_result, product_result = calculate(4, 5)
print(f"和:{sum_result}, 积:{product_result}")

输出

和:9, 积:20

6. 函数的好处

  1. 代码复用:相同的代码只需写一次,想用的时候调用即可。
  2. 提高可读性:通过函数名表达功能,让代码更易读懂。
  3. 便于维护:问题只需修复函数中的代码,而不需在多个地方修改。

7. 综合示例

计算圆的面积

import math

def calculate_circle_area(radius):
    """计算圆的面积"""
    if radius < 0:
        return "半径不能为负数!"
    return math.pi * radius ** 2

radius = float(input("请输入圆的半径:"))
area = calculate_circle_area(radius)
print(f"圆的面积是:{area}")

运行示例

请输入圆的半径:5
圆的面积是:78.53981633974483

8. 注意事项

  1. 函数名:建议使用描述性强的名字,并用小写字母,单词之间用下划线分隔(如 calculate_area)。
  2. 注释:可以在函数内加注释,说明它的功能,方便他人阅读。
  3. 参数顺序:位置参数必须在关键字参数之前,默认参数必须放在最后。

总结

  • 函数定义:用 def 声明,封装逻辑,便于复用。
  • 函数调用:按需调用,并传递必要的参数。
  • 参数与返回值:通过参数传递数据,return 返回结果。

通过函数,你的代码会更加简洁高效,执行任务也更灵活!