【发布时间】:2017-12-20 11:14:12
【问题描述】:
在调用函数时,我无法理解导入是如何工作的。我相信它与范围有关,但我不知道它是如何工作的。我在网站或一些教程上检查了类似的问题,但看起来我只是不明白它是如何工作的
我有一个 python 脚本 MyScipt.py 包含
def usage(errorID):
# import sys
if errorID == 0:
print("blah blah blah")
print("blah blah blah")
print("blah blah blah"+\
sys.exit()
def main():
import sys
# print(len(sys.argv),sys.argv)
try:
rootDir = sys.argv[1]
except IndexError:
usage(0)
# MAIN PROGRAM
#
if __name__ =="__main__":
main()
执行失败
PS D:\xxx\python> python .\myScript.py blah blah blah blah blah blah blah blah blah Traceback(最近一次通话最后):文件 “.\myScript.py”,第 288 行,在 main rootDir = sys.argv[1] IndexError: 列表索引超出范围
在处理上述异常的过程中,又发生了一个异常:
Traceback(最近一次调用最后一次):文件“.\myScript.py”,第 299 行, 在 main() 文件“.\myScript.py”,第 290 行,在 main 用法(0)文件“.\myScript.py”,第 15 行,正在使用中 sys.exit() NameError: name 'sys' is not defined
如果我取消注释第二行 (# import sys),它将起作用
如何让脚本中的所有函数都可以使用导入?
提前致谢
【问题讨论】:
-
为什么不在顶层在所有函数定义之前导入
import sys? -
确实这是我想编写代码的初始位置,但后来我搞砸了“我应该在哪里调用
import os.path”。我会将此问题标记为答案,并可能会打开一个新问题。谢谢
标签: python module namespaces