1. 程式人生 > 其它 >Python之真功夫系列之NO:1 (程式設計基礎概念)

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是強型別語言
    每個物件都有資料型別,只支援該型別的操作。

三、識別符號

識別符號:用於變數、函式、類、模組等的名稱。表示都有如下特定的規則:

  1. 區分大小寫。如:python 和 Python是不同的
  2. 第一個字元必須是字母、下劃線。其後的字元是:字母、數字、下劃線。
  3. 不能使用關鍵字。比如:is 、not 、with 、if 、or 等。
  4. 以上下劃線開頭和結尾的名稱通常有特殊含義,儘量避免這種寫法。比如:__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

在這裡還是要推薦下我自己建的Python學習群:721195303,群裡都是學Python的,如果你想學或者正在學習Python ,歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有Python軟體開發相關的),包括我自己整理的一份2020最新的Python進階資料和零基礎教學,歡迎進階中和對Python感興趣的小夥伴加入!