python中下劃線開頭的命名_Python 中各種下劃線的騷操作:_、_xx、xx_、__xx、__xx__、_classname_...

我們在定義一些變量或者方法的時候,常常會用到下劃線,在 Python 中,下劃線可是很有用處的喲,比如變量,有些是一個下劃線開頭的(_xx),有些是兩個下劃線開頭的(__xx),有些是在名稱的結尾添加下劃線的(xx_),還有一些方法我們常常看到兩個下劃線開頭和結尾的(__xx__) 等等…為什么要這么寫呢?它們都代表什么意思?我們以后如何定義好這些名稱呢?那么接下來就是:學習 Python 的正確姿勢fb066e111361eb9d4cb49e997b347ccb.png1、只有一個下劃線(_)是干嘛的呢?在 Python 解釋器里面,對單個下劃線是有特殊的 “感情” 的,我來給你舉個例子:
e12c42ee323deb9cb5cd9c5e9a638415.png
仔細看你會發現,_ 是有值的,這是因為在 Python 解釋器里面, _ 會指向你最后一次執行的表達式。這在我們使用 Python 交互的時候常常會用到。除此之外,我們還可以使用單個下劃線來格式化變量的值,比如金額:
e0f71c6507f4ddb64c8e2b50de7bafee.png
通過這樣的表現,我們能更加易讀, Python 也知道我們在表示什么。再者,單個下劃線還可以使用在循環語句中:
8450e977df7e2261a6ba73637cb94466.png
2、你常見的?__xx__這種以兩個下劃線開頭和結尾的命名方式,我想應該是你最常見到的了,比如我們之前說的類的初始化方法:
6b4f9be7fd95b7bce70abaae45cd105d.png
其實這些,我們叫它們為 “魔法函數” ,也就是說,它是 Python 內置好了的,我們可以直接拿來使用。所以你應該盡量避免做這樣類似的以兩個下劃線開頭和結尾的方式去命名。3、單個下劃線開頭的?_xx以單個下劃線開頭命名的方法或者變量,就是說明它是僅提供內部使用的。舉一個例子,我們來創建一個模塊(handsomeb.py),然后在里面創建兩個方法,一個以單個下劃線開頭命名,一個不以單個下劃線開頭命名:
280f9d8b5db522ad041e3860ff99439a.png
接著我們去引用這個模塊,分別執行模塊中的方法:
bd4651850f641f60ebee6f81bb45b058.png
當我們去執行 my_func() 輸出 fxxkpython ,沒毛病吧:
b86fbec7f44048f86412670e3b88f16b.png
但是當我們去執行 _my_func() 的時候就不行了:
f4283a57c19e0b73bb3f059d82beac74.png
這時候它告訴我們 _my_func 沒有定義,它只能被模塊內部使用。4、單個下劃線結尾的?xx_我們知道, Python 有許多關鍵詞,比如 def、return、calss、pass 這些,它們都是有特殊的意義的,所以我們在定義變量或者方法的時候,不可以用它們來命名的,比如這樣是錯誤的:
ebf7690bda5cc7d603bcc3328cbc54dd.png
那么如果我們死都要這樣定義名稱呢?為了區分,在它們的后面添加一個下劃線:
2cdcb268b5564889bacdd35f96a92c18.png
但是小帥b不建議這樣命名,有那么多名稱,何必去定義關鍵詞相關的名稱呢。5、兩個下劃線開頭的命名:?__xx這種命名的方式更多的是用在類的繼承,通過兩個下劃線開頭命名的成員,可以防止被子類重寫。我們來寫一個這樣的 Person 類:
5693f4c315064f14b04740841630bd24.png
可以看到,在 Person 這個類里面,有兩個變量,一個是 name ,一個是 age。不過 age 是以兩個下劃線開頭命名了。當我們去實例化這個 Person 的時候,發現 name 可以正常訪問,但是 __age 無法訪問了。我們來打印一下這個對象的屬性:
87faae6709e0677d33f0a60c3359eeb4.png
仔細看,name 還是 name, 但是 __age 變成了 _Person__age。所以我們無法重寫原來的 __age:
20ce8b8b6109814014403c5a1c354ebc.png
我們來打印一下這個 Son 類的屬性:
b8945ea6104ec580ea383a384e7663d2.png
可以發現,son 里面的 __age 實質上已經變成了 _Son__age。所以你要得到真正重寫的值可以這樣:
c163bf448ecfa00ecd43a5e03bf18cd2.png
6、一個下劃線+類名+兩個下劃線開頭的命名:?_classname__xx通過上面第 5 點的解釋,那么還有這么一種命名方式應該對你來說就好理解了:
456919f2ab87f926fea824f379009456.png
你可以這樣去使用它:
5276a135e55d0dff331aad2a80c6098f.png
ok,以上就是 Python 中各種下劃線的用法和解釋,希望對你有幫助,如果你看一遍之后有點懵,那就再看幾遍吧。當你把別人忽略的東西掌握起來,你就比他們牛逼了。

(完)

看完本文有收獲?請轉發分享給更多人

關注「Python那些事」,做全棧開發工程師

8b24b46500e237bd7703ca5c3cef506b.png

a2d5aec5a6c2c90a875d8471721ccff8.png

點「在看」的人都變好看了哦

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373592.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373592.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373592.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MongoDB學習2——Windows 使用mongo連接數據庫

一、查看mongo幫助文檔mongo.exe --help二、使用mongo 連接服務器mongo.exe 數據庫地址:數據庫端口號/數據庫關閉服務器db.shutdownServer()注:關閉數據必須使用admin數據庫權限

【UVA 10816】 Travel in Desert (最小瓶頸樹+最短路)

【題意】 有n個綠洲, m條道路,每條路上有一個溫度,和一個路程長度,從綠洲s到綠洲t,求一條道路的最高溫度盡量小, 如果有多條, 選一條總路程最短的。 InputInput consists of several test cases…

[OJ] Data Stream Median (Hard)

LintCode 81. Data Stream Median (Hard) 思路: 用一個大根堆保存較小的一半數, 一個小根堆保存較大的一半數.每次根據num和兩個堆頂的數據決定往哪個堆里面放.放完后進行平衡確保兩個堆的size差不超過1.利用兩個堆的size和堆頂值計算median.大根堆可以表示為priority_queue<…

書評:JBoss AS 7:配置,部署和管理

我熱切地接受Packt Publishing邀請復審JBoss AS 7&#xff1a;配置&#xff0c;部署和管理&#xff0c;因為自從我上次使用JBoss已有數年了&#xff0c;我很想了解有關JBoss AS 7的更多信息。 我已經寫過關于《 JBoss AS 7配置&#xff0c;部署和管理》一書的第一印象&#xff…

聯想小新air14筆記本黑屏_聯想小新air14銳龍版測評,談談它的好和壞

聯想小新air14銳龍版本測評了解數碼就找小俠客&#xff0c;我是機圈小俠客 今天呢&#xff0c;主要和大家測評一下聯想小新air14這款筆記本&#xff0c;總體而言的話&#xff0c;這款筆記本它是一個。對于辦公人士或者輕度游戲愛好者來說的話&#xff0c;是一個不錯的選擇&…

MongoDB學習3——mongoDB的一些基本使用

#查看所有數據庫show dbs;#創建&#xff08;切換&#xff09;數據庫use DATABASE_NAME注&#xff1a;如果數據庫不存在&#xff0c;則創建數據庫&#xff0c;否則切換到指定數據庫。#插入文檔&#xff08;關系型數據說法叫插入數據&#xff09;方式一&#xff1a;db.COLLECTION…

Java入門:Java下載與安裝方法

本文適合剛入門的Java編程的初學者閱讀。 JDK有兩種下載方法&#xff0c;一個是官網下載&#xff0c;另一個是第三方網站下載。官網速度也許有點慢&#xff0c;慢的話可以考慮去第三方網站下載。 一、官網下載 1. 訪問地址&#xff1a;http://www.oracle.com/cn/downloads/inde…

jquery獲得下拉框的值

獲取Select &#xff1a; 獲取select 選中的 text : $("#ddlRegType").find("option:selected").text(); 獲取select選中的 value: $("#ddlRegType ").val(); 獲取select選中的索引: $("#ddlRegType ").get(0).selectedIndex; 設置sel…

Java 7:如何編寫非常快速的Java代碼

當我第一次寫此博客時&#xff0c;我的目的是向您介紹ThreadLocalRandom類&#xff0c;它是Java 7中新增的用于生成隨機數的類。 我已在一系列微基準測試中分析了ThreadLocalRandom的性能&#xff0c;以了解其在單線程環境中的性能。 結果相對令人驚訝&#xff1a;盡管代碼非常…

python 微信支付接口 詳解_Python支付接口匯總大全(包含微信、支付寶等,長期更新、歡迎補充)...

wzhifuSDK- 由微信支付SDK 官方PHP Demo移植而來&#xff0c;v3.37下載地址學習Python中有不明白推薦加入交流群號&#xff1a;864573496群里有志同道合的小伙伴&#xff0c;互幫互助&#xff0c;群里有不錯的視頻學習教程和PDF&#xff01;weixin_pay- 是一個簡單的微信支付的…

[地圖開發][算法及數據結構]四叉樹原理

參考&#xff1a;http://blog.csdn.net/zhouxuguang236/article/details/12312099 原博客地址還有c&#xff0b;&#xff0b;源碼。。。 四叉樹索引的基本思想是將地理空間遞歸劃分為不同層次的樹結構。它將已知范圍的空間等分成四個相等的子空間&#xff0c;如此遞歸下去&…

mongoDB中的數據類型

Date mongo shell中提供各式各樣的返回日期類型的方法&#xff0c;例如字符串類型或者Date對象類型&#xff1a; Date()返回當前的日期字符串&#xff1b;new Date()返回使用ISODate()包裝的Date對象類型&#xff1b;ISODate()返回使用ISODate()包裝的Date對象類型&#xff1b;…

C++ namespace

是否應該使用using(using namespace std) 注&#xff1a;我將namespace翻譯成姓或士族。選擇某個namespace中的變量、函數、組合類型&#xff0c;就像是在介紹某個人 姓 namespace, 名 variable。 參考&#xff1a; 1、Why is “using namespace std” considered bad practice…

按鍵 粘貼上一個命令_合并單元格、選擇性粘貼的快捷鍵都是啥?今天一次告訴你……...

經常有人在群里問&#xff0c;合并單元格的快捷鍵是什么&#xff1f;選擇性粘貼數值的快捷鍵是什么&#xff1f;今天就來聊聊快捷鍵的一些冷門知識……Alt鍵的作用快捷鍵其實就是一些組合鍵&#xff0c;主要用到Ctrl、shift、Alt這三個鍵其中之一或者是幾個&#xff0c;再加上其…

Spring MVC和JQuery用于Ajax表單驗證

在本教程中&#xff0c;我們將看到如何使用Ajax和Spring MVC和JQuery在服務器端驗證表單。 Spring MVC為通過注釋驅動的配置采用Ajax提供了非常方便的過程。 我們將使用此注釋驅動的配置以JSON數據的形式發送Ajax響應。 響應將包含表單驗證的狀態&#xff0c;并且表單數據中存在…

myeclipse10.7破解成功 但 無法打war包 提示:securecrt alert:integrity ch

myeclipse10.7破解成功 但 無法打war包 提示&#xff1a;securecrt alert:integritycheck error找了好久才找到解決辦法http://download.csdn.net/detail/yi303526230/6889101#comment本次對于myeclipse10破解后&#xff0c;導出war包時報“SECURITY ALERT: INTEGERITY CHECK E…

Mongodb的update操作

在前面的文章“mongodb 查詢的語法”里&#xff0c;我介紹了Mongodb的常用查詢語法&#xff0c;Mongodb的update操作也有點復雜&#xff0c;我結合自己的使用經驗&#xff0c;在這里介紹一下&#xff0c;給用mongodb的朋友看看&#xff0c;也方便以后自己用到的時候查閱&#x…

封裝方法

<?php class DBDA {public $host"localhost";public $uid"root";public $pwd"123";public $dbname"mydb";/***給一個sql語句&#xff0c;返回執行的結果*param string $sql 用戶指定的sql語句*param int $type 用戶給的語句類型&a…

AFNetwork 作用和使用方法具體解釋

轉自&#xff1a;http://www.maxiaoguo.com/clothes/269.html AFNetworking是一個輕量級的iOS網絡通信類庫。它建立在NSURLConnection和NSOperation等類庫的基礎上&#xff0c;讓非常多網絡通信功能的實現變得十分簡單。它支持HTTP請求和基于REST的網絡服務&#xff08;包含GET…

在MongoDB中存儲分層數據

繼續使用MongoDB進行 NoSQL之旅&#xff0c;我想觸摸一個經常出現的特定用例&#xff1a;存儲分層文檔關系。 MongoDB是很棒的文檔數據存儲&#xff0c;但是如果文檔具有父子關系怎么辦&#xff1f; 我們可以有效地存儲和查詢此類文檔層次結構嗎&#xff1f; 答案是肯定的&…