簡體   English   中英

解釋locals()及其工作原理

[英]Explain locals() and exactly how it works

有人可以解釋一下這小段代碼如何工作嗎?

info = {}
info.update(locals())
info.pop('self', None)
info.pop('info', None)

我是假設的人,如果我錯了,請糾正我,但是它會獲取當前函數中的所有變量,然后將它們放在dict中,並刪除self和它放入的dict,對嗎? 除了自我和我可能不想去的字典,還有別的嗎?

僅用JSON序列化該字典並將其發布會有什么問題嗎?

這可能來自Django模板和本地技巧 這個想法是在函數內部填充多個變量,然后使用locals()將它們傳遞給模板。 它節省了使用所有這些變量創建新字典的工作。

具體來說,您的代碼創建了所有局部變量的字典,並刪除了self (類對象參數)和info (剛剛創建的變量)。 返回所有其他局部變量。

然后,只要可以序列化數據,就可以對數據進行JSON序列化。 例如,必須先將DateTime變量轉換為字符串。

該代碼創建了一個名為'info'的新字典,並將所有本地python變量分配給它。 注意:這些是指向同一個對象在本地環境,因此,如果您修改列表或字典info將在您的環境中也改變了(這可能是也可能不是所期望的行為)。

locals()更新並返回代表當前本地符號表的字典。 當在功能塊中調用免費變量時,它是由locals()返回的,而不是在類塊中調用。

注意:此字典的內容不應修改; 更改可能不會影響解釋器使用的局部變量和自由變量的值。

info.pop('self', None)info.pop('info', None)將從您的新info字典中分別刪除'self'和'info'。 如果不存在,則返回None 請注意,如果字典中未info.pop('self')info.pop('self')將返回info.pop('self')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM