Python之真功夫系列之NO:1 (程式設計基礎概念)
技術標籤:Python基礎教學python程式語言入門基礎經驗分享
Python入門基礎篇 No.1 —— 縮排_行註釋_段註釋
程式基本格式
- 恰當的空格,縮排問題邏輯行首的空白(空格和製表符)用來決定邏輯行的縮排層次,從而用來決定語句的分組。語句從新行的第一列開始。縮排風格統一:每個縮排層次的使用 單個製表符 或者四個空格(一個製表符相當於四個空格)Python用縮排而不是{}表示程式塊下面展示一下Python中空格和製表符的關係。
# 一個空格
# 兩個空格
# 三個空格
# 四個空格
# 一個製表符(Tab)
12345
- Python區分大小寫
- 註釋行註釋每行註釋前加#號。當直譯器看到#號,則忽略這一行#號後面的內容段註釋使用三個連續單引號(’’’)。當直譯器看到’’’,則會掃描到下一個’’’,然後忽略他們之間的內容。Python中三個連續的單引號(’’’)和三個連續的雙引號(""")效果相同,但不能混用。下面展示一下Python中連續三個單引號''',連續三個雙引號引號''',和連續三個單雙引號混用情況
'''
忽略‘’‘之間的內容
'''
---------------------------------
"""
忽略“”“之間的內容
"""
---------------------------------
'''
提示錯誤
"""
Python入門基礎篇 No.2 —— 物件_引用_識別符號
一、物件
Python中,一切皆物件。每個物件由:標識(identity)、型別(type)、值(value)組成。
- 標識用於唯一標識物件,通常對應於物件在計算機記憶體中的地址,使用內建函式id(obj)可返回物件obj的標識。
- 型別用於表示物件儲存的“資料”的型別,型別可以限制物件的取值範圍以及可執行的操作,可以使用type(obj)獲得物件的所屬型別。
- 值表示物件所儲存的資料的資訊,使用print(obj)可以直接打印出值。
物件的本質就是:一個記憶體塊,擁有特定的值,支援特定型別的相關操作。
二、引用
在Python中,變數也成為:物件的引用。因為,變數儲存的就是物件的地址。變數通過地址引用了“物件”。
變數位於:棧記憶體。
物件位於:堆記憶體。
- Python是動態型別語言
變數不需要顯示宣告型別,根據變數引用的物件,Python直譯器自動確定資料型別。 - Python是強型別語言
每個物件都有資料型別,只支援該型別的操作。
三、識別符號
識別符號:用於變數、函式、類、模組等的名稱。表示都有如下特定的規則:
- 區分大小寫。如:python 和 Python是不同的
- 第一個字元必須是字母、下劃線。其後的字元是:字母、數字、下劃線。
- 不能使用關鍵字。比如:is 、not 、with 、if 、or 等。
- 以上下劃線開頭和結尾的名稱通常有特殊含義,儘量避免這種寫法。比如:__init__是類的建構函式。
圖中字元是Python設定的關鍵字
Python入門基礎篇 No.3 —— 變數的宣告_初始化_刪除變數_垃圾回收機制
一、變數和簡單賦值語句
變數的宣告和賦值
- 變數的宣告和賦值用於將一個變數繫結到一個物件上,格式如下:
變數名 = 表示式
- 最簡單的表示式就是自變數。比如:x = 520 。執行過程中,直譯器先執行右邊的表示式,生成一個代表表示式運算結果的物件:然後,將這個物件地址賦值給左邊的變數。
- 變數在使用前必須先被初始化(先被賦值)
>>> x = 520
>>> x
520
>>> bbb
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
bbb
NameError: name 'bbb' is not defined
>>>
123456789
- 變數bbb在被使用前未做賦值,因此報錯:name ‘bbb’ is not defined。
二、刪除變數和垃圾回收機制
- 可以通過del語句刪除不再使用的變數。
>>> a = 520
>>> a
520
>>> del a
>>> a
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
a
NameError: name 'a' is not defined
>>>
12345678910
- 如果物件沒有變數引用,就會被垃圾回收器回收,清空記憶體空間。
>>> s
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
s
NameError: name 's' is not defined
>>>
Python入門基礎篇 No.4 —— 鏈式賦值_系列解包賦值_常量
一、鏈式賦值
- 鏈式賦值用於同一個物件賦值給多個變數。
x = y = 520 相當於:x = 520 : y=520
二、系列解包賦值
- 系列資料賦值給對應相同個數的變數(個數必須保持一致)
程式碼演示:
>>> a, b, c = 4, 5, 6
>>> a, b, c
(4, 5, 6)
>>> a = 4
>>> b = 5
>>> c = 6
>>> a, b, c
(4, 5, 6)
>>>
123456789
三、常量
- Python 不支援常量,既沒有語法規則限制改變一個常量的值。我們只能約定常量的命名規則,以及在程式的邏輯上不對常量的值作出修改。
程式碼演示:
>>> Offer = 666
>>> print(Offer)
666
>>> Offer = 123
>>> print(Offer)
123
>>>
Python入門基礎篇 No.5 —— 內建資料型別_基本算術運算子
一、內建資料型別
每個物件都有型別,Python中最基本的內建資料型別:
- 整型
整數 , 123, 520 ,666 ,10 - 浮點型
小數 , 3.1415或者科學計數法31415e-4 - 布林型
表示真假,僅包括:True、False - 字串型
由字元組成的序列,“xyz”,“abc”,“Offer”
二、數字和基本運算子
Python支援整數(如:10 , 666)和浮點數(如:3.1415 , 13.14,1314e-2),我們可以對數字做如下運算。
>>> 1+1 # 加法
2
>>> 1-1 # 減法
0
>>> 1*1 # 乘法
1
>>> 4/2 # 浮點數除法
2.0
>>> 7//2 # 整數除法
3
>>> 7%2 # 模(取餘)
1
>>> 2**4 # 冪
16
1234567891011121314
- 除數為0,會產生異常:
>>> 2/0
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
2/0
ZeroDivisionError: division by zero
>>>
123456
- 使用divmod()函式同時得到商和餘數:
divmod()是一個函式,他返回的是一個元組。
>>> divmod(15,4)
(3, 3)
>>>
123
很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:721195303
Python入門基礎篇 No.6 —— 整數_不同進位制_其他型別轉換成整數
一、整數
Python 中,除 10 進位制,還有其他三種進位制:
- 0b 或 0B,二進位制 0 1
- 0o 或 0O,八進位制 0 1 2 3 4 5 6 7
- 0x 或 0X,十六進位制 0 1 2 3 4 5 6 7 8 9 a b c d e f
>>> 11
11
>>> 0b111
7
>>> 0o18
SyntaxError: invalid digit '8' in octal literal
>>> 0o11
9
>>> 0xee
238
>>> 0xe
14
>>> 0x11
17
>>>
123456789101112131415
二、使用 int()實現型別轉換:
- 浮點數直接捨去小數部分。如:int(3.14)結果是:3
- 布林值True轉為1,False轉為0。如:int(False)結果是0
- 字串符合整數格式(浮點數格式不行)則直接轉成對應整數,否則報錯。
>>> int('123')
123
>>> int('123abc')
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
int('123abc')
ValueError: invalid literal for int() with base 10: '123abc'
>>> int('123.456')
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
int('123.456')
ValueError: invalid literal for int() with base 10: '123.456'
>>>
12345678910111213
三、自動轉型
- 整數和浮點數混合運算時,表示式結果自動轉型成浮點數。比如:3+7.0=10.0
四、整數可以有多大?
- Python2中,int是32位,可以儲存從-2147483648到2147483647的整數(約±21億)。Long 型別是 64 位,可以儲存:-2^63 - - 2^63-1 之間的數值。
- Python3 中,int 可以儲存任意大小的整數,Long 被取消。演示一下:
>>> how = 10**1000
>>> how
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>>
1234
Python3 中可以做超大數的計算,而不會造成“整數溢位”,這也是 Python 特別是
合科學運算的特點。
Python入門基礎篇 No.7 —— 浮點數_自動轉換_強制轉換_增強賦值運算子
一、浮點數
浮點數,稱為 float。
- 浮點數用a*b^8 形式的科學計數法表示。比如:3.1415,表示成:31415E-4 或者 31415e-4。
- 這些數字在記憶體中也是按照科學計數法儲存。
二、型別轉換和四捨五入
- 類似於 int(),我們也可以使用 float()將其他型別轉化成浮點數。
- 整數和浮點數混合運算時,表示式結果自動轉型成浮點數。比如:3+7.0 的結果是 10.0
- round(value)可以返回四捨五入的值
注:但不會改變原有值,而是產生新的值
三、增強型賦值運算子
運算子 + 、- 、* ,/ 、// 、** 和 % 和賦值符 = 結合可以構成 “增強型賦值運算子” 。
b = b + 1 等價於: b +=1
>>> x = 0
>>> x += 2
>>> x
2
>>> x = x + 2
>>> x
4
>>> x = 4
>>> x -= 2
>>> x
2
>>> x = x - 2
>>> x
0
>>> x = 2
>>> x *= 2
>>> x
4
>>> x = x * 2
>>> x
8
>>> x = 8
>>> x /= 2
>>> x
4.0
>>> x = x / 2
>>> x
2.0
>>> x = 9
>>> x //= 3
>>> x
3
>>> x = x // 3
>>> x
1
>>> x = 2
>>> x **= 2
>>> x
4
>>> x = x ** 2
>>> x
16
>>> x = 15
>>> x %= 11
>>> x
4
>>> x = x % 7
>>> x
4
>>>
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
注意:“+=” 中間不能加空格!
Python入門基礎篇 No.8 —— 時間的表示_unix時間點_毫秒_time模組
一、時間的表示
計算機中時間的表示是從“1970 年 1 月 1 日 00:00:00”開始,以毫秒(1/1000 秒)
進行計算。我們也把 1970 年這個時刻成為“unix 時間點”。
- 這樣,我們就可以把時間全部用數字來表示了。
- python 中可以通過 time.time() 獲得當前時刻,返回的值是以秒為單位,帶微秒
(1/1000 毫秒)精度的浮點值。例如:26829035.6。
>>> import time
>>> a = int(time.time())
>>> a
1609742136
>>> minutes = a/60
>>> minutes
26829035.6
>>> hours = minutes/60
>>> hours
447150.5933333334
>>> days = hours/24
>>> days
18631.274722222225
>>>
Python入門基礎篇 No.9 —— 布林值_比較運算子_邏輯運算子
一、布林值
Python2 中沒有布林值,直接用數字 0 表示 False,用數字 1 表示 True。
Python3 中,把 True 和 False 定義成了關鍵字,但他們的本質還是 1 和 0,甚至可以和數字相加。
>>> x = True
>>> y = 2
>>> x + y
3
>>>
12345
二、比較運算子
所有比較運算子返回 1 表示真,返回 0 表示假。這分別與特殊的變數 True 和 False 等價。
>>> x = 5
>>> y = 10
>>> print(x == y) # 比較物件的值是否相等
False
>>> print(x != y) # 比較兩個物件的值是否不相等
True
>>> print(x > y) # 返回 x 是否大於 y
False
>>> print(x < y) # 返回 x 是否小於 y
True
>>> print(x >= y) # 返回 x 是否大於等於 y
False
>>> print(x <= y) # 返回 x 是否小於等於 y
True
>>>
123456789101112131415
三、邏輯運算子
or邏輯或 ; x or y ; x 為 true,則不計算 y,直接返回 true ; x 為 false,則返回 y
and邏輯與 ; x and y ; x 為 true,則返回 y 的值 ; x 為 false,則不計算 y,直接返回 false
not邏輯非 ; not x ; x 為 true,返回 false ; x 為 false,返回 true
12345
Python入門基礎篇 No.10 —— 同一運算子_整數快取問題
一、同一運算子
同一運算子用於比較兩個物件的儲存單元,實際比較的是物件的地址。
- is 是判斷兩個識別符號是不是引用同一個物件
- is not 是判斷兩個識別符號是不是引用不同物件
- is 與 == 區別:
is 用於判斷兩個變數引用物件是否為同一個,即比較物件的地址。
== 用於判斷引用變數引用物件的值是否相等,預設呼叫物件的eq()方法。
二、整數快取問題
Python 僅僅對比較小的整數物件進行快取(範圍為[-5, 256]),而並非是所有整數物件。需要注意的是,這僅僅是在命令列中
執行,而在 Pycharm 或者儲存為檔案執行,結果是不一樣的,這是因為直譯器做了一部分優化(範圍是[-5,任意正整數])。
- is 比較兩個物件的 id 值是否相等,是否指向同一個記憶體地址;
- == 比較的是兩個物件的內容是否相等,值是否相等;
- 小整數物件[-5,256]在全域性直譯器範圍內被放入快取供重複使用;
- is 運算子比 == 效率高,在變數和 None 進行比較時,應該使用 is。
>>> x = 9999
>>> y = 9999
>>> x == y
True
>>> x is y
False
>>> id(x)
2556022936112
>>> id(y)
2556022936048
>>> a = 9
>>> b = 9
>>> a == b
True
>>> a is b
True
>>> id(a)
140736075798432
>>> id(b)
140736075798432
>>>
123456789101112131415161718192021