![]() |
1
3
“func1”的全局范围仅限于其自身定义的范围。这样,它就可以作为一个独立的模块运行。也就是说,它可以像模块应该运行的那样运行:因此它可以被导入并由任何其他模块运行。这样做是为了避免不同模块在其全局定义中对不同的事物使用相同的名称时发生冲突。 来自python docs :
通过使用import语句加载文件,可以使其成为模块。然后,您不能期望该模块获取从中导入它的范围。它自己的范围仍然不同。其完整性受到保护。如果它不自己定义定义,它必须自己导入它使用的任何定义。 为了能够加载引用该函数的字典,必须在其所在的范围(文件)中定义该函数。
自
根据Python 文档 ,
为了在模块(文件)范围内访问您的函数,您需要导入交互式解释器的“模块”,我认为这是不可能的。 |
![]() |
2
3
每个模块都定义了一个名称空间,因此模块中的“全局”变量实际上是该模块的作用域;另一个模块可以访问它们,但需要通过定义名称的模块进行访问。
在交互式会话中运行时,您创建的对象将添加到一个名为
仅作为学习目的的示例:
在真实的程序中,应该避免这样的循环依赖关系。但是,从一个模块导入函数,将它们组装到另一个模块的数据结构中,然后使用第三个模块的数据结构仍然很有用。 关于程序各部分之间的依赖关系,一个很好的经验法则是:实现应该只依赖于抽象,而抽象应该只依赖于其他抽象。 |
![]() |
Shital Shah · Python 3包和脚本中导入的最佳实践 6 年前 |
![]() |
jef · 当从不同目录调用文件时,如何指定导入路径? 6 年前 |
![]() |
Jamil Noyda · 导入模块的最佳方式Python[复制] 6 年前 |
![]() |
Nastya · 如何在colab上安装utils? 6 年前 |