語法 Syntax
標點符號 punctuation
標識符
Identifiers (also referred to as names)
給變量variable、類class、對象object、方法method、函數function等取名(標識符)時有以下規則:
第一個字符必須是字母表中字母或下划線 _ 。
標識符的其他的部分由字母、數字和下划線組成。
標識符對大小寫敏感。
不能使用保留字做標識符。
在 Python 3 中,可以用中文作為變量名,非 ASCII 標識符也是允許的了。不推薦用中文命名。
Python 保留字
reserved words, or keywords
保留字即關鍵字,我們不能把它們用作任何標識符名稱。Python 的標准庫提供了一個 keyword 模塊,可以輸出當前版本的所有關鍵字:
>>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as',
'assert', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except',
'finally', 'for', 'from', 'global', 'if',
'import', 'in', 'is', 'lambda', 'nonlocal',
'not', 'or', 'pass', 'raise', 'return',
'try', 'while', 'with', 'yield']
行與縮進
Indentation
python最具特色的就是使用縮進來表示代碼塊,不需要使用大括號 { } (注意:是不能用大括號表示代碼塊)。(注意:與眾多其他語言不一樣)
縮進的空格數是可變的(可以縮進一個或多個空格),但是同一個代碼塊的語句必須包含相同的縮進空格數(不同的代碼塊可以縮進不同數量空格數)。實例如下:
if True: print ("True") else: print ("False")
以下代碼最后一行語句縮進數的空格數不一致,會導致運行錯誤:
if True: print ("Answer") print ("True") else: print ("Answer") print ("False") # 縮進不一致,會導致運行錯誤 IndentationError: unindent does not match any outer indentation level
示例
if True: # 此句會運行 print ("True1") # 此句會運行 print ("True2") # 此句會運行 else: print ("Else1") print ("Else2") if True: # 此句會運行 print ("True1") # 此句會運行 print ("True2") # 此句會運行 else: print ("Else1") print ("Else2") # 此句會運行
多個語句構成代碼組
compound statements
縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。(即:復合語句)
像 if、while、for、def 和 class 這樣的復合語句,首行以關鍵字開始,以冒號( : colon)結束,該行之后的一行或多行代碼構成代碼組。
我們將首行及后面的代碼組稱為一個子句(clause)。
如下實例:兩行黃色底紋的語句是同一個代碼塊(代碼組,復合語句)。兩行綠色底紋的語句是同一個代碼塊(代碼組,復合語句)。
if True: # 此句會運行 print ("True1") # 此句會運行 print ("True2") # 此句會運行 else: print ("Else1") print ("Else2")
以下示例使用了 while 來計算 1 到 100 的總和:
sum = 0
counter = 1
while counter <= 100: sum = sum + counter counter += 1 print("1 到 %d 之和為: %d" % (100, sum))
上面兩行黃色底紋的語句是同一個代碼塊(代碼組,復合語句)。
備注:if 分支語句、while 循環語句、def 定義方法(函數)、class 定義類。
多行語句
line continuation; line joining; Explicit line joining
Python 通常是一行寫完一條語句,但如果語句很長,我們可以使用反斜杠 \ Backslash (\
)來實現多行語句,例如:
total = 1 + \ 2 + \ 3
if True: total = 1 + \ 2 + \ 3
在 [ ], { }, 或 ( ) 中的多行語句,不需要使用反斜杠 \ ,例如:Implicit line joining
Expressions in parentheses, square brackets or curly braces can be split over more than one physical line without using backslashes.
a = ['A', 'B', 'C',
'D', 'E'] ### a 是一個列表list類型的變量(實際是對象)
b = {'A', 'B', 'C',
'D', 'E'} ### b 是一個集合set類型的變量(實際是對象),其中元素無序不重復
c = ('A', 'B', 'C',
'D', 'E') ### c 是一個元組tuple類型的變量(實際是對象),其中元素不能修改
if True: a = ['A', 'B', 'C', 'D', 'E'] ### a 是一個列表list類型的變量(實際是對象)
同一行顯示多條語句
Python 可以在同一行中使用多條語句,語句之間使用分號 ; (semicolon) 分割,以下是一個簡單的實例:
>>> a=1; b=2; c=a+b; print(c) 3
print 輸出
print, input, int, eval 等函數都是python內置(built-in)的標准函數,使用時不需要導入任何庫。
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) Print objects to the text stream file, separated by sep and followed by end.
示例
>>>print("ABC") # 輸出字符串 ABC >>> print(123) # 輸出數字 123 >>> str = 'ABC' >>> print(str) # 輸出變量 ABC >>> L = [1,2,'a'] # 列表 >>> print(L) [1, 2, 'a'] >>> t = (1,2,'a') # 元組 >>> print(t) (1, 2, 'a') >>> d = {'a':1, 'b':2} # 字典 >>> print(d) {'a': 1, 'b': 2} >>> print(1,"ABC",3) # 輸出多項 1 ABC 3
>>> print(1,"ABC",3, sep='') # sep設置間隔符
1ABC3
print 默認輸出是換行的,如果要實現不換行需要在變量末尾加上 end="": 備注:等號后面是一對引號,引號中間沒有空格。
print("AB") # 輸出AB之后會換行 print("CD",end="") # 輸出CD之后不換行 print("EF") #輸出EF后會換行
結果:
AB
CDEF
變量賦值
Assignment statements
Python 中的變量variable不需要聲明declare。每個變量在使用前都必須賦值,變量賦值以后該變量才會被創建。
在 Python 中,變量就是變量,它沒有類型,我們所說的 "類型" 是變量所指的內存中對象的類型。
等號(=)用來給變量賦值
等號(=)運算符左邊是一個變量名, 等號(=)運算符右邊是存儲在變量中的值。例如:
counter = 10 # 整型變量 miles = 10.0 # 浮點型變量 name = "ABC" # 字符串
多個變量賦值
Python允許你同時為多個變量賦值。例如:
a = b = c = 1
以上實例,創建一個整型對象,值為 1,從后向前賦值,三個變量被賦予相同的數值。
可以為多個對象指定多個變量。例如:
a, b, c = 1, 2, "ABC"
以上實例,兩個整型對象 1 和 2 的分配給變量 a 和 b,字符串對象 "ABC" 分配給變量 c。 等價於: a=1; b=2; c="ABC" .
復合賦值語句
Augmented assignment statements
"+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="
x += 1
可以寫作 x = x + 1
import 與 from...import
The import
statement
在 python 用 import 或者 from...import 來導入相應的模塊。
將一個模塊導入,格式為:
import somemodule1
將多個模塊導入
import somemodule1, somemodule2, somemodule3
給導入的模塊取別名:
import somemodule as aliasName
從某個模塊中導入某個函數, 格式為: from somemodule import somefunction
從某個模塊中導入多個函數, 格式為: from somemodule import firstfunc, secondfunc, thirdfunc
將某個模塊中的全部函數導入,格式為: from somemodule import *
import math # 導入 match 模塊 print(math.pow(2,3)) import math as m ## 給 math 取別名 m print(m.pow(2,3)) from math import pi # 導入 math 中的常量 pi print(pi) from math import pow,pi,e # 導入 math 中的常量 pi,e print(pow(2,3)) from math import * # 導入 match 模塊 print(pow(2,3))
Python 自帶標准庫 https://docs.python.org/zh-cn/3.7/library/
一般從編譯器的以下目錄中查找模塊,或從相同目錄中查找。
import sys print(sys.path) ['', 'C:\\Python310\\Lib\\idlelib', 'C:\\Python310\\python310.zip', 'C:\\Python310\\DLLs', 'C:\\Python310\\lib', 'C:\\Python310', 'C:\\Python310\\lib\\site-packages']
REF
https://www.runoob.com/python3/python3-basic-syntax.html