日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python变量名要求_Python中用中文变量名、函数名,会影响性能吗?

發布時間:2025/3/11 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python变量名要求_Python中用中文变量名、函数名,会影响性能吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,python這樣的語言,只能做有限的"詞法編址"(lexical address),不可能實現 @王加加 所說的“所有變量名函數名等名稱,在轉成字節碼后,只是一個個地址,名稱只是在寫代碼的時候增加可讀性。”

為什么呢?因為很多動態語言使用的基本方法是“延遲綁定”(late binding)。這代表了兩個意思:創建綁定的過程是動態的

在環境里尋找綁定的過程也是動態的

我也可以斷言,python是不能完全避免“延遲綁定”的。

我沒有用過python,也不清楚python的實現,為什么我敢如此斷言呢?因為以下代碼可以在python解釋器里執行:

somename = input()

def a():

return 2

exec("def{}():\nreturn 1".format(somename))

print(a())

在shell里運行效果如下:

ayanamists@DESKTOP-KBI2TVT:~$ python test.py

"a"

1

顯然地,在執行之前的任何一個階段,都不可能知道a會綁定上什么東西。

至于那位答主根據字節碼給出的結果, 我在他的代碼中加上一行:

import dis

def a(s):

exec("s = 0")

return s+1

dis.dis(a)

print(a(1))

結果是

ayanamists@DESKTOP-KBI2TVT:~$ python test.py

3 0 LOAD_CONST 1 ('s = 0')

3 LOAD_CONST 0 (None)

6 DUP_TOP

7 EXEC_STMT

4 8 LOAD_FAST 0 (s)

11 LOAD_CONST 2 (1)

14 BINARY_ADD

15 RETURN_VALUE

1

這反而說明解釋器必須在運行時知道‘s’這個標識符對應的是0號局部變量。

綜上所述,python在編譯成字節碼時確實進行了一定的詞法編址工作,把一些綁定映射為了一個“地址”,但由于無法避免某些【延遲綁定】的出現,它不可能真正地扔掉標識符,某些時候仍然需要用標識符來尋找綁定。

至于題主的問題,從上面的分析可以看出如果沒有用標識符尋找綁定的過程,對性能沒有任何影響

如果有,影響最大的因素也應該是【標識符編碼后的長度】,當然,utf-8編碼下,非ascii字符確實比ascii字符要長,不過用python這種語言的時候,根本無需糾結這點性能。

另外,有些人不喜歡用非ascii字符做標識符,這無可厚非。但標識符這東西,只要你自己、和你合作的人看得懂、看得舒服就可以。別人怎么說,不太重要。

總結

以上是生活随笔為你收集整理的python变量名要求_Python中用中文变量名、函数名,会影响性能吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。