Попытка найти питонский способ обхода ошибки UnboundLocalError.В этом примере файла я хочу иметь возможность импортировать функции в другой скрипт Python (поэтому я не могу объявить thisfile,flag1
до main()
).string =
- это просто способ показать, что я хочу использовать flag1
в качестве локальной переменной.
Какой хороший обходной путь?(Я бы предпочел не получать доступ к flag1
путем индексации sys.argv[1]
. Просто мои предпочтения.)
def somefunction(flag1=flag1):
string = "I just want to use the flag1 var (%(flag1)s)" % locals()
def main():
somefunction()
if __name__ == '__main__':
thisfile, flag1 = sys.argv
main()
=====
OUT: UnboundLocalError: local variable 'flag1' referenced before assignment
ОБНОВЛЕНИЕ: Итак, я не сказал, что на самом деле я делаю в somefunction
- там я создаю файл sbatch с общим каркасом и заполняю переменные, поэтому мне нужно, чтобы flag1
был локальным, и я бы не стал передавать его через кучу функций или создавать несколько строкесли возможно (так выглядит красивее).
def somefunction():
sometext = gettext()
firstvar = getfirstvar()
string = '''!/bin/bash
#SBATCH --flags
./some_program --generic-flag 18 --used-every-time /some/path \
--needed-var %(sometext)s --first-var %(firstvar)s \
--final-flag %(flag1)s
''' % locals()
def main():
somefunction()
if __name__ == '__main__':
thisfile, flag1 = sys.argv
main()