python vars name报错_Python vars()全局名称错误
我在理解以下功能出了什么問題時(shí)遇到了一些麻煩:
def ness():
pie='yum'
vars()[pie]=4
print vars()[pie]
print yum
所以,當(dāng)我運(yùn)行時(shí),我得到這個(gè)結(jié)果:
>>> ness()
4
Traceback (most recent call last):
File "", line 1, in
File "", line 5, in ness
NameError: global name 'yum' is not defined
如果我不把它寫成一個(gè)函數(shù),只需在命令行中輸入一行就可以正常工作,就像這樣:
>>> pie='yum'
>>> vars()[pie]=4
>>> print vars()[pie]
4
>>> print yum
4
>>>
編輯:
假設(shè)我想讓事情比這更復(fù)雜,而不是將yum設(shè)置為值并打印該值,我定義了一些函數(shù),并希望根據(jù)一些輸入調(diào)用其中一個(gè):
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'
因此,當(dāng)我打電話給我時(shí),我得到一個(gè)關(guān)鍵錯(cuò)誤:
>>> ness(3)
Traceback (most recent call last):
File "", line 1, in
File "", line 7, in ness
KeyError: 'p'
現(xiàn)在我知道我可以用一些elif語(yǔ)句做這樣的事情,但是我想知道這是否也會(huì)起作用,如果像這樣使用bisect會(huì)比使用elifs更有效(比如我需要檢查1000個(gè)值的值) .
非常感謝您的幫助.
總結(jié)
以上是生活随笔為你收集整理的python vars name报错_Python vars()全局名称错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java-web hibernate中的
- 下一篇: python附件发送到邮箱_python