在功能def test(**params)
,我怎麼使用的**params
的鑰匙,通過創建與kwargs.keys()
值kwargs.values()
,我可以在我的功能test
內使用命名變量?蟒蛇:** kwargs變量
回答
編輯:這種方法在大多數情況下不起作用。我在IPython中測試它在外部環境中的工作。
您應該只使用kwargs __get__
查找。這是不好的做法,
~~但如果你堅持要創建這些變量,你可以這樣做:locals().update(kwargs)
。這樣做使該代碼有效:~~
def foo(**kwargs):
locals().update(kwargs)
return a + 3
print(foo(a=3))
~~將輸出6 ~~
將輸出NameError:名字 '一' 是沒有定義
編輯:這作品
我真的很驚訝,更新的本地人不能在標準的解釋器中工作。我也發現eval也不起作用。多年來,我一直在IPython中使用這樣的技巧。看看Modifying locals in Python看起來你曾經可以在Python 2中使用exec來完成這項工作,但它在Python 3中不再有效(這可能是件好事)。
但是,我發現我認爲可行的黑客攻擊。再次,請不要在實踐中這樣做。
def foo(**kwargs):
foo.__globals__.update(kwargs)
return a + 3
print(foo(a=3))
再一次,我必須指出[不,這實際上並不奏效](http://ideone.com/XT1WzC)。 – user2357112
從[文檔](https://docs.python.org/3.6/library/functions.html#locals):「注意不應修改此字典的內容;更改可能不會影響本地和免費的值解釋器使用的變量「。 –
是的,但現在污染了*全局範圍*。另外,在IPython中修改'locals'也不起作用,所以我不確定你看到了什麼行爲。 –
- 1. 蟒蛇調用與kwargs
- 2. 蟒蛇變量
- 3. 變量,蟒蛇2.7
- 4. 如何使用kwargs在matplotlib.axes.Axes.arrow蟒蛇2.7
- 5. 地圖kwargs返回nonetype蟒蛇
- 6. 理解蟒蛇類變量
- 7. 導入類變量蟒蛇
- 8. xlrd動態變量蟒蛇
- 9. 蟒蛇全局變量
- 10. 蟒蛇SQL變量WHERE
- 11. 忽視蟒蛇變量
- 12. 蟒蛇靜態變量
- 13. 多變量蟒蛇像PHP
- 14. 閱讀蟒蛇變量
- 15. 把蟒蛇變量放入cleardb
- 16. 蟒蛇:在while循環變量
- 17. 訪問變量類下的蟒蛇
- 18. 蟒蛇peewee插入,與表名變量
- 19. 蟒蛇環路檢查變量
- 20. MATLAB變量保存爲蟒蛇格式
- 21. 訪問蟒蛇變量列表
- 22. 無法能夠使用變量(蟒蛇)
- 23. argparse蟒蛇2個自選單變量
- 24. 蟒蛇引發變量內的異常
- 25. 讀/從MySQL使用變量蟒蛇
- 26. 蟒蛇分配變量混亂
- 27. 蟒蛇'常量',並改變他們
- 28. 用新行返回變量蟒蛇
- 29. 蟒蛇全局變量的麻煩
- 30. 蟒蛇解方程爲未知變量
爲什麼不直接使用'params ['keyname']'?爲什麼你需要單獨的局部變量?您不能動態地將新的本地名稱添加到函數體中。 –
即使你這樣做了,假設他們調用'test(foo = 3)',並且你將一個'foo'局部變量初始化爲'3'。除非'test'主體已經使用'foo',你基本上不能對這個變量做任何事情,如果它*已經使用'foo',爲什麼不定義一個常規的'foo'參數而不是隻是'** params'? – user2357112