1
我知道在我的腸道里這是不好的,我只是不能把我的手指放在原因。使用全球詞典似乎不好,但爲什麼呢?
variable = globals()['__builtins__'][sys.argv[1]]
對於項目中,我將實現一個字典,將得到的類名我命令行所需要的,這樣我就可以限制和控制的有效輸入。但是我最初寫的那樣,然後就像是等待,那很糟糕。我只是不能把話說清楚爲什麼。
有沒有人知道一篇文章或以前回答可能解決這個問題?
有一種更直接的方式來獲得你想要的東西。 'getattr(__ builtins__,sys.argv [1])'會做同樣的事情。 – 2013-05-10 20:52:20
首先,因爲您總是訪問'globals'的相同密鑰,並且在編寫代碼時知道這個密鑰是什麼,只需要首先編寫'__builtins__'而不是'globals()['__ builtins __']'。另一方面,我沒有任何版本的Python可以訪問甚至允許你執行'__builtins __ [foo]';你甚至是否得到這個代碼運行? – jwodder 2013-05-10 20:57:19
@jwodder:'__builtins__'(可在當前模塊名稱空間中使用)[可以是'__builtin__'模塊(Python 3中的'builtins'模塊)或其''.__ dict__'(後者具有'[]'支持)](https://www.pythonanywhere.com/gists/5557682/show_builtins_type.py/python2/)。 – jfs 2013-05-10 21:49:34