python中的setdefaulten
- 2020 年 1 月 9 日
- 筆記
http://blog.csdn.net/magicharvey/article/details/20055949
主題 Python
#!/usr/bin/env python #encoding: utf-8 import sys #引用sys模組進來,並不是進行sys的第一次載入 reload(sys) #重新載入sys sys.setdefaultencoding('utf8') ##調用setdefaultencoding函數
可以正確的執行,可是下面的程式碼會出錯
#!/usr/bin/env python #encoding: utf-8 import sys sys.setdefaultencoding('utf8')
要在調用setdefaultencoding時必須要先reload一次sys模組,因為這裡的import語句其實並不是sys的第一次導入語句,也就是說這裡其實可能是第二、三次進行sys模組的import,這裡只是一個對sys的引用,只能reload才能進行重新載入。
那麼為什麼要重新載入,而直接引用過來則不能調用該函數呢?因為setdefaultencoding函數在被系統調用後被刪除了,所以通過import引用進來時其實已經沒有了,所以必須reload一次sys模組,這樣setdefaultencoding才會為可用,才能在程式碼里修改解釋器當前的字元編碼。
在python安裝目錄的Lib文件夾下,有一個叫site.py的文件,在裡面可以找到main() –> setencoding()–>sys.setdefaultencoding(encoding),因為這個site.py每次啟動python解釋器時會自動載入,所以main函數每次都會被執行,setdefaultencoding函數一出來就已經被刪除了。