最近碰到這麼個問題,有這麼個函數,用來將HTML轉義字元變回原來的字元:
其中unichr用來將一個整數轉換成Unicode字元,僅在Python2中存在。Python3中,chr可以同時處理ASCII字元和Unicode字元。所以我們在Python3環境中將unichr映射到chr上。
運行這段代碼會在第8行報錯:NameError: free variable ‘unichr’ referenced before assignment in enclosing scope。而且只有Python2會報錯,Python3不會。
首先從問題上看,報錯的原因是在閉包replc里unichr沒有定義。
但是Python2明明是有unichr這個內置函數的,為啥就變成未定義呢?