一、變量與命名規則
1.0 變量名與值
變量名是值的容器,用於存儲數值。實際上,數值存儲在內存中,變量名是數值內存的訪問地址的別名(可理解為名稱),
1.1 變量命名規範
必須遵守(硬性要求)
- 長度建議 不超過 256 個字符(雖無強制限制,但過長影響可讀性)。
- 不能包含空格。
- 只能包含:字母(a-z, A-Z)、數字(0-9)、下劃線(_)。
- 區分大小寫:
name和Name是兩個不同變量。 - 不能以數字開頭:如
1var是非法的。
建議(良好編程習慣)
- 變量名應有意義:能反映其用途(如
user_age比x更好),方便其他人或後期閲讀(後期維護)。 - 不要使用 Python 關鍵字、函數名、調用的庫名、模塊名作為變量名:會導致錯誤或難以調試。
舉例:
a = 1
print(a)
# 我們將1賦值給變量名a,
1.2 關鍵字與函數名
關鍵字與函數名實際上是特殊的變量名,內置了魔法方法 __call__ 使其可以調用。關鍵字是強制性的,函數名不是強制性的。魔法方法在類、對象區域【暫時瞭解即可】
關鍵字
- 這些詞有特殊語法含義,不能用作變量名,否則報錯為語法錯誤
SyntaxError。 - 完整列表(共 35 個,截至 Python 3.11):
'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
'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'
- 查看關鍵字列表的方法:
import keyword
print(keyword.kwlist)
函數名
- 函數分為兩類:
- 內置函數:Python內置定義的函數,如
print(),len(),type()等。 - 自定義函數:由用户使用
def或lambda定義的函數。
二、註釋
2.1 單行註釋
- 使用
#:
# 這是一條單行註釋
x = 1 # 行尾也可以加註釋
- 也可用字符串(不推薦,僅作了解):
"這其實不是標準註釋,只是未使用的字符串"
'同上'
2.2 多行註釋
- 使用三對引號:
"""..."""或'''...'''
'''
這是多行註釋
可以寫很多行
通常用於函數或模塊説明
'''
建議:每行註釋不超過 120 個字符,保持代碼整潔。
2.3 函數説明
三、數據結構
3.1 數字型
|
類型
|
説明
|
示例
|
|
|
整數
|
|
|
|
浮點數(帶小數)
|
|
|
|
布爾值(邏輯值)
|
|
|
|
複數
|
|
關於布爾型 bool
- 在 Python 3 中,
bool是int的子類:
True == 1→TrueFalse == 0→True
- 哪些值轉為
False?:
NoneFalse- 數字零:
0,0.0,0j - 空容器:
''(空字符串)、()(空元組)、[](空列表)、{}(空字典/集合)
- 其他所有值轉為
True
複數 complex
- 兩種寫法:
z1 = 3 + 4j
z2 = complex(3, 4) # 實部=3,虛部=4
- 注意:實部和虛部在內部都存儲為
float類型。
3.2 非數字型
|
類型
|
英文名
|
説明
|
|
字符串
|
|
文本數據,如 |
|
列表
|
|
有序、可變序列,如 |
|
元組
|
|
有序、不可變序列,如 |
|
字典
|
|
鍵值對映射,如 |
|
集合
|
|
無序、不重複元素集合,如 |
空值:None
- 表示“無值”或“空”,是
NoneType類型的唯一實例。 - 常用於函數無返回值時的默認返回。
3.3 數據類型轉換
|
函數
|
作用
|
|
|
轉為整數
|
|
|
轉為浮點數
|
|
|
轉為複數(x 為實部,y 為虛部)
|
|
|
轉為字符串
|
|
|
轉為列表
|
|
|
轉為元組
|
|
|
轉為集合
|
|
|
轉為字典
|
|
|
返回對象的“官方”字符串表示(常用於調試)
|
示例:
str(123) # '123' int("45") # 45 float(True) # 1.0
3.4 查詢數據類型
|
方法
|
説明
|
|
|
返回 |
|
|
判斷 |
示例:
x = 100 print(type(x)) # <class 'int'> print(isinstance(x, int)) # True print(isinstance(x, (int, float))) # True(檢查是否為 int 或 float)
四、運算符
4.1 賦值運算符
|
運算符
|
説明
|
示例
|
|
|
基本賦值
|
|
|
|
多變量同值(共享同一內存地址)
|
任意變量值改變,其他變量值也會改變
|
|
|
多變量分別賦值(解包) |
增強賦值(複合賦值)
|
運算符
|
等價形式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
海象運算符(表達式內賦值)
|
4.2 算術運算符
|
符號
|
含義
|
|
|
加法
|
|
|
減法
|
|
|
乘法
|
|
|
冪運算(如 |
|
|
除法(結果為 float)
|
|
|
整除(向下取整)
|
|
|
取模(餘數)
|
運算優先級(遵循數學規則):** > * = / = // = % > + = -
4.3 比較運算符
|
運算符
|
含義(返回 |
|
|
等於
|
|
|
不等於
|
|
|
大於 / 大於等於
|
|
|
小於 / 小於等於
|
4.4 邏輯運算符
|
運算符
|
含義(返回 |
優先級
|
|
|
非
|
最高
|
|
|
與
|
中
|
|
|
或
|
最低
|
示例:
條件1 or 條件2
4.5 成員運算符
|
運算符
|
含義
|
示例
|
|
|
是否在容器中
|
|
|
|
是否不在容器中
|
|
4.6 身份運算符(比較內存地址)
|
運算符
|
含義
|
示例
|
|
|
是否為同一個對象(內存地址相同)
|
|
|
|
是否不是同一個對象
|
⚠️ 注意:
is與==不同!a = [1, 2] b = [1, 2] print(a == b) # True(值相等) print(a is b) # False(不同對象)
五、Python 函數基礎
5.1 常用內置函數(粗略認識)
|
函數
|
常用參數
|
解釋
|
示例
|
|
|
字符型打印
|
||
|
|
|||
5.2 參數類型
形參(定義時)
- 必要參數:調用時必須提供。
*args:接收任意數量的非關鍵字參數,打包成 元組。
def func(*args):
print(args) # args 是一個 tuple
func(1, 2, 3) # (1, 2, 3)
**kwargs:接收任意數量的關鍵字參數,打包成 字典。
def func(**kwargs):
print(kwargs) # kwargs 是一個 dict
func(name="Alice", age=25) # {'name': 'Alice', 'age': 25}
💡
*和**也用於“拆包”(unpacking)。
5.3 內置函數底層實現【進階內容,新手跳過】
iter():
底層對象含有 __iter__
next():底層對象含有 __next__
obj
len(obj) is obj.__len__()
srt(obj) is obj.__str__()
iter(obj) is obj.__iter__()
def func():return
func() is func.__call__()
|
函數
|
用途
|
|
|
返回對象的迭代器
|
|
|
獲取迭代器的下一個元素
|
5.4 函數定義增強語法
返回值類型提示(Type Hint)
def greet(name: str) -> str:
return f"Hello, {name}"
-> str:表示預期返回字符串。- 注意:這只是提示,Python 不會強制檢查類型。
省略號 ...
- 是內置對象
Ellipsis的字面量。 - 常用於佔位(如抽象方法):
def todo_function():
...
九、面向對象
類
對象
魔法方法
十、字符串(str)詳解
10.1 多行字符串
text = """
這是
多行
字符串
"""
10.2 索引(Indexing)
- 字符串是序列類型,支持索引。
- 正向索引:從
0開始(s[0]是第一個字符)。 - 反向索引:從
-1開始(s[-1]是最後一個字符)。
10.3 切片(Slicing)
- 語法:
s[start:stop:step]
start:起始位置(包含)stop:結束位置(不包含)step:步長(可省略,默認為 1)
- 常見用法:
s = "abcdef"
s[:] # "abcdef"(複製整個字符串)
s[::-1] # "fedcba"(反轉字符串)
s[1:4] # "bcd"
10.4 常用字符串方法
|
方法
|
説明
|
|
|
轉小寫
|
|
|
轉大寫
|
|
|
去除首尾空白
|
|
|
去除左側空白
|
|
|
去除右側空白
|
|
|
按 |
|
|
查找子串位置(未找到返回 -1)
|
|
|
替換子串
|
|
|
獲取字符串長度(字符數)
|
10.5 轉義字符
|
轉義符
|
含義
|
|
|
換行
|
|
|
製表符(Tab)
|
|
|
單引號
|
|
|
雙引號
|
|
|
反斜槓本身
|
常用函數
容器類型
列表
字典
元組
集合
條件語句
嵌套
循環語句
for循環
while循環
任務目標:手寫氣泡排序法,楊輝三角
十一、庫
常用必會的Python內置庫:(至少需要了解)
|
庫名
|
用途
|
|
|
獲取時間戳、延遲等
|
|
|
處理日期和時間
|
|
|
生成隨機數
|
|
|
與操作系統交互(文件、路徑、環境變量等)
|
|
|
正則表達式,自定義規則提取或檢查字符【AI 問一下就知道是什麼了】
|
|
|
簡易 UI 界面【學會了可以給自己的對象寫一個表白動畫】
|
第三方庫:
安裝庫【建議使用 uv 包管理器來安裝】
自定義庫:
十二、變量作用域(Scope)
Python 中變量的作用域按 LEGB 規則查找:
- Local(局部):函數內部定義的變量。
- Enclosing(嵌套):外層函數的變量(閉包)。
- Global(全局):模塊級別定義的變量。
- Built-in(內建):Python 內置名稱(如
len,print)。
12.1 局部作用域
- 在
def內定義的變量。 - 一旦在函數內對變量賦值,它就被視為局部變量。
- 若只讀取未賦值,則會查找全局變量。
12.2 全局變量聲明
- 使用
global聲明,可在函數內修改全局變量:
x = 10
def func():
global x
x = 20
12.3 嵌套作用域與 nonlocal
- 在嵌套函數中,若要修改外層函數的變量,使用
nonlocal:
def outer():
x = 1
def inner():
nonlocal x
x = 2
inner()
print(x) # 輸出 2
十三、異常處理
基本結構:try-except
try:
# 可能出錯的代碼
risky_code()
except ValueError:
# 捕獲特定異常
print("值錯誤!")
except Exception as e:
# 捕獲其他所有異常
print("發生錯誤:", e)
try:嘗試執行可能引發異常的代碼塊。except:當異常發生時執行的處理代碼。
- 可指定異常類型(如
ValueError,TypeError)。 - 也可捕獲通用異常
Exception。
✅ 良好實踐:儘量捕獲具體異常類型,而非籠統使用
except:。
九、佔位符
代碼結構佔位符
表示“此處待實現”。【將來可能會實現,但要保證結構完整】
...:python內置Ellipsis對象,省略號。pass"""TODO"""
值佔位
None:空值NotImplemented:讓 Python 嘗試 other 的__radd__
格式化佔位【已被新式輸出取代,現較不常用】
%
%s:輸出字符串%d:輸出int類型數字%f:輸出浮點數%.nf:可以保留n位小數,n=0則不保留小數,四捨五入%x:輸出16進制數字- : 使用方式:
print('%s_%d_%f_%x', %(a,b,c,d))
"{ }".format()
- 命名佔位符
- :
"{} {}".format("hello", 123) #-> "hello 123"
- 位置佔位符
- :
"{name} {value} {}".format(2, name="id", value=123)#->"id 123 2"
f"{ }"【格式化輸出】
約定佔位符
_:for循環不調用【推薦】
- :
for _ in range(10):循環體