最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python之變量命名規(guī)則詳解

 更新時間:2025年09月27日 09:31:04   作者:Le0v1n  
Python變量命名需遵守語法規(guī)范(字母開頭、不使用關(guān)鍵字),遵循三要(自解釋、明確功能)和三不要(避免縮寫、語法錯誤、濫用下劃線)原則,確保代碼易讀易維護

在 Python 編程中,變量命名看似是 “小事”,卻直接影響代碼的可讀性、可維護性,甚至團隊協(xié)作效率。

糟糕的命名會讓后續(xù)調(diào)試、迭代變得舉步維艱 —— 想想看,當(dāng)你接手一個包含a1str_1、func_x這類變量的項目時,是不是要花大量時間猜測它們的用途?

這篇文章將從 “基礎(chǔ)規(guī)則” 到 “進階規(guī)范”,結(jié)合 “三要三不要” 原則,避開常見坑。

1. 硬性規(guī)則

在談 “規(guī)范” 之前,必須先明確 Python 語法層面的 “強制要求”—— 違反這些規(guī)則,代碼會直接報錯,根本無法運行。

只能包含字母、數(shù)字和下劃線變量名的第一個字符必須是字母(a-z, A-Z)或下劃線(_),不能以數(shù)字開頭。

  • ? 合法:user_name、age_18_total_score
  • ? 非法:18_age(以數(shù)字開頭)、user-name(包含連字符)、user@name(包含特殊符號)

區(qū)分大小寫Python 對大小寫敏感,Useruser是兩個完全不同的變量。示例:

user = "Lyle"
User = "Tom"

print(user)  # 輸出:Lyle
print(User)  # 輸出:Tom

不能使用關(guān)鍵字 / 保留字關(guān)鍵字是 Python 內(nèi)置的、有特殊含義的單詞(如if、for、class等),不能作為變量名。如何查看所有關(guān)鍵字?可以用以下代碼:

import keyword

print(keyword.kwlist)
print(len(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
35

? 錯誤示例:if = 10if是關(guān)鍵字)、class = "學(xué)生"class是關(guān)鍵字)

2. “三要” 原則

語法規(guī)則保證代碼能運行,而 “三要” 原則則保證代碼 “好讀、好維護”。核心思路是:讓變量名 “自解釋”,減少注釋依賴

2.1. 要體現(xiàn)變量的 “實際作用”,拒絕 “無意義命名”

如果一個變量名只能告訴你 “它是個字符串” 或 “它是個數(shù)字”,卻無法說明 “它存的是什么內(nèi)容”,那就是無效命名。

? 反面示例:str_1、num_1分別存的是什么?—— 需要猜!

str_1 = "zhangsan@example.com"
num_1 = 25

print(f"用戶信息:{str_1}, {num_1}")

? 正面示例:一看就知道存的是“用戶郵箱”和“用戶年齡”

user_email = "zhangsan@example.com"
user_age = 25

print(f"用戶信息:{user_email}, {user_age}")

2.2. 要讓變量名 “自解釋”,減少注釋依賴

如果一個變量需要額外加注釋才能說明用途,說明命名效率極低 —— 工程變大后,變量可能出現(xiàn)在多個文件中,注釋容易遺漏或過時,導(dǎo)致可讀性驟降。

? 反面示例(依賴注釋):

# 注釋:這個變量存的是用戶是否已實名認證(True=已認證,F(xiàn)alse=未認證)
user_flag: bool = True  # 問題:flag太泛,沒有說明“什么flag”

? 正面示例(自解釋,無需注釋):

# 優(yōu)點:變量名直接說明“用戶是否已實名認證”,無需額外注釋
user_is_certified: bool = True

2.3. 函數(shù)命名要 “明確功能”,不要怕 “長”

函數(shù)名的核心是 “說明它做什么”,而不是 “它是什么類型”。很多新手怕函數(shù)名太長,用func1、do_something這類泛泛的名字,反而增加理解成本 ——清晰比簡短更重要。

? 反面示例:

# 問題:func1做什么?需要讀函數(shù)內(nèi)部代碼才知道
def func1(data):
    return [x for x in data if x > 60]

# 調(diào)用時一臉懵:傳什么data?返回什么結(jié)果?
result = func1([85, 40, 72, 58])

? 正面示例:

# 優(yōu)點:函數(shù)名直接說明“篩選列表中大于60的元素”
def filter_scores_above_60(scores):
    return [score for score in scores if score > 60]

# 調(diào)用時一目了然:傳“分?jǐn)?shù)列表”,得“及格分?jǐn)?shù)”
passed_scores = filter_scores_above_60([85, 40, 72, 58])
print(passed_scores)  # 輸出:[85, 72]

3. “三不要” 原則(??避坑指南)

除了 “要做什么”,更要明確 “不要做什么”—— 這些細節(jié)容易被忽略,卻會讓代碼變得混亂。

3.1. 不要 “自造縮寫”

縮寫的目的是簡化命名,而不是制造 “密碼”。如果你的縮寫只有自己能懂,團隊其他人需要花時間猜測,就失去了意義。必須使用行業(yè)或 Python 社區(qū)通用的縮寫

? 反面示例(自造縮寫):

# 問題:nm和thrs是什么?第一次接觸代碼的成員可能看不懂

nm: str = 'Lyle'
thrs: float = 30.0  # 自造:thrs=threshold
pwd = "123456"   # 自造:pwd=password(雖常見,但建議寫全password更清晰)

? 正面示例(通用縮寫):

# 通用縮寫:id(identity)、url(Uniform Resource Locator)、http(HyperText Transfer Protocol)

user_id: str = "1001"
user_password: str = "123456"  # 密碼建議寫全,避免歧義
config_path: str = "config.ini"

# 復(fù)雜場景可用通用縮寫(如API、SDK)
api_key: str = "abc123def456"
sdk_version: str = "3.8.0"

3.2. 不要忽略 “英文語法”,注意單復(fù)數(shù)、動名詞

變量名的語法錯誤會傳遞錯誤信息 —— 比如用單數(shù)表示 “多個元素”,用名詞表示 “一個動作”,都會誤導(dǎo)。

? 反面示例(語法錯誤):

# 問題1:user存的是列表(多個用戶),卻用單數(shù)
user = ["Lyle", "Tom", "Jerry"]
print(f"用戶數(shù)量:{len(user)}")  # 邏輯上沒問題,但語法誤導(dǎo)

# 問題2:get_user是“獲取用戶”的動作,卻用來存“用戶信息”(名詞)
get_user = "Tony"

# 問題3:calculate_total是動詞短語,卻用來存“結(jié)果”(名詞)
calculate_total = 1500  # 實際是“總金額”

? 正面示例(語法正確):

# 規(guī)則1:單數(shù)表“單個”,復(fù)數(shù)表“多個”
users = ["Lyle", "Tom", "Jerry"]  # 列表用復(fù)數(shù)
print(f"用戶數(shù)量:{len(users)}")

# 規(guī)則2:變量用“名詞”,函數(shù)用“動詞/動名詞”(表動作)
user_info = "Tony"  # 變量:名詞(用戶信息)
total_amount = 1500  # 變量:名詞(總金額)

# 規(guī)則3:函數(shù)用“動詞開頭”(如get_、filter_、calculate_)表動作
def get_user_info(user_id):  # 函數(shù):動詞(獲取用戶信息)
    return f"用戶ID {user_id} 的信息"

3.3. 不要 “濫用下劃線”,避免過長或冗余

下劃線是 Python 推薦的 “蛇形命名法”(snake_case)的核心,但不是越多越好。冗余的下劃線會讓變量名變長,反而降低可讀性。

? 反面示例(濫用下劃線):

# 問題1:冗余的“_of”“_for”,可簡化
user_name_of_student = "Lyle"  # 簡化為 student_name
score_list_for_math = [90, 85, 92]  # 簡化為 math_scores

# 問題2:無意義的前綴,增加長度
var_user_age = 20  # 前綴var_毫無意義,直接用user_age
data_order_total = 300  # 前綴data_冗余,直接用order_total

? 正面示例(簡潔合理):

student_name = "Lyle"
math_scores = [90, 85, 92]
user_age = 20
order_total = 300

4. QA

4.1. 變量名用 “蛇形命名法” 還是 “駝峰命名法”?

Python 官方推薦蛇形命名法(snake_case,全小寫 + 下劃線分隔),適用于變量、函數(shù)、模塊;而駝峰命名法(CamelCase,首字母大寫)主要用于類名(如UserInfo、StudentScore)。

示例:

# 蛇形命名法(變量、函數(shù))
user_address = "北京市朝陽區(qū)"
def calculate_discount(price):
    return price * 0.8

# 駝峰命名法(類名)
class UserInfo:
    def __init__(self, name, age):
        self.name = name
        self.age = age

4.2. 什么時候用 “單下劃線開頭” 的變量(如_user_name)?

這是 Python 的 “約定俗成”,表示該變量是 “內(nèi)部變量”,不建議外部直接訪問(類似其他語言的 “私有變量”)。雖然語法上不強制限制,但能提醒其他開發(fā)者 “不要隨便修改”。

示例:

class Student:
    def __init__(self, name, score):
        self.name = name  # 公開變量,外部可訪問
        self._score = score  # 內(nèi)部變量,建議外部通過方法訪問
    
    # 外部通過這個方法獲取分?jǐn)?shù),而不是直接訪問_score
    def get_score(self):
        return self._score

4.3. 變量名太長怎么辦?

比如有一個變量的名稱為calculate_monthly_user_payment_total。

首先,“長” 不是問題,“不清晰” 才是問題。如果確實過長,可以通過以下方式優(yōu)化:

  1. 檢查是否有冗余詞(如calculate可簡化為calc,但需團隊認可);
  2. 拆分邏輯(比如將復(fù)雜計算拆成多個小函數(shù),變量名自然簡化)。示例優(yōu)化:

Tip:Apple公司的變量名和函數(shù)名都非常長,但卻得到很多人的認可

# 原長變量名
calculate_monthly_user_payment_total = 5000

# 優(yōu)化:拆分邏輯,變量名更簡潔
def calc_user_payment(monthly_fee):
    return monthly_fee * 12  # 假設(shè)年付是月付的12倍

user_yearly_payment = calc_user_payment(5000)  # 簡化為“用戶年付款”

4.4. 可以用中文作為變量名嗎?

考慮到代碼的一致性,不推薦使用中文命名,但如有必要也可以使用中文進行命名

5. 總結(jié)

最后,用一句話總結(jié) Python 變量命名的核心:讓變量名像 “說明書” 一樣清晰,讓別人(包括 3 個月后的你)看一眼就知道它的用途。

記住三個核心點:

  1. 先遵守 “硬性規(guī)則”(字母 / 數(shù)字 / 下劃線、區(qū)分大小寫、不碰關(guān)鍵字);
  2. 再踐行 “三要”(體現(xiàn)作用、自解釋、函數(shù)名明確);
  3. 避開 “三不要”(不造縮寫、不忽略語法、不濫用下劃線)。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何在PyCharm中安全地設(shè)置和使用API Key方式

    如何在PyCharm中安全地設(shè)置和使用API Key方式

    在PyCharm中,通過運行配置添加API_KEY環(huán)境變量,使用os.environ或os.getenv在代碼中引用,確保安全性,避免硬編碼,推薦設(shè)置默認值或提示
    2025-07-07
  • matplotlib.pyplot繪圖顯示控制方法

    matplotlib.pyplot繪圖顯示控制方法

    今天小編就為大家分享一篇matplotlib.pyplot繪圖顯示控制方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python實現(xiàn)的掃碼工具居然這么好用!

    Python實現(xiàn)的掃碼工具居然這么好用!

    二維碼作為一種信息傳遞的工具在當(dāng)今社會發(fā)揮了重要作用.從手機用戶登錄到手機支付,生活的各個角落都能看到二維碼的存在.那你知道二維碼是怎么解析的嗎?有想過自己實現(xiàn)一個掃碼工具嗎?如果想的話就繼續(xù)看下去吧!需要的朋友可以參考下
    2021-06-06
  • 深入淺析python變量加逗號,的含義

    深入淺析python變量加逗號,的含義

    這篇文章主要介紹了python變量加逗號,的含義,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • python networkx 包繪制復(fù)雜網(wǎng)絡(luò)關(guān)系圖的實現(xiàn)

    python networkx 包繪制復(fù)雜網(wǎng)絡(luò)關(guān)系圖的實現(xiàn)

    這篇文章主要介紹了python networkx 包繪制復(fù)雜網(wǎng)絡(luò)關(guān)系圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • pytorch中函數(shù)tensor.numpy()的數(shù)據(jù)類型解析

    pytorch中函數(shù)tensor.numpy()的數(shù)據(jù)類型解析

    這篇文章主要介紹了pytorch中函數(shù)tensor.numpy()的數(shù)據(jù)類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Django實現(xiàn)WebSocket在線聊天室功能(channels庫)

    Django實現(xiàn)WebSocket在線聊天室功能(channels庫)

    本文基于channels庫Django實現(xiàn)WebSocket在線聊天室功能,包括安裝及創(chuàng)建django項目的全過程,通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Python連接KingbaseES數(shù)據(jù)庫完整指南

    Python連接KingbaseES數(shù)據(jù)庫完整指南

    本文詳細介紹了如何使用psycopg2連接KingbaseES數(shù)據(jù)庫,包括環(huán)境準(zhǔn)備、基本連接、執(zhí)行查詢和數(shù)據(jù)操作、連接池使用、大對象處理以及常見問題排查,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • 對python過濾器和lambda函數(shù)的用法詳解

    對python過濾器和lambda函數(shù)的用法詳解

    今天小編就為大家分享一篇對python過濾器和lambda函數(shù)的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python Pydantic數(shù)據(jù)驗證的實現(xiàn)

    Python Pydantic數(shù)據(jù)驗證的實現(xiàn)

    本文主要介紹了Python Pydantic數(shù)據(jù)驗證的實現(xiàn)
    2025-04-04

最新評論

彰武县| 中宁县| 武隆县| 兰考县| 平顶山市| 荆门市| 辽宁省| 理塘县| 嘉兴市| 阳原县| 屯昌县| 临西县| 诏安县| 基隆市| 贵定县| 襄城县| 固原市| 丰县| 剑河县| 海宁市| 阿城市| 崇州市| 鹤峰县| 安图县| 盖州市| 鄂托克前旗| 浪卡子县| 博爱县| 安庆市| 沂南县| 华亭县| 临清市| 巧家县| 庄河市| 德江县| 定西市| 华池县| 湖南省| 敦化市| 会泽县| 加查县|