请考虑以下代码:
##testing.py
namespace = "original"
def print_namespace():
print ("Namespace is", namespace)
def get_namespace_length(_str = namespace):
print(len(_str))
##Main
import testing
testing.namespace = "test"
testing.printnamespace()
testing.get_namespace_length()
print_namespace()返回'test'作为exepcted,但是get_namespace_length()仍然返回8,这是'original'的长度。如何使get_namespace_length()获取修改后的变量?
这种实现的用例是某些函数在导入的模块中使用相同的变量,如果我可以修改/设置变量,我可以避免在每个函数中显式调出新变量。有人可以提供建议吗?
此外,只要它有效,它就不必以上面显示的方式实现。 (全局变量等)
答案 0 :(得分:1)
嗯...... <a-assets>
<img id="my-image" src="qq.jpg">
</a-assets>
<a-plane position="0 0 -10" width="20" height="10" color="#7BC8A4">
<a-text position="0 3 1" value="Title" color="black" width="30"></a-text>
<a-text position="-1.5 -1 1" value="In the field ocolor="black" width="15"></a-text>
<a-image position="-5 1.5 1" width="7" height="5" src="#my-image">
</a-image>
</a-plane>
的默认参数是get_namespace_length
,在您的代码段中未定义,您也可以从调用database
切换到testing
(我猜是这是很多错别字之一。)
简而言之,我相信它与如何在python中编译字节码有关。参数是“预加载的”,因此对变量(例如命名空间)的更改不会包含在test
的编译中。如果我没记错的话,在get_namespace_length
上编译并执行导入文件的整个代码(尝试在tests.py末尾添加import
语句来查看)
所以你真正想要获得4的长度是将testing.py改为:
print()
或只是namespace = "original"
def print_namespace():
print ("Namespace is", namespace)
def get_namespace_length():
_str = namespace
print(len(_str))
。
希望有所帮助!