1 程式設計規範
註釋
python註釋也有自己的規範,在文章中會介紹到。註釋可以起到一個備註的作用,團隊合作的時候,個人編寫的程式碼經常會被多人呼叫,為了讓別人能更容易理解程式碼的通途,使用註釋是非常有效的。
在說規範之前我們有必要先看以下Python的註釋有哪些 ?
-
單行註釋
-
多行註釋
單行註釋
以 # 開頭, # 右邊的所有東西都被當做說明文字,而不是真正要執行的程式,只起到輔助說明作用
示例程式碼如下:
# 這是第一個單行註釋 print("hello python")
為了保證程式碼的可讀性, # 後面建議先新增一個空格,然後再編寫相應的說明文字
多行註釋(塊註釋)
如果註釋資訊很多,一行無法顯示,就可以使用多行註釋
要在 Python 程式中使用多行註釋,可以用一對連續的 三個 引號(單引號和雙引號都可以)
示例程式碼如下:
""" 這是一個多行註釋 在多行註釋之間,可以寫很多很多的內容…… """ print("hello python")
註釋不是越多越好,對於一目瞭然的程式碼,不需要新增註釋
識別符號命名規則
開發人員在程式中自定義的一些符號和名稱。識別符號是自己定義的, 如變數名 、函式名等
識別符號由字母、下劃線和數字組成,且數字不能開頭
python中的識別符號是區分大小寫的
命名規則
1)、下滑線命名法
用下劃線“_”來連線所有的單詞,比如 hello_world
- 見名知意
- 起一個有意義的名字,儘量做到看一眼就知道是什麼意思(提高程式碼可讀性) 比如: 名字 就定義為
name , 定義學生 用 student
2)、駝峰命名法
大駝峰式命名法(upper camel case):
- 每一個單字的首字母都採用大寫字母,
例如:FirstName、HelloWorld
小駝峰式命名法(lower camel case):
-
第一個單詞以小寫字母開始;
-
第二個單詞的首字母大寫,
例如:helloWorld、firstName
注意
所有的變數名、函式名 都是用下劃線命名法
類名使用大駝峰命名法
python命名規則
- python中的識別符號是區分大小寫的
- 變數、函式名全部用小寫與下劃線
- 常量(配置檔案變數、不修改的變數)全部用大寫
- 類名用大駝峰命名法
案例: 命名規範檢視
# 類名用大駝峰 類與其他內容用兩個換行隔開 class Student(object): # 變數名之間用空格隔開 def __init__(self, hello): self.hello = hello # 函式與函式之間加換行 def print_hello_world(self): """ 函式名用下劃線命名法 儘量滿足見名知意 """ print(f"hello.jpg {self.hello} !") def PrintHelloWorld(self): """ 大駝峰命名法提示有問題 """ print(f"hello.jpg {self.hello} !") def printHelloWorld(self): """ 小駝峰命名法提示有問題 """ print(f"hello.jpg {self.hello} !") def printhelloworld(self): """ 直接寫很難讀懂 """ print(f"hello.jpg {self.hello} !") def PRINTHELLOWORLD(self): """ 直接寫很難讀懂 """ print(f"hello.jpg {self.hello} !") """團隊規範""" # 變數名使用下劃線命名法 # 儘量滿足見名知意 # 物件也是變數 student = Student("world") student.print_hello_world()
關於程式碼規範
- Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文件
- 其中第 8 篇文件專門針對 Python 的程式碼格式 給出了建議,也就是俗稱的 PEP 8
- 文件地址:https://www.python.org/dev/peps/pep-0008/
- 谷歌有對應的中文文件:https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/
任何語言的程式設計師,編寫出符合規範的程式碼,是開始程式生涯的第一步
程式設計習慣的重要性
- 可以方便排查錯誤
- 方便自己看的程式碼
- 便於別人看懂你的程式碼(團隊協作)
良好的程式設計習慣的養成不能靠說,要靠多練,要在大量的程式設計中將其融入骨髓中。
一套系統應該具有統一的程式設計風格,任何程式設計風格都不可能是完美,應該從可維護性、可讀性方面繼續保持一種程式設計風格,而不要將多種程式設計風格混合在一套系統中,對於新手,難以理解如此多種風格的編
碼。
ctrl + alt + l 快速格式化程式碼
輸入輸出與變數
輸出
print() 方法用於列印輸出,最常見的一個函式。
以下是 print() 方法的語法:
print(*objects, sep=' ', end='\n', file=sys.stdout)
引數
- objects -- 複數,表示可以一次輸出多個物件。輸出多個物件時,用分隔符分割。
- sep -- 用來間隔多個物件,預設值是一個空格。
- end -- 用來設定以什麼結尾。預設值是換行符 \n,我們可以換成其他字串。
- file -- 要寫入的檔案物件。
輸入
input() 函式接受一個標準輸入資料,返回為 string 型別
>>>a = input("input:") input:123 # 輸入整數 >>> type(a) <class 'str'> # 字串
變數
程式就是用來處理資料的,而變數就是用來儲存資料的
- 在 Python 中,每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立
- 等號(=)用來給變數賦值
= 左邊是一個變數名
= 右邊是儲存在變數中的值 - 直接使用之前已經定義的變數
- 變數名只有在 第一次出現 才是 定義變數
- 變數名再次出現,不是定義變數,而是直接使用之前定義過的變數
- 在程式開發中,可以修改之前定義變數中儲存的值嗎?
可以
變數中儲存的值,就是可以 變 的
變數名 = 值
變數定義之後,後續就可以直接使用了
2 數值型別
int(整形)
在 Python 中定義變數是 不需要指定型別(在其他很多高階語言中都需要)
整形,也被稱之為整數。整數就是數學中的數字。
整形在Python中不受長度限制大小範圍
使用 type 函式可以檢視一個變數的型別
In [1]: 1 Out[1]: 1 In [2]: type(1) Out[2]: int
浮點型(float)
小數型別
小數
In [1]: 1 Out[1]: 1 In [2]: type(1.0) Out[2]: float
運算、運算子優先順序與整形是一樣。
型別轉化
浮點數轉化為整形(顯示轉化)
In [3]: int(1.0) Out[3]: 1 In [4]: float(1) Out[4]: 1.0
隱式轉化,系統背後預設進行轉換
In [5]: 1/2
Out[5]: 0.5
1.3 字串
字串是一種不可變的序列型別
字串建立
字串是 Python 中最常用的資料型別。我們可以使用引號( ' 或 " )來建立字串。
建立字串很簡單,只要為變數分配一個值即可。
單引號和雙引號
在 Python 中我們都知道單引號和雙引號都可以用來表示一個字串,比如
print("What's your name?") 結果: "What's your name?" print('"python"是一門優秀的語言') 結果: "python"是一門優秀的語言
一個單引號並不是單引號,它是字串建立的格式
總體來說沒有任何區別,只在單引號當普通字元時容易區分:如 var = "let's go"
三引號建立塊字串 長字串
# 三引號實現塊註釋 """ 文件註釋 三引號實現塊註釋 """
字串格式化
把不是字元型別的 轉變成字串
在 Python 中可以使用 print 函式將資訊輸出到控制檯
如果希望輸出文字資訊的同時,一起輸出 資料,就需要使用到 格式化操作符
format
此函式可以快速的處理各種字串,增強了字串格式化的功能。基本語法是使用{}和:來替代%。format函式可以接受不限各引數,位置可以不按照順序
name = '張三' age = 18 nickname = '法外狂徒' # format 用 {} 佔位 print('姓名:{},年齡{},外號:{} '.format(name, age, nickname)) print('hello {} 你今年已經{}歲了'.format(name, age)) # 保留小數點後兩位 In [1]: '{:.2f}'.format(12.333) Out[1]: '12.33' In [2]: '{a:.2f}'.format(a=12.333) Out[2]: '12.33' In [3]: '{a:6.2f}'.format(a=12.333) Out[3]: ' 12.33'
%s
% 被稱為 格式化操作符,專門用於處理字串中的格式
- 包含 % 的字串,被稱為 格式化字串
- % 和不同的 字元 連用,不同型別的資料 需要使用 不同的格式化字元
語法格式如下:
print("格式化字串 %s" % 變數1) print("格式化字串" % (變數1, 變數2...)) name = '張三' age = 18 nickname = '法外狂徒' name2 = '李四' age2 = 19 nickname2 = '幫凶' # %s 用 %s 佔位 print('姓名:%s' % name) # 多個引數 print('%s,%s 哦嗨呦' % (name, name2))
f
f’{}'形式,並不是真正的字串常量,而是一個運算求值表示式,可以很方便的用於字串拼接、路徑拼接等
name = '張三' # f 在字串中嵌入變數 print(f'hello {name} !')
案例:貓眼top100網址
貓眼top100的網址有以下特點:
第一頁:https://maoyan.com/board/4?offset=0
第二頁:https://maoyan.com/board/4?offset=10
第三頁:https://maoyan.com/board/4?offset=20
....
第十頁:https://maoyan.com/board/4?offset=90
請分別使用三種字串構建的方法建立所有的請求地址
4 字串常用方法
字串是不可變資料型別,所有的操作都是返回新的一個列表,不會修改原有列表
字串 能夠使用的 方法 如下:
提示:正是因為 python 內建提供的方法足夠多,才使得在開發時,能夠針對字串進行更加靈活的操作!應對更多的開發需求!
查詢和替換
提問:如何改變字串
將下面的字串中 world 改成 Python
hello = "hello world !" print(hello.replace('world', 'Python')) print(hello)
字串是一種不可變的資料型別。所有操作字元的方法都是返回一個新的字串。可以用返回的新的字串覆蓋掉之前的字串。
轉義字元
在需要在字元中使用特殊字元時,python 用反斜槓轉義字元。如下表:
原始字串
由於字串中的反斜線都有特殊的作用,因此當字串中包含反斜線時,就需要使用轉義字元 \ 對字串中包含的每個 '' 進行轉義。
比如說,我們要寫一個關於 Windows 路徑 G:\publish\codes\02\2.4 這樣的字串,如果在 Python 程式中直接這樣寫肯定是不行的,需要使用 \ 轉義字元,對字串中每個 '' 進行轉義,即寫成G:\publish\codes\02\2.4 這種形式才行。
有沒有覺得這種寫法很囉嗦,有沒有更好的解決辦法呢?答案是肯定的,藉助於原始字串可以很好地解決這個問題。
原始字串以“r”開頭,它不會把反斜線當成特殊字元。因此,上面的 Windows 路徑可直接寫成如下這 種形式:
# 原始字串包含的引號,同樣需要轉義 s2 = r'"Let\'s go", said Charlie' print(s2)
5 布林型別(bool)
python 中布林值使用常量 True 和 False來表示;注意大小寫
bool 是 int 的子類(繼承 int ),故 True == 1 False == 0 是會返回 Ture
bool 型別只有兩種狀態真或假
In [17]: bool(-1) Out[17]: True In [18]: bool(0) Out[18]: False In [19]: bool(None) Out[19]: False In [20]: bool("") Out[20]: False In [21]: bool(" ") Out[21]: True In [22]: def a(): ...: pass ...: ...: bool(a) Out[22]: True
總結
True 對 False 錯
布林型別只有兩種狀態, True or Flase 。數字除了零之外,其餘均為 True ,字串除了空字串之外都為 True ,物件除了空物件之外,其餘均為 True 。
預設情況下,所有型別都可以轉化為布林型別
6 運算子
算數運算子
因為是整數,所以也可以進行數學中的基本運算。
- 算數運算子是 運算子的一種
- 是完成基本的算術運算使用的符號,用來處理四則運算
# 取餘 In [16]: 9 % 4 Out[16]: 1 In [17]: 9 % 3 Out[17]: 0 In [18]: 2 ** 3 Out[18]: 8
除此之外,“+”還可以作為字串(包括後續要介紹的序列)的連線運算子。
s1 = 'Hello, ' s2 = 'Charlie' # 使用+連線兩個字串 print(s1 + s2)
算數運算子的優先順序
和數學中的運算子的優先順序一致,在 Python 中進行數學計算時,同樣也是:
- 先乘除後加減
- 同級運算子是 從左至右 計算
- 可以使用 () 調整計算的優先順序
以下表格的算數優先順序由高到最低順序排列
例如:
- 2 + 3 * 5 = 17
- (2 + 3) * 5 = 25
- 2 * 3 + 5 = 11
- 2 * (3 + 5) = 16
賦值運算子
以下假設變數a為10,變數b為20:
比較運算子
邏輯運算子
Python語言支援邏輯運算子,以下假設變數 a 為 10, b為 20:
邏輯運算子案例:
x = 1 y = 0 print(x and y) print(x or y) print(not x) print(not y) # 案例升級 x = 3 > 4 y = 5 > 4
運算子優先順序
以下表格列出了從最高到最低優先順序的所有運算子: