Я использовал следующий скрипт, чтобы запустить скрипт напрямую и просто сделать командную строку bash для запуска его вне скрипта (например, планировщик заданий).
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'
Как я могу изменить, чтобы функция могла распознавать переменную вне области видимости
Можно ли получить доступ к переменной вне функции?
Спасибо за ваши добрые ответы заранее.