成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 面試時千萬別這樣命名函數,因為這個被淘汰可太不值了

開發 前端
如果還沒有,建議大家親自安裝試一試,找到最適合自己的 Python 虛擬環境管理器。本篇文章我想給大家講講 Python 標識符命名的規范。

在《11款常用的Python虛擬環境管理器》這篇文章中,我介紹了 Python 的虛擬環境,不知道大家有沒有自己動手嘗試一下。

如果還沒有,建議大家親自安裝試一試,找到最適合自己的 Python 虛擬環境管理器。

本篇文章我想給大家講講 Python 標識符命名的規范。

為什么要講標識符命名呢?我講一個朋友的經歷,大家就知道了。

我有位朋友,咱們就叫他小白哥吧。

小白哥剛大學畢業那會兒,想轉行做 Python 數據分析,自學了一段時間,就去面試了。

只不過,在頭一次面試中他很快就被淘汰了。

為什么呢?請大家看下他寫的代碼。

1import pandas as pd
 2
 3# 讀取 Excel 文件中的數據
 4wenjian = 'shuju.xlsx'
 5shuju = pd.read_excel(wenjian, sheet_name='Sheet1')
 6
 7# 顯示前五行數據
 8print(shuju.head())
 9
10# 處理缺失值
11quchuqueshizhi = shuju.dropna()
12
13# 顯示處理后的數據
14print(quchuqueshizhi.head())

咱也不多寫了,就說面試官一看他那代碼,把他給 pass 了。

小白哥還追著問面試官問為啥啊,我這 Pandas 用得挺好的呀,數據都出來了,也統計對了。

面試官笑了一下,告訴他,就沖你這命名方式,我就能看出你的進步空間還很大,繼續努力吧,我看好你。

要知道,專業且規范的標識命名能體現出一位開發者的基本素養,也是一個開發團隊協作的重要基礎。

如果連命名規范都做不好,在面試時可就會貽笑大方啦。

廢話不多說,我盡量以最簡潔清晰的方式,以給函數命名為例,給大家介紹一下 Python 中給標識符命名的路數應該是怎樣的。

注:Python 代碼風格指南(https://peps.python.org/pep-0008/),即 PEP 8,包含更多命名規范相關內容,有興趣的朋友可以去看一下。

標識符命名的一些基本規則

Python 的標識符包括變量、常量、函數、類、類的方法、類的屬性等。標識符的命名規則主要有以下幾點。

  • 要遵循 Python 命名慣例 ~ PEP8。
  • 標識符的名稱可以使用大小寫英文字母、0~9、下劃線等字符。
  • 標識符的名稱不能以數字開頭。
  • 標識符的名稱支持使用中文、日文等 Unicode 字符,但為了代碼易讀、易懂,不推薦使用。
  • 標識符的名稱最好只使用 ASCII 中的字符,讓代碼更好讀。
  • 標識符的名稱要清晰易懂,容易理解才能易于維護。
  • 除非團隊約定或行內約定俗成,不要使用單個字母或英文單詞簡寫命名。
  • 不要使用拼音命名。

函數命名的一些基本規則

  • 函數名應清晰、簡潔地說明函數要執行的操作。如,read()。
  • 函數名應使用英文的動詞或以動詞開頭的多個單詞。如,read_excel()。
  • 函數名要使用小寫字母,如 find()。
  • 函數命名要遵循蛇形命名法。即,如果在函數名中包含多個單詞,則要使用下劃線分隔單詞。如,read_data_for_groupby()。
  • 蛇形命名法是 PEP 8 中函數命名的首選方法。

有效的函數名

  • find(),有效。
  • user_name(),有效,但不推薦,因為沒有表現出函數要執行的動作。
  • get_99_user_name(),有效。
  • _get_users(),可以以下劃線為開頭。
  • 獲取用戶名(),Unicode 中的字符是有效的,但不推薦使用。
  • hello?world(),? 作為 Unicode 中的標點符號是有效的,但不推薦使用。

無效命名

  • 10_users(),不能以數字開頭。
  • save_success!(),除了下劃線,不允許使用嘆號、問號等其他 ASCII 標點符號。

包含下劃線的命名法

  • 當函數名以單下劃線開頭時,如 _get_users(),表示這個函數是內部的,不能在模塊外部使用。
  • 當函數名以單下劃線結尾時,可以避免你的函數名與 Python 內置函數名或關鍵字發生沖突。如 import_(),可以避免與關鍵字 import 沖突, max_() 可以避免與內置函數 max() 沖突。
  • 當函數名以雙下劃線開頭時,主要用于類中的方法或屬性,也被稱為名稱修飾。Python 解釋器會修改使用這種命名方式定義類的屬性或方法的名稱,不能在類之外,甚至在子類中訪問該命名法定義的方法或屬性。這個知識點屬于類的內容,不在此贅述。
  • 以雙下劃線開頭和結尾的命名法被稱為 dunder 命名法,dunder 是 double underscore 的簡寫。在 Python 中這種方式也叫魔術方法,這種命名法主要用于定義類的方法和變量,示例如下。
1class UserInfo:
2    def __init__(self, id_number, username):
3        self.id_number = id_number
4        self.username = username
5
6    def __repr__(self):
7        return (
8          f"{type(self).__name__}({self.id_number}, {self.username})"
9        )

在 UserInfo 類中就包含了兩個魔術方法。

  • .__init__() 在創建類的實例時被調用,用于初始化對象。
  • .__repr__() 定義對象的字符串表示,包括類名及其參數的信息。

Python 內置的魔術方法很多,以后會有專門的文章介紹。

現在你只需要記住 dunder 命名法主要是用于 Python 內置的方法,自定義方法時應避免這種命名方式。

函數名要清晰易懂

代碼清晰、易懂是成熟開發者的重要標志。那么,如何才能起一個可讀性強的函數名呢?

例如,要編寫獲取單詞首字母的函數。

如果函數名如下所示,則既難理解該函數的目的,也容易引起混淆。

1def init(n):
2    return " ".join(f"{i[0]}." for i in n.split())

init 是 initial 的簡寫形式, 即首字母的意思,但它也有初始化的意思。

如果使用簡寫形式,既容易與 __init__() 混淆,還可能會被誤解為初始化。

因此,在起函數名時,盡量不要使用英文簡寫。

當然,更不要使用漢語拼音和單個字母。

那這個名字應該怎么起好呢?我們可以根據函數的功能 ~ “獲取首字母”,起一個直觀的名字。如 get_initials(),這個名字就清晰了。

當然也可以加入參數名和介詞,如 get_initials_from(fullname),這樣是不是就更直觀了?

大家不要害怕函數名太長會增加輸入的負擔,現代 IDE 都支持代碼自動補全,可以幫你快速輸入較長的名稱。

但也不要矯枉過正,還是要避免給函數起過長的名字。這就需要你折中取舍了,不過不用擔心,只要遵循本文的原則,你很快就會熟練起來的。

方法的命名慣例

方法(method)是什么?越是簡單的名詞越難以理解,我之前就搞不明白方法與函數的區別。

其實,方法和函數沒有什么本質上的區別,它只是在類中定義的函數,約定俗成地把它叫作“方法”罷了。

因此,在命名方法時也要遵循函數的命名慣例,使用蛇形命名法,并應以動詞或動詞開頭的多個單詞命名。如 check_user_age() 或 show_use_info()。

如果要在類定義某個方法,但又不想將其作為類的接口,并且不需要調用類中的這個方法時,則可以在方法名稱前添加單個下劃線,如 _check_user_age()。

這種方式不能阻止直接調用該方法,示例如下。

1class UserInfo:
2    def _check_user_age(self, age):
3        return self.age >= age

在 REPL 中輸入如下代碼,可以看到返回的內容。

1>>> from user_info import UserInfo
2>>> user = UserInfo("Johnson", 50)
3>>> user._check_user_age(25)
4False

以下劃線開頭的 _check_user_age() 方法不會在 VSCode 等 IDE 的代碼自動補全提示中顯示。但像在 REPL 中一樣,我們仍可以輸入并調用該方法。

到這里基本上就講完了函數名/方法名的命名規則了。下面再簡單介紹一下命名函數與命名其他標識符的異同之處。

函數與其他標識符命名規則的相同點

  • 都不能以數字開頭。
  • 都不能有除下劃線以外的 ASCII 標點符號。
  • 都應盡量避免使用單個字母或英文簡寫命名,除非是大家約定俗成的簡寫方式。
  • 變量也要使用小寫字母命名。
  • 變量也要使用蛇形命名法。

函數與其他標識符命名規則的不同點

  • 類使用首字母大寫的方式命名。
  • 類不使用蛇形命名法,而是使用大駝峰命名法,即所有首字母都大寫,如,UserInfor。
  • 還有一個是常量,常量也使用大寫字母命名,但使用下劃線分割多個單詞。如,TIME_LIMIT。

結語

本文主要介紹了以下知識點。

  • Python 的代碼風格指南(PEP8)是 Python 好好學習的參考手冊,這里介紹一個支持庫,叫 autopep8,大家可以安裝使用。
  • Python 標識符的命名基本規則。
  • Python 函數/方法命名的基本規則與示例。
  • 下劃線在標識符命名中的特殊作用。
  • 函數與其他標識符的命名的異同。

總之,Python 標識符的命名很重要,既涉及代碼可讀性,也涉及開發團隊的協作,大家一定要規范命名。

責任編輯:武曉燕 來源: Python學研大本營
相關推薦

2024-11-07 10:04:48

2018-03-27 10:15:58

微信紅包個人信息

2010-08-09 16:30:53

面試

2020-12-18 15:08:17

微信詐騙移動應用

2012-02-21 09:22:45

2019-06-26 08:30:32

計算機互聯網iOS

2011-02-22 09:24:30

諾基亞微軟

2009-07-03 16:21:58

IT系統數據中心運維管理

2021-08-06 09:20:41

IT管理IT領導者CIO

2022-03-08 09:00:00

Kubernetes容器技術

2011-07-08 13:34:16

2014-09-10 10:14:14

2018-10-11 09:00:00

軟件開發代碼用戶

2022-04-21 10:28:49

支付寶賬號

2021-01-30 11:09:05

技術Java面試

2020-06-11 16:15:25

Java線程池代碼

2017-04-21 13:50:37

硬盤磁盤

2017-12-25 08:55:45

網站虛擬主機

2020-12-07 07:48:35

K8sDockerKubernetes

2012-08-20 14:09:29

面試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲人的av | 国产一区二区三区四区 | 欧美在线a | 午夜激情在线 | 久久精品91久久久久久再现 | 久久精品免费观看 | 国产精品激情在线 | 91色站| 欧美一区二区在线观看 | 91在线 | 色资源在线 | 激情欧美一区二区三区中文字幕 | 日韩在线免费 | 99热精品在线观看 | 亚洲国产欧美日韩 | 最近最新中文字幕 | 中文字幕乱码一区二区三区 | 嫩草网| 久久久国产一区二区三区 | 亚洲综合二区 | 在线一区 | 久久亚洲一区二区三区四区 | 祝你幸福电影在线观看 | 韩日在线观看视频 | 亚洲91视频| 日韩不卡一区二区 | 国产精品久久 | 香蕉视频在线播放 | 在线观看不卡av | 成人黄视频在线观看 | 国产欧美一区二区三区在线看 | 中文字幕 亚洲一区 | 欧美日韩综合 | 久久久精品 | 久久精品综合网 | 国产羞羞视频在线观看 | 中文字幕国产一区 | 欧美一区不卡 | 亚洲在线成人 | 国产一区二区三区日韩 | 韩国av网站在线观看 |