Python3 函数

Python3 函数知识点详解

Python3 函数知识点详解

编程小白的函数指南 – 通俗易懂的Python函数核心知识汇总

什么是函数?

函数就像是一个做特定任务的小机器。你给它一些材料(输入),它就按照设定好的方式工作,然后给你一个成品(输出)。

为什么需要函数?

  • 避免重复写相同的代码
  • 把复杂问题分解成小任务
  • 让代码更容易理解和维护
  • 方便多人协作
Python示例:定义和调用函数
def greet(name):
    # 这是一个简单的问候函数
    return f"你好, {name}!今天过得怎么样?"

# 调用函数
message = greet("小明")
print(message)  # 输出: 你好, 小明!今天过得怎么样?

定义函数

在Python中,使用def关键字来定义函数:

  1. 函数名:应该有意义,使用小写字母和下划线
  2. 参数:放在括号里,可以有多个参数
  3. 冒号:函数定义行以冒号结束
  4. 函数体:缩进的代码块,包含函数的具体操作
  5. return语句:返回结果(可选)
函数定义的基本结构
def 函数名(参数1, 参数2=默认值, ...):
    """文档字符串(可选)"""
    # 函数体 - 执行任务的代码
    代码块
    ...
    return 返回值  # 可选
💡 重要提示

函数定义后不会立即执行,需要调用函数才会执行其中的代码。

函数参数详解

参数是函数的输入值,Python有几种不同类型的参数:

1. 位置参数:最常见的参数,按照位置顺序传递

2. 默认参数:在定义时给参数指定默认值

3. 关键字参数:通过参数名指定值,不再依赖位置

4. 可变参数:处理不确定数量的参数

  • *args:接收任意数量的位置参数
  • **kwargs:接收任意数量的关键字参数
各种参数类型示例
# 位置参数
def add_numbers(a, b):
    return a + b

# 默认参数
def make_coffee(size='中杯', type='拿铁'):
    return f"一杯{size}{type}咖啡"

# 可变参数 (*args 和 **kwargs)
def show_info(name, *hobbies, **details):
    print(f"姓名: {name}")
    print("爱好:", hobbies)
    print("详细信息:", details)

# 调用示例
print(add_numbers(3, 5))  # 位置参数
print(make_coffee(type='美式'))  # 关键字参数
show_info("小李", "阅读", "编程", "旅游", age=25, city="北京")

返回值

函数可以通过return语句返回结果:

  • 函数可以返回任意类型的值
  • 可以返回多个值(实际上是返回一个元组)
  • 没有return语句的函数返回None
  • return语句执行后,函数立即结束
返回值示例
def calculate(a, b):
    # 返回多个值
    return a + b, a - b, a * b, a / b

# 调用函数并接收返回值
sum_result, diff, product, quotient = calculate(10, 2)
print("和:", sum_result)      # 12
print("差:", diff)          # 8
print("积:", product)       # 20
print("商:", quotient)      # 5.0

变量作用域

变量的作用域指的是变量在程序中哪些地方可以被访问:

局部变量:在函数内部定义的变量,只能在函数内部使用

全局变量:在函数外部定义的变量,可以在整个程序中使用

在函数内部修改全局变量需要使用global关键字

变量作用域示例
count = 10  # 全局变量

def update_count():
    global count  # 声明使用全局变量
    count = 20    # 修改全局变量
    local_var = 5 # 局部变量
    
def show_count():
    print("当前计数:", count)  # 访问全局变量

update_count()
show_count()  # 输出: 当前计数: 20
# print(local_var) # 错误! 无法访问局部变量

Lambda函数

Lambda函数是一种简洁的函数创建方式:

  • 也称为匿名函数(没有名字的函数)
  • 通常用于简单的操作
  • 只能包含一个表达式
  • 会自动返回表达式的结果

语法:lambda 参数: 表达式

Lambda函数示例
# 普通函数
def square(x):
    return x ** 2

# 对应的lambda函数
square_lambda = lambda x: x ** 2

print(square(5))          # 25
print(square_lambda(5))   # 25

# 在排序中使用lambda
students = [
    {'name': '小明', 'score': 90},
    {'name': '小红', 'score': 78},
    {'name': '小刚', 'score': 95}
]

# 按分数从高到低排序
students_sorted = sorted(students, key=lambda s: s['score'], reverse=True)
print(students_sorted)

递归函数

递归函数是自己调用自己的函数:

关键要素:

  • 递归出口:终止递归的条件
  • 递归步骤:将问题分解成更小的相似问题

递归适合解决:阶乘、斐波那契数列、遍历树结构等问题

递归函数示例
# 计算阶乘的递归函数
def factorial(n):
    if n == 1:   # 递归出口
        return 1
    else:
        return n * factorial(n - 1)  # 递归调用

print(factorial(5))  # 120 (5*4*3*2*1)

# 斐波那契数列递归实现
def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)

# 输出前10个斐波那契数
for i in range(10):
    print(fibonacci(i), end=" ")  # 0 1 1 2 3 5 8 13 21 34

函数文档

文档字符串(docstring)用于说明函数的功能:

  • 放在函数定义的第一行
  • 使用三重引号(”’ 或 “””)括起来
  • 可以通过help()函数查看
  • 良好的文档是高质量代码的重要组成部分
文档字符串示例
def calculate_area(length, width):
    """
    计算矩形面积
    
    参数:
    length (float): 矩形的长度
    width (float): 矩形的宽度
    
    返回:
    float: 矩形的面积(长度 * 宽度)
    
    示例:
    >>> calculate_area(4, 5)
    20
    """
    return length * width

# 查看函数的文档字符串
help(calculate_area)
# 或者使用print(calculate_area.__doc__)

总结:函数是Python编程的核心

掌握函数的使用是成为Python程序员的关键一步。函数让代码更模块化、更可读、更易维护。

记住:多动手实践是学习编程的最佳途径!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部