適合人群:零基礎自學者 | 編程小白快速入門
閱讀時長:約5分鐘
文章目錄
- 一、問題:Python的字符串駐留機制?
- 1、例子1:字符串駐留現象
- 2、答案:
- (1)字符串駐留
- 二、問題:Python字符串比較和同一性?
- 1、例子1:用戶登錄驗證系統
- 2、例子2:關鍵特性說明
- 3、答案:
- (1)同一操作符判斷字符串相同
- 三、問題:Python的成員操作符判斷子字符串?
- 1、例子1:檢查單詞中是否包含特定字母
- 2、答案:
- (1)成員操作符判斷子字符串
- 四、動手試一試
- 任務1:驗證字符串駐留機制
- 任務2:敏感詞檢測系統
一、問題:Python的字符串駐留機制?
1、例子1:字符串駐留現象
str1 = "Python" # 簡單字符串會被駐留
str2 = "Python" print(id(str1)) # 輸出內存地址(例如:140245378789616)
print(id(str2)) # 輸出相同的內存地址(例如:140245378789616)
print(str1 is str2) # True(證明是同一個對象)
2、答案:
(1)字符串駐留
- 字符串駐留機制是Python的內存優化技術。當多個變量被賦予相同內容的字符串時,Python不會重復創建新對象,而是讓這些變量共享同一塊內存地址。
- 簡單說:常量字符串只保留一份。
二、問題:Python字符串比較和同一性?
1、例子1:用戶登錄驗證系統
# 用戶輸入的驗證碼(來自表單)
user_input = "AbC123" # 系統生成的驗證碼(存儲在數據庫)
system_code = "AbC123" # 值相等判斷(內容是否相同)
if user_input == system_code: print("驗證碼正確 ?") # 輸出:驗證碼正確 ?
else: print("驗證碼錯誤 ?") # 同一性判斷(是否同一個對象)
if user_input is system_code: print("指向內存中的同一對象")
else: print("不同內存對象") # 輸出:不同內存對象
輸出結果:
驗證碼正確 ?
不同內存對象
2、例子2:關鍵特性說明
name1 = "Python"
name2 = "Python"
name3 = "Py" + "thon" # 拼接創建新字符串 # 值相等檢查
print(name1 == name2) # True(內容相同)
print(name1 == name3) # True(內容相同) # 同一性檢查(受駐留機制影響)
print(name1 is name2) # True(小字符串共享內存)
print(name1 is name3) # False(新創建的對象)
內存原理圖示:
name1 → [P][y][t][h][o][n] ← name2(共享內存)
name3 → [P][y][t][h][o][n](新建獨立內存)
3、答案:
(1)同一操作符判斷字符串相同
-
可以直接使用
==
、!=
對字符串進行比較,是否值相同。 -
使用
is
、not is
,判斷2個對象是否相同,比較的是對象的地址,即id(obj1)
是否和id(obj2)
相等。 -
核心概念對比
操作 | 符號 | 檢查內容 | 生活類比 |
---|---|---|---|
值相等 | == | 內容是否完全相同 | 比較兩本書內容是否相同 |
同一性 | is | 是否同一內存對象 | 比較兩本書是否同一本書 |
三、問題:Python的成員操作符判斷子字符串?
1、例子1:檢查單詞中是否包含特定字母
# 檢查單詞"apple"中是否包含特定字母
word = "apple"# 檢查是否包含字母"a"
if "a" in word:print("? 包含字母'a'") # 會輸出這行# 檢查是否包含字母"z"
if "z" not in word:print("? 不包含字母'z'") # 會輸出這行
輸出結果:
? 包含字母'a'
? 不包含字母'z'
2、答案:
(1)成員操作符判斷子字符串
-
in
、not in
關鍵字,判斷某個字符(子字符串)是否存在于字符串中。 -
核心規則說明
操作符 | 代碼示例 | 檢查內容 |
---|---|---|
in | "Python" in "我愛Python" | 子串是否存在于字符串中 |
not in | "Java" not in "Python教程" | 子串是否不存在于字符串中 |
四、動手試一試
任務1:驗證字符串駐留機制
# 創建兩個相同內容的字符串
str1 = "Python教程"
str2 = "Python教程" # 驗證是否為同一對象
is_same_object = ______ # 使用is操作符 print(f"是否為同一對象:{is_same_object}")
print(f"str1內存地址:{id(str1)}")
print(f"str2內存地址:{id(str2)}")
參考答案:
is_same_object = str1 is str2 # True(簡單字符串會被駐留)
解析:
- Python會對簡單字符串自動啟用駐留機制
is
操作符驗證對象同一性
任務2:敏感詞檢測系統
# 用戶評論內容
comment = "這個產品非常好用!" # 檢測是否包含敏感詞"垃圾"
has_sensitive_word = ______ # 使用in操作符 if not has_sensitive_word: # 當不存在敏感詞時print("? 評論通過審核")
else: print("? 檢測到敏感詞")
參考答案:
has_sensitive_word = "垃圾" in comment # False
關鍵點:
- 使用
in
判斷子字符串是否存在 - 返回布爾值用于條件判斷
📢 互動區
👉 遇到問題?在評論區:
- 描述問題(帶代碼截圖更好)
- 分享學習心得
- 給文章提建議
? 支持作者:點贊 | 收藏 | 關注
你的三連是我更新的最大動力!