本文将介绍Python内部函数如何调用外部函数,主要分为以下几个方面。
一、全局变量和局部变量
在Python中函数内部可以访问全局变量,但是若想修改全局变量的值,需要使用global关键字声明。以下示例中,函数内部修改了全局变量a的值:
a = 1 def func(): global a a = 2 func() print(a) # 输出2
在函数内部定义的变量为局部变量,其作用域只在该函数内部。以下示例中,函数内部定义了局部变量b,不会影响到全局变量a的值:
a = 1 def func(): b = 2 func() print(a) # 输出1
二、内部函数嵌套调用外部函数
在Python中函数可以嵌套定义,内部函数可以访问外部函数的变量。以下示例中,函数inner可以访问函数outer中的变量a和b:
def outer(): a = 1 def inner(): b = 2 print(a + b) inner() outer() # 输出3
三、闭包
闭包是指函数嵌套,内部函数引用了外部函数的变量,并且该外部函数返回内部函数的情况。以下示例中,函数outer返回了内部函数inner,调用inner时可以访问outer中的变量a:
def outer(): a = 1 def inner(): print(a) return inner func = outer() func() # 输出1
四、回调函数
在Python中,函数可以作为参数传递给其他函数,在接收到特定事件时调用传入的函数,称为回调函数。以下示例中,函数callback作为参数传递给函数outer,在outer中触发事件时调用callback函数:
def callback(): print('Callback!') def outer(callback): print('Outer function!') callback() outer(callback) # 输出'Outer function!' 'Callback!'
五、装饰器
装饰器是Python中用于修改或扩展函数功能的一种技术,本质上是一个函数,接收一个函数对象作为参数,返回一个新的函数对象,新的函数对象通常会在原有的函数上添加一些新的功能。以下示例中,函数decorator是一个装饰器,作用是在原函数调用前后分别输出一行信息:
def decorator(func): def wrapper(): print('Before call') func() print('After call') return wrapper @decorator def func(): print('Function') func() # 输出'Before call' 'Function' 'After call'
六、lambda表达式
lambda表达式是Python中一种匿名函数的实现方式,通常在需要编写简短的函数时使用。以下示例中,lambda表达式实现了两个数相加:
add = lambda x, y: x + y print(add(1, 2)) # 输出3