本文共 1633 字,大约阅读时间需要 5 分钟。
在Python中,函数之间可以通过多种方式传递变量。本文将详细介绍七种常用的实现方法。
这种方法最为简单直接,函数直接接收外部传入的变量作为参数。
def greet(name): print("Hello, " + name)greet("World") # 输出: Hello, World 函数可以返回一个或多个值,这些值可以在调用后被存储或打印。
def add(a, b): return a + bresult = add(1, 2)print(result) # 输出: 3
在模块范围内定义的变量可以在任何函数中被访问和修改。需要使用 global 关键字声明全局变量。
count = 0def increment(): global count count += 1increment()print(count) # 输出: 1
函数可以作为另一个函数的参数,当调用外部函数时,传入的函数会立即执行。
def call_back(func): return func("Hello, CallBack!")print(call_back(lambda x: x + " World")) # 输出: Hello, CallBack! World 内部函数可以访问其外部函数的局部变量,并使用 nonlocal 关键字进行操作。
def outer(): count = 0 def inner(): nonlocal count count += 1 return count return innercounter = outer()print(counter()) # 输出: 1
装饰器是一个可以接受其他函数的函数,可以在调用原始函数前后执行额外操作。
def decorator_func(func): def wrapper(): print("Before function execution") func() print("After function execution") return wrapper@decorator_funcdef greeting(): print("Hello, Decorator!")greeting() # 输出: Before function execution\nHello, Decorator!\nAfter function execution Python内置的模块和方法也使用了上述技术,例如 map()、filter() 和 reduce() 函数。
以下是一些测试用例:
assert add(1, 2) == 3assert greet("World") == "Hello, World"assert count == 1assert call_back(lambda x: x + " World") == "Hello, CallBack! World"assert counter() == 1assert greeting() == "Before function execution\nHello, Decorator!\nAfter function execution" 这些方法在实际应用中有广泛的用途,例如在人工智能大模型中,回调函数可以用于模型训练和预测过程中的日志记录和性能监控。例如,在TensorFlow中,可以使用 tf.keras.callbacks 模块定义一系列回调函数。
转载地址:http://yklfk.baihongyu.com/