網站首頁 編程語言 正文
單下劃線與雙下劃線
在 python 中,會看到 _xx, xx 以及 __xx 這樣的變量或者函數名,在這里做一個簡要的總結。
-
_xx
:保護(protected)變量或函數,意思是只有類對象和子類對象能夠訪問到這些變量,不能用 ‘from module import *’ 導入。當變量或函數是私有的時候,用 _xx 來表示是很好的習慣。; -
__xx
:私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據; -
_xx_
:代表 python 里特殊方法專用的標識,如 _init_() 代表類的構造函數。變量名 _xx_ 對 python 來說有特殊含義,對于普通的變量應當避免這種命名風格。
下劃線對解釋器有特殊的意義,而且是內建標識符所使用的符號,應避免用下劃線作為變量名的開始。
絕對導入與相對導入
既然上文說到了包的導入,就順便把 python 的包內導入規則說一下,分為絕對導入與相對導入。
- 相對導入:在不指明 package 名的情況下導入自己這個 package 的模塊,比如一個 package 下有 a.py 和 b.py 兩個文件,在 a.py 里 from . import b 即是相對導入 b.py;
- 絕對導入:指明頂層 package 名。比如 import a,python 會在 sys.path 里尋找所有名為 a 的頂層模塊。
在 3.0 以前的舊版本中啟用相對導入等特性所必須的 _future_ 語句:
from __future__ import absolute_import
python 包的概念:包含 _init_.py 文件的目錄,該文件在包導入時會被首先執行,該文件可以為空,也可以在其中加入任意合法的 python 代碼。
相對導入的特點:可以避免硬編碼帶來的維護問題,例如我們改了某一頂層包的名,那么其子包所有的導入就都不能用了。
但是 存在相對導入語句的模塊,不能直接運行,否則會有異常:
ValueError: Attempted relative import in non-package
盡管使用相對導入看起來像是瀏覽文件系統,但是不能到定義包的目錄之外。也就是說,使用點的這種模式從不是包的目錄中導入將會引發錯誤。
絕對導入的特點:可以避免與標準庫命名的沖突,實際上也不推薦自定義模塊與標準庫命令相同。
硬編碼的概念
與軟編碼的區別是,軟編碼可以在運行時確定,修改;而硬編碼是不能夠改變的。
舉個例子:
例如求圓的面積問題,那么 3.14*r*r 就是硬編碼,而 PI*r*r 就不是硬編碼。
把數值寫成常數而不是變量即硬編碼。
原文鏈接:https://huangfei.blog.csdn.net/article/details/81072335
相關推薦
- 2022-07-21 React生命周期
- 2022-01-11 require from ‘xxx‘是如何找到node_modules目錄下的依賴包?
- 2024-02-26 Cannot execute binary file 之原因
- 2022-05-01 React的三大屬性你都知道嗎_React
- 2022-02-18 IE11打開后顯示空白頁,報錯:1002||不支持XXX屬性或方法
- 2022-07-24 詳解Flutter中StatefulBuilder組件的使用_Android
- 2022-06-16 VS?Code?C++環境的搭建過程_C 語言
- 2022-03-16 使用Nginx實現端口轉發TCP代理的實現示例_nginx
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支