python中函数详解和实践

少看美女多学习来吧客观:

1. 函数定义

使用def关键字定义函数:

def function_name(parameters):
    """函数文档字符串"""
    # 函数体
    return value  # 可选

示例

def greet(name):
    """这个函数向传入的名字问好"""
    print(f"Hello, {name}!")

2. 函数调用

定义函数后,可以通过函数名加括号来调用它:

greet("Alice")  # 输出: Hello, Alice!

3. 参数传递

Python函数支持多种参数传递方式:、

位置参数

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

add(3, 5)  # 8

关键字参数

add(a=3, b=5)  # 8
add(b=5, a=3)  # 8,顺序不重要

默认参数

def power(base, exponent=2):
    return base ** exponent

power(3)     # 9 (使用默认exponent=2)
power(3, 3)  # 27

可变参数

  • *args:接收任意数量的位置参数,作为元组
  • **kwargs:接收任意数量的关键字参数,作为字典
def print_args(*args, **kwargs):
    print("位置参数:", args)
    print("关键字参数:", kwargs)

print_args(1, 2, 3, a=4, b=5)

4. 返回值

函数可以使用return返回值,如果没有return语句或return没有指定值,函数返回None。

def multiply(a, b):
    return a * b
result = multiply(4, 5)  # 20

5. 变量作用域

Python有四种作用域:

  1. 局部(Local) - 在函数内部
  2. 嵌套(Enclosing) - 在嵌套函数中
  3. 全局(Global) - 在模块级别
  4. 内置(Built-in) - Python内置名称
x = 10  # 全局变量

def foo():
    y = 20  # 局部变量
    print(x, y)
    
foo()  # 10 20

使用global关键字可以在函数内修改全局变量:

x = 10

def change_x():
    global x
    x = 20

change_x()
print(x)  # 20

6. Lambda函数

匿名函数,使用lambda关键字创建:

square = lambda x: x ** 2
square(5)  # 25

常用于需要函数对象的地方,如排序:

points = [(1, 2), (3, 1), (5, 4)]
points.sort(key=lambda point: point[1])  # 按y坐标排序

7. 函数注解

Python 3+支持函数注解,用于说明参数和返回值的类型(仅文档用途,不强制执行):

def add(a: int, b: int) -> int:
    return a + b

8. 递归函数

函数可以调用自身:

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)
        
factorial(5)  # 120

9. 高阶函数

接受函数作为参数或返回函数的函数:

def apply(func, x):
    return func(x)

apply(lambda x: x * 2, 5)  # 10

10. 闭包

内部函数可以记住外部函数的作用域:

def outer(x):
    def inner(y):
        return x + y
    return inner

add5 = outer(5)
add5(3)  # 8

11. 装饰器

用于修改或增强函数行为:

def my_decorator(func):
    def wrapper():
        print("函数执行前")
        func()
        print("函数执行后")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

12. 生成器函数

使用yield返回一个生成器:

def count_up_to(max):
    count = 1
    while count <= max:
        yield count
        count += 1

counter = count_up_to(5)

13. 内置函数

Python有许多内置函数,如len(), print(), range(), map(), filter(), zip()等。

最佳实践

  1. 函数应该只做一件事
  2. 保持函数简短
  3. 使用有意义的函数名
  4. 限制参数数量(通常不超过3-4个)
  5. 使用文档字符串说明函数用途

函数是Python编程的核心概念,掌握它们对于编写清晰、模块化和可维护的代码至关重要。

“注释是写给六个月后的自己看的,因为那时候你已经不记得自己当初有多聪明了。”

敲代码一定要加注释,就像看完文章要点赞一样

顺便收藏加个关注看官

相关文章

一文掌握Python中zip()函数

理解zip()zip()函数接受两个或多个可迭代对象作为参数,并返回一个迭代器,该迭代器聚合每个可迭代对象中的元素。可以把它想象成一个拉链,把不同列表中的元素组合成一个可迭代的元组。当处理相关数据但存...

python内置zip函数详解

在Python中,zip是一个内置函数(其实是一个class),可以将多个可迭代对象(如列表、元组等)作为参数,将对象中对应index的元素打包成一个个的元组,然后返回由这些元组tuple组成的zi...

Python中的zip函数详解,高效组合多个序列

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。公众号:一点sir,关注领取编程资料在Python中,处理数据时经常需要同时遍历多个序列。zip函数提供了一种简洁的方式来组合这些序列...

Python zip函数核心应用解析:多数据流处理的高效方案

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。技术价值定位根据PyPI官方统计,Python标准库中zip函数在数据处理场景的使用率达68%。本文通过12个生产级案例,系统解析...

Python zip()函数

Python zip() 是一个通用函数,可用于并行迭代两个或多个可迭代对象。它可以从两个或多个迭代对象创建元组列表,或者将两个字典合并到一个字典中。让我们探讨一下在 Python 中使用 zip()...

Python的zip函数:数据配对的神奇纽带

对话实录小白:(苦恼)我有两个列表,一个存名字,一个存年龄,想把它们对应起来,好麻烦啊!专家:(掏出魔法棒)用zip函数,一键搞定数据配对难题!zip函数基础直击1 zip类接收2个参数iterabl...