Python:有没有一种方法可以不使用'从其他函数访问变量;全球';?
下面是一个关于我想法的例子:Python:有没有一种方法可以不使用'从其他函数访问变量;全球';?,python,scope,Python,Scope,下面是一个关于我想法的例子: def check_args(): if len(sys.argv) < 2: sys.exit('Reason') if not os.path.exists(sys.argv[1]): sys.exit('ERROR: Folder %s was not found!' % sys.argv[1]) global path path = sys.argv[1] def check_args(
def check_args():
if len(sys.argv) < 2:
sys.exit('Reason')
if not os.path.exists(sys.argv[1]):
sys.exit('ERROR: Folder %s was not found!' % sys.argv[1])
global path
path = sys.argv[1]
def check_args():
如果len(系统argv)<2:
系统退出(“原因”)
如果操作系统路径不存在(sys.argv[1]):
sys.exit('错误:找不到文件夹%s!'%sys.argv[1])
全局路径
path=sys.argv[1]
正如您在check_args()成功完成后所知道的,“path”变量具有普遍意义-您可以在其他函数中作为事实变量使用它
所以我在想,是否有一种方法可以访问“路径”,例如check_args.path
在python v3中如何?python函数是对象。您可以在其上定义所需的任何自定义特性:
def a():
a.test = 123
a()
a.test # => 123
您可以简单地返回值
def check_args():
if len(sys.argv) < 2:
sys.exit('Reason')
if not os.path.exists(sys.argv[1]):
sys.exit('ERROR: Folder %s was not found!' % sys.argv[1])
path = sys.argv[1]
return path
my_path = check_args()
这可能只是一个示例,但如果这与实际代码接近,则可能需要查看命令行解析库(
argparse
是python中包含的最新的一个)。您不必将代码放入函数中。只需在模块顶部附近定义一个全局path
变量即可。您可以将其存储为@lanzz的答案中的函数属性,但这几乎是一样的,因为您的函数是一个全局模块对象。check_args是否有充分的理由不简单地返回值,让调用方担心它保存在哪里?需要函数属性通常是您想要类的标志,可能使用\uuuu调用
。
if __name__ == '__main__':
my_path = check_args()
results = do_something(path)