【发布时间】:2019-08-03 16:26:43
【问题描述】:
试图找到一种解决 UnboundLocalError 的 Pythonic 方法。在这个示例文件中,我希望能够将函数导入另一个 python 脚本(所以我不能在main() 之前声明thisfile,flag1)。 string = 只是表明我想使用flag1 作为局部变量的一种方式。
什么是好的解决方法? (我宁愿不通过索引sys.argv[1] 来访问flag1。只是我的偏好。)
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()
【问题讨论】:
标签: python function global main