Python 模块函数使用来自全局环境的变量
Python module functions to use variables from global env
我对 Python 比较陌生,我正在尝试做一些事情并进一步了解 Python 的工作原理。
我对 google 一无所知,部分原因是我不知道如何正确描述我正在尝试做的事情。
我的目标是从一个模块加载一个函数,它没有 take/require 个参数,但在全局环境中找到它需要的东西。
这个有效:
temp = 17
def doubletemp():
dt = temp * 2
return dt
doubletemp()
但是如果我将 doubletemp() 放在一个单独的文件中,称为 steve.py 并且有这个:
steve.py
def doubletemp():
dt = temp * 2
return dt
dt.py
import steve
temp = 17
steve.doubletemp()
当我 运行 dt.py 时,我得到一个错误:NameError: name 'temp' is not defined.
有办法解决这个问题吗? Steve.py 中的函数在 dt.py 的环境中寻找温度的方法?
谢谢!
你可以使用:
def doubletemp():
temp = globals()["temp"]
dt = temp * 2
return dt
由此 globals() 将检查您当前的模块,在您的情况下 steve.py,但在我看来,这将是一个非常糟糕的做法。你为什么不把你的变量作为函数的参数,就像这样:
def doubletemp(t):
return t * 2
**in steve.py** --> doubletemp(temp)
在 Python 中,并不真正推荐使用全局变量,并且通常被认为是不好的做法,除非您绝对必须使用它们。
对于您的情况,只需实现参数传递即可。您的第一个示例有效,因为它全部定义在一个文件中,但仍然不建议在没有参数传递的情况下执行此操作(您在第一个示例中所做的)。
改为这样做:
dt.py
import steve
temp = 17
steve.doubletemp(temp)
steve.py
def doubletemp(temperature):
double_temp = temperature * 2
return double_temp
如你所知,温度和温度是两个不同的变量。另外,如果你想把所有的东西都放在一个文件里,非常推荐有参数传递:
def doubletemp(temperature):
dt = temperature * 2
return dt
temp = 17
doubletemp(temp)
我对 Python 比较陌生,我正在尝试做一些事情并进一步了解 Python 的工作原理。
我对 google 一无所知,部分原因是我不知道如何正确描述我正在尝试做的事情。
我的目标是从一个模块加载一个函数,它没有 take/require 个参数,但在全局环境中找到它需要的东西。
这个有效:
temp = 17
def doubletemp():
dt = temp * 2
return dt
doubletemp()
但是如果我将 doubletemp() 放在一个单独的文件中,称为 steve.py 并且有这个:
steve.py
def doubletemp():
dt = temp * 2
return dt
dt.py
import steve
temp = 17
steve.doubletemp()
当我 运行 dt.py 时,我得到一个错误:NameError: name 'temp' is not defined.
有办法解决这个问题吗? Steve.py 中的函数在 dt.py 的环境中寻找温度的方法?
谢谢!
你可以使用:
def doubletemp():
temp = globals()["temp"]
dt = temp * 2
return dt
由此 globals() 将检查您当前的模块,在您的情况下 steve.py,但在我看来,这将是一个非常糟糕的做法。你为什么不把你的变量作为函数的参数,就像这样:
def doubletemp(t):
return t * 2
**in steve.py** --> doubletemp(temp)
在 Python 中,并不真正推荐使用全局变量,并且通常被认为是不好的做法,除非您绝对必须使用它们。
对于您的情况,只需实现参数传递即可。您的第一个示例有效,因为它全部定义在一个文件中,但仍然不建议在没有参数传递的情况下执行此操作(您在第一个示例中所做的)。
改为这样做:
dt.py
import steve
temp = 17
steve.doubletemp(temp)
steve.py
def doubletemp(temperature):
double_temp = temperature * 2
return double_temp
如你所知,温度和温度是两个不同的变量。另外,如果你想把所有的东西都放在一个文件里,非常推荐有参数传递:
def doubletemp(temperature):
dt = temperature * 2
return dt
temp = 17
doubletemp(temp)