def ness(): pIE='yum' vars()[pIE]=4 print vars()[pIE] print yum
所以,当我运行时,我得到这个结果:
>>> ness()4Traceback (most recent call last): file "<stdin>",line 1,in <module> file "<stdin>",line 5,in nessnameError: global name 'yum' is not defined
如果我不把它写成一个函数,只需在命令行中输入一行就可以正常工作,就像这样:
>>> pIE='yum'>>> vars()[pIE]=4>>> print vars()[pIE]4>>> print yum4>>>
编辑:
假设我想让事情比这更复杂,而不是将yum设置为值并打印该值,我定义了一些函数,并希望根据一些输入调用其中一个:
def ness(choo): dic={} dessert=() dnum=[10,100] desserts='pIE' dic[dessert]=str(desserts[bisect(dnum,choo)]) vars()[dic[dessert]]()def p(): print 'ummmm ummm'def i(): print 'hooo aaaaa'def e(): print 'woooo'
因此,当我打电话给我时,我得到一个关键错误:
>>> ness(3)Traceback (most recent call last): file "<stdin>",line 7,in nessKeyError: 'p'
现在我知道我可以用一些elif语句做这样的事情,但是我想知道这是否也会起作用,如果像这样使用bisect会比使用elifs更有效(比如我需要检查1000个值的值) .
非常感谢您的帮助.
解决方法 有办法用exec来做>>> def ness():... pIE='yum'... exec pIE+"=4"... print vars()[pIE]... print yum...>>>>>> ness()44
但是,不要这样做,使用新的字典更好,更安全
>>> def ness():... dic={}... pIE='yum'... dic[pIE]=4... print dic[pIE]... print dic['yum']...>>> ness()44>>>总结
以上是内存溢出为你收集整理的Python vars()全局名称错误全部内容,希望文章能够帮你解决Python vars()全局名称错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)