作为前言,我想我可能已经想出如何使这个代码工作(基于导入后更改模块变量),但我的问题是关于为什么会发生以下行为,所以我可以理解将来不做什么.
我有三个文件.第一个是mod1.py:
# mod1.py
import mod2
var1A = None
def func1A():
global var1
var1 = 'A'
mod2.func2()
def func1B():
global var1
print var1
if __name__ == '__main__':
func1A()
Run Code Online (Sandbox Code Playgroud)
接下来我有mod2.py:
# mod2.py
import mod1
def func2():
mod1.func1B()
Run Code Online (Sandbox Code Playgroud)
最后我有driver.py:
# driver.py
import mod1
if __name__ == '__main__':
mod1.func1A()
Run Code Online (Sandbox Code Playgroud)
如果我执行命令,python mod1.py
则输出为None
.基于我上面引用的链接,似乎mod1.py
导入__main__
和mod1.py
导入之间存在一些区别mod2.py
.因此,我创造了driver.py
.如果我执行命令,python driver.py
那么我得到预期的输出:A
.我有点看到差异,但我并没有真正看到它的机制或原因.这是怎么发生的?似乎违反直觉的是,同一模块将存在两次.如果我执行python mod1.py
,是否可以访问__main__
版本mod1.py
中的变量而不是导入的版本中的变量mod2.py
?
有没有办法使用 Julia 的 HDF5.jl 调整 HDF5 中分块数据集的大小?我在文档中没有看到任何内容。查看源代码,我发现的只是set_dims!()
,但不能扩展数据集(只能缩小它)。HDF5.jl 是否能够扩大现有(分块)数据集?这对我来说是一个非常重要的功能,我宁愿不必调用另一种语言。