【发布时间】:2020-07-05 23:24:41
【问题描述】:
我确信这很简单,但我一直无法让它正常工作。我需要让我的主要 python 脚本调用另一个 python 脚本并将变量从原始脚本传递给我调用的脚本
所以对于一个简单的例子,我的第一个脚本是,
first.py
x = 5
import second
我的第二个脚本是,
second.py
print x
我希望它打印 x 但我得到了
NameError: name 'x' is not defined
我不确定导入是否是实现这一目标的正确方法,但如果有人能以简单的方式阐明它,那就太好了!
谢谢,
编辑
阅读完 cmets 后,我想我会扩展我的问题。 Aswin Murugesh 的回答解决了我遇到的导入问题,但是该解决方案没有达到预期的结果,因为我似乎无法以这种方式传递列表中的项目。
在 first.py 我有一个列表,我处理如下
for insert, (list) in enumerate(list, start =1):
'call second.py passing current list item'
我想将列表中的每个项目传递给第二个 python 文件以进行进一步处理(网络抓取),我不想在 first.py 中执行此操作,因为这是主“扫描”程序然后调用其他程序。我希望这现在更有意义。
感谢到目前为止的 cmets。
【问题讨论】:
-
这两个脚本有什么办法可以成为单个脚本中的函数吗?
-
@summea 不是一个真正有用的回应。是的,我想 OP 可以尝试通过从不使用导入,永远来解决不理解 Python 导入系统的基础知识的问题,但是当他需要从他目前的困惑是一个小代码 sn-p 显示如何使用导入?
-
与某些语言不同,Python 的
import不只是将导入文件的源代码转储到包含文件的中间并执行整个过程。导入的文件对其周围环境一无所知,这就是该代码中断的原因。在您的情况下,我不确定导入是否正确。适当的模块化建议设计 second.py 以便可以将x作为参数传递给其中定义的函数/对象。 -
@MarkAmery 仅尝试提出不同的方法,如果可能的话。
-
Stjepan Bakrac 的回应是这里所说的最有帮助的事情。您还没有充实您的场景,我们无法确定什么是合适的,但是从您所写的内容来看,我猜
first本质上是一个“主”模块-您程序的概念上自然的入口点-但是您想将一些逻辑分离到second。这很好,但如果是这样,您需要在second中创建一个函数(或多个函数,或一个或多个类),该函数将first中所需的变量作为参数。
标签: python