我在lambda模块中有一个函数lambda_handler,包括其他模块并调用helloWorld函数。
在helloWorld函数中传递参数或将变量设置为全局变量不是一种选择。是否可以从较早的范围访问变量?
#--- lambda.py ---
import my_module
def lambda_handler(event,context):
my_module.helloWorld()
#--- my_module.py ---
def helloWorld():
local_variable = <something>.context
答案 0 :(得分:2)
使用inspect
模块获取调用框架的局部变量:
import inspect
def lambda_handler(event, context):
helloWorld()
def helloWorld():
calling_frame = inspect.currentframe().f_back
print(calling_frame.f_locals['event'])
print(calling_frame.f_locals['context'])
lambda_handler('an event', 'a context')
输出
an event
a context
答案 1 :(得分:-2)
您可以尝试:
from mymodule import *
因为应该从 mymodule 导入变量。
但是它可能不会导入在导入之后创建的变量,因为它读取 def 语句中的代码作为调用时的操作,实际上并不会创建变量。