python:导入引用全局范围的函数
我有两个文件python:导入引用全局范围的函数,python,import,scope,Python,Import,Scope,我有两个文件module.py和main.py 在module.py中,我有一个函数,它使用在其范围之外定义的常量 #module.py def add(x): s = x + const return s if __name__ == '__main__': const = 2 print(add(2)) 直接运行时,它将4打印为输出 在main.py中,我有: #main.py import module as m const = 2 print(m.a
module.py
和main.py
在module.py
中,我有一个函数,它使用在其范围之外定义的常量
#module.py
def add(x):
s = x + const
return s
if __name__ == '__main__':
const = 2
print(add(2))
直接运行时,它将4
打印为输出
在main.py
中,我有:
#main.py
import module as m
const = 2
print(m.add(2))
它给出错误:name错误:未定义名称“const”
有没有办法让m.add()在
main.py
全局范围中查找const
?我不想将const
作为函数变量传递给add()
不清楚您的实际用例是什么,但是如果您想在模块之间拥有一个共享变量,您需要在模块范围内定义该变量
在一个模块中声明它:
#module.py
const = 0 # declare as global of module.py
def add(x):
s = x + const
return s
if __name__ == '__main__':
const = 3
print(add(2))
…并在另一个:
#main.py
import module as m
m.const = 3 # reference module's variable
print(m.add(2))
简短回答:不,这是不可能的。您要么将
const
设置为模块成员(例如m.const=2
),要么将其传递给函数。您真正的用例是什么?为什么不想将值传递给函数?这就是函数的工作原理。我想把模型函数和模拟案例分开。其中一些函数使用相同的常量,我只想声明一次。但我希望有可能在模拟文件中更改它们m.const
做了我想做的事情,请参见: