为什么Python自下而上运行我的代码?
假设这3个文件: 夏比 threenames.py storytime.py 我从终端使用./storytime.py运行storytime.py,它也是chmod+x,这是我得到的输出:为什么Python自下而上运行我的代码?,python,bash,Python,Bash,假设这3个文件: 夏比 threenames.py storytime.py 我从终端使用./storytime.py运行storytime.py,它也是chmod+x,这是我得到的输出: $ ./storytime.py dead parrot sketch Susan $ 为什么结果会在运行print charNames.a之前从threenames.py执行print a、b、c 据我所知,Python是一种自上而下的编程语言,就像bash一样。那它应该先印苏珊,然后印死鹦鹉的素描吗
$ ./storytime.py
dead parrot sketch
Susan
$
为什么结果会在运行print charNames.a之前从threenames.py执行print a、b、c
据我所知,Python是一种自上而下的编程语言,就像bash一样。那它应该先印苏珊,然后印死鹦鹉的素描吗
这是在OSX上运行的,使用Python2.7.5导入文件时,实际上会执行该文件。因此,当您导入三个文件名时,该文件将被执行,因此在您认为调用输出之前,您将从打印a、b、c中获得输出 您需要避免在外部模块中打印内容,而是像在charnames.a中一样在内部打印属性 您应该改为使用类似于结构的主函数:
if __name__ == '__main__':
print a, b, c
在Python中,导入文件时会执行该文件。这就是为什么您首先看到threenames.py的输出,因为它是在导入之后立即执行的 如果您想要一种仅在主文件而不是导入文件中运行代码的方法,可以在threenames.py中使用此代码:
如果运行threenames.py,您将看到a、b和c被打印,因为它是主文件,但当它被导入时,它是模块,因此当您导入文件时,不会执行该条件中的打印函数和任何其他函数调用,该文件将被运行。这应该可以澄清了,光是三个名字就够了NOP@BrenBarn是的,我马上就明白了。非常感谢。
#!/usr/bin/env python
import charNames
import threenames
print charNames.a
threenames
$ ./storytime.py
dead parrot sketch
Susan
$
if __name__ == '__main__':
print a, b, c
if __name__ == '__main__':
print a, b, c