【发布时间】:2016-01-07 17:43:28
【问题描述】:
我有一组(4 个标志)控制我的 python 脚本生成的输出的性质和控制脚本打印到终端的信息量的标志(verbose 标志通常的方式)。这些标志被多个函数使用。标志的值由我使用 argparse 解析的可选命令行参数设置。
目前,我在使用这些标志的任何函数之外的全局范围内都有这些标志,而不是将标志作为参数传递给函数。像这样:
import argparse
flag1=True
flag2=True
flag3=True
def fun1():
...
if flag1:
..something..
else:
..something else..
#fun1 also uses the other flags in a similar way
...
def fun2():
...
if flag2:
..something..
else:
..something else..
#fun1 also uses the other flags in a similar way
...
def main()
...
args=parser.parse_args()
...
global flag1
flag1=args.flag1
# and so on for the other flags
fun1()
fun2()
从这里的许多答案(例如this)中,我一直认为在 python 中使用全局变量是不好的做法。这也适用于这里吗?我有点不愿意将标志作为参数传递,因为我将传递太多变量作为参数。
处理由命令行参数设置的标志的最佳方法是什么?
【问题讨论】:
-
你可以做 def fun1(args)
-
您可以简单地将 args 作为参数传递,并且只需一个即可。
-
谢谢!会这样做!早该想到的。
-
但话又说回来,我也想知道并非针对这种特殊情况的其他解决方案。
标签: python global-variables command-line-arguments