我使用以下脚本直接运行该脚本,只是制作一个bash命令行以在脚本之外运行它(例如Job Scheduler)。
def qsubcommand(func):
def wrapper(*args, **kwargs):
if kwargs.get('test', False):
cmdl = ' '.join(['this.py', func.__name__, *map(str, args)])
return cmdl
else:
return func(*args, **kwargs)
return wrapper
@qsubcommand
def calculate(value1, value2):
# do something
if __name__ == '__main__':
if len(sys.argv) > 1:
func, args = sys.argv[1], sys.argv[2:]
if func in locals().keys():
locals()[func](*args)
else:
raise NotImplementedError
我有很多功能,例如“计算”。 我正在使用脚本来运行和测试程序。
# When I want to run directly:
>>> calculate(4, 5)
# When I want to just print command line:
>>> calculate(4, 5, test=True)
'this.py calculate 4 5'
但是,我想以上下文相关的方式使用它,如下所示。
# When I want to run directly:
>>> test = False
>>> calculate(4, 5)
# When I want to just print command line:
>>> test = True
>>> calculate(4, 5)
'this.py calculate 4 5'
如何修改以使函数识别范围之外的变量。 是否可以在函数外部访问变量?
谢谢您的友好回答。
答案 0 :(得分:1)
只需将其放在要检查变量的函数部分:
if 'test' in globals() and test:
# do test
else:
# do normal
函数始终可以访问函数范围之外的变量,如果您不使用global关键字,它们将无法编辑它们。