当前位置: 首页 > 面试题库 >

为什么在导入模块时Python运行我的模块,以及如何停止它?

鲁单弓
2023-03-14
问题内容

我有一个正在构建的Python程序,可以通过以下两种方式之一运行:第一种是调用“ python main.py”,它以友好的方式提示用户输入,然后通过该程序运行用户输入。另一种方法是调用“ python batch.py -file- ”,它将遍历所有友好的输入集合,并通过该程序一次运行整个文件的输入值。

问题是,当我运行“ batch.py​​”时,它会从“ main.py”中导入一些变量/方法/等,并在运行此代码时:

import main

在程序的第一行,它立即错误,因为它试图运行“ main.py”中的代码。

如何阻止Python运行要导入的“主”模块中包含的代码?


问题答案:

因为这就是Python的工作方式-诸如classanddef类的关键字不是声明。相反,它们是执行的真实实时语句。如果未执行,则你的模块将为..空:-)

无论如何,惯用的方法是:

# stuff to run always here such as class/def
def main():
    pass

if __name__ == "__main__":
   # stuff only to run when not called via 'import' here
   main()

请参阅目的是什么if name == “main“?

但是,它确实需要对要import编辑的模块进行源代码控制

快乐的编码。



 类似资料:
  • 问题内容: 我注意到我今天想解释的东西很奇怪。我不是100%不确定如何将其表达为一个问题,所以google是不可能的。由于某些奇怪的原因,日志记录模块无权访问模块logging.handlers。如果您不相信我,请自己尝试: 谁能解释为什么会这样? 问题答案: 在Python中,需要先导入模块,然后才能对其进行访问。仅导入日志记录模块。碰巧这是一个带有子模块的软件包,但是那些子模块仍然不会自动加载

  • 我是Python新手,我仍然无法理解为什么我们需要一个文件来导入模块。我已经看过了其他的问题和答案,比如这个。 让我困惑的是,我可以在没有的情况下导入我的模块,那么为什么我需要它呢? 以我为例,, index.py, 模块/hello/hello.py, 模块/Hello/HelloWorld.py, 后果 只需要这两条线, 没有任何。有人能解释为什么它是这样工作的吗? 如果是正确的方法,我应该在

  • 本文向大家介绍Python创建模块及模块导入的方法,包括了Python创建模块及模块导入的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python创建模块及模块导入的方法。分享给大家供大家参考。具体分析如下: python学习手册中写道: 定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块。 比如

  • 我是新的Python,我已经安装在C:\ INFO2013-07-08 08:15:47,197server.py:593]默认:"GET/HTTP/1.1"500-INFO2013-07-08 08:28:22,289api_server.py:509]应用所有挂起的事务并保存数据存储INFO2013-07-08 08:28:22,289api_server.py:512]保存搜索索引2013-

  • 问题内容: 使用IPython在Python中开发大型项目(分为多个文件和文件夹)时,我遇到了缓存导入模块的麻烦。 问题是,即使模块已更改,指令也只能读取一次模块!因此,每次更改软件包中的内容时,都必须退出并重新启动IPython。痛苦。 有什么方法可以正确地强制重新加载某些模块吗?还是更好地以某种方式阻止Python对其进行缓存? 我尝试了几种方法,但是没有用。特别是我遇到了非常非常奇怪的错误,

  • 根据这个答案,您可以使用来使用类似这样的相对导入: 为什么相对导入不适用于sklearn。特征提取。文本 我验证了是一个具有以下功能的模块: 编辑 “不工作”,我的意思是它不导入模块。 我正在使用Python 3.4 绝对方式工作: 相对方式不: