繁体   English   中英

python导入模块全局本地名称空间

[英]python import module global local namespace

我在理解函数调用时导入如何工作时遇到问题。 我相信它与范围有关,但我不知道它是如何工作的。 我已经在网站或一些教程中检查了类似的问题,但看起来我只是不明白它是如何工作的

我有一个包含的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等等等等追溯(最近一次调用):文件“。\\ myScript.py”,第288行,位于主rootDir = sys.argv [1] IndexError:列表索引超出范围

在处理上述异常期间,发生了另一个异常:

追溯(最近一次通话最后一次):main()中的文件“。\\ myScript.py”,行299,主用法中的文件“。\\ myScript.py”,行290(0)文件“。\\ myScript.py”第15行,用法sys.exit()NameError:未定义名称'sys'

如果我取消注释第二行(#import sys),它将起作用

如何使导入可用于脚本中的所有功能?

提前致谢

感谢您的反馈。 必须将import sys语句放在脚本的开头才能解决此错误

只需在文件顶部而不是函数中导入sys。

import sys
def usage(errorID):

    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()

您收到第二个错误,因为没有将任何参数传递给脚本,然后未定义sys,因此无法sys.exit()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM