23、Python字符串核心機制解析:駐留原理、對象比較與成員檢測實戰

適合人群:零基礎自學者 | 編程小白快速入門
閱讀時長:約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)字符串駐留

  1. 字符串駐留機制是Python的內存優化技術。當多個變量被賦予相同內容的字符串時,Python不會重復創建新對象,而是讓這些變量共享同一塊內存地址
  2. 簡單說:常量字符串只保留一份。

二、問題: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)同一操作符判斷字符串相同

  1. 可以直接使用==!=對字符串進行比較,是否值相同。

  2. 使用isnot is,判斷2個對象是否相同,比較的是對象的地址,即id(obj1)是否和id(obj2)相等。

  3. 核心概念對比

操作符號檢查內容生活類比
值相等==內容是否完全相同比較兩本書內容是否相同
同一性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)成員操作符判斷子字符串

  1. innot in關鍵字,判斷某個字符(子字符串)是否存在于字符串中。

  2. 核心規則說明

操作符代碼示例檢查內容
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(簡單字符串會被駐留)

解析

  1. Python會對簡單字符串自動啟用駐留機制
  2. is操作符驗證對象同一性

任務2:敏感詞檢測系統

# 用戶評論內容  
comment = "這個產品非常好用!"  # 檢測是否包含敏感詞"垃圾"  
has_sensitive_word = ______  # 使用in操作符  if not has_sensitive_word:   # 當不存在敏感詞時print("? 評論通過審核")  
else:  print("? 檢測到敏感詞")  

參考答案:

has_sensitive_word = "垃圾" in comment  # False

關鍵點

  1. 使用in判斷子字符串是否存在
  2. 返回布爾值用于條件判斷

📢 互動區
👉 遇到問題?在評論區:

  1. 描述問題(帶代碼截圖更好)
  2. 分享學習心得
  3. 給文章提建議

? 支持作者:點贊 | 收藏 | 關注
你的三連是我更新的最大動力!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84452.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pikachu靶場通關筆記22-2 SQL注入05-2-update注入(報錯法)

目錄 一、SQL注入 二、update注入 三、報錯型注入 四、源碼分析 1、代碼審計 2、滲透思路 五、滲透實戰 1、滲透準備 2、獲取數據庫名database 3、獲取表名table 4、獲取列名column 5、獲取字段 本系列為通過《pikachu靶場通關筆記》的SQL注入關卡(共10關&#xff…

【prometheus+Grafana篇】基于Prometheus+Grafana實現Redis數據庫的監控與可視化

💫《博主主頁》: 🔎 CSDN主頁 🔎 IF Club社區主頁 🔥《擅長領域》:擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控;并對SQLserver、NoSQL(MongoDB)有了…

R語言速釋制劑QBD解決方案之四

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》速釋制劑混合和潤滑工藝研究的R語言解決方案。 原料粒徑分布與混合次數對混合均一性的影響 由于acetriptan 的溶解度低,acetriptan 需要粉碎以提高生物利用度。粉碎后的原料…

用python玩轉大語言模型——從 RNN 到文本生成大語言模型的奇幻之旅

用python玩轉大語言模型——從 RNN 到文本生成大語言模型的奇幻之旅 第一部分:RNN原理及其結構(魔法師的記憶水晶球) 1.1 經典RNN結構(時光旅行者的備忘錄) 核心概念 時間循環:RNN通過隱藏狀態h在時間步之間傳遞信息,形成閉環結構參數共享:每個時間步使用相同的權重…

數據結構(9)排序

一、常見排序算法 排序在生活中無處不在,上學這么多年班級排名啥的總有吧,不可能一次都沒見過;打游戲有的排行榜不也是有排序的思想在里面,排序倒不是什么特殊的數據結構,但是是非常重要的算法思想,所以在初…

量子計算導論課程設計 之 PennyLane環境搭建

文章目錄 具體配置conda 虛擬環境配置Pennylane 正所謂,磨刀不誤砍柴工,想要進行量子計算導論的課程設計,首先就是搭建好平臺,推薦大家就是本地搭建,那么下面有三種選擇 QiskitTensorFlow QuantumPennylane 具體配置…

nginx ./nginx -s reload 不生效

問題 nginx ./nginx -s reload 不生效 解決 不是改opt/nginx下的配置文件是改/usr/local/nginx下的配置文件改之前做好備份

建造者模式深度解析與實戰應用

作者簡介 我是摘星,一名全棧開發者,專注 Java后端開發、AI工程化 與 云計算架構 領域,擅長Python技術棧。熱衷于探索前沿技術,包括大模型應用、云原生解決方案及自動化工具開發。日常深耕技術實踐,樂于分享實戰經驗與…

VScode - 我的常用插件01 - 主題插件Noctis

導言 Noctis 是一款為 Visual Studio Code 提供的主題插件,主打高對比度、護眼、美觀。它有多種配色風格,適合不同的開發者審美和工作場景。 一、安裝Noctis 二、設置顏色主題 三、測試主題 如上所示,有11種主題背景可以選擇。這里&#xff…

【IQA技術專題】圖像質量評價IQA技術和應用綜述(萬字長文!!)

專題介紹 圖像質量評價(Image Quality Assessment, IQA)是圖像處理、計算機視覺和多媒體通信等領域的關鍵技術之一。IQA不僅被用于學術研究,更在影像相關行業內實現了完整的商業化應用,涉及影視、智能手機、專業相機、安防監控、…

突然虛擬機磁盤只剩下幾十K

第一步:查找哪些文件大于 100M find / -size 100M 第二步:刪除掉無用的 log 發現,磁盤剩余空間并沒有變大 假如一個文件正在被使用,你刪除之后也是不會釋放存儲空間的。需要關閉相應的服務才能釋放。

黑馬教程強化day2-1

目錄 一、Set集合1.Set集合特點2.Set集合分類3.hashSet底層原理:(基于哈希表存儲數據的)代碼演示 5.hashSet集合元素的去重操作(有些情況搞不動)代碼演示 6.LinkedHashSet的底層原理(不常用,所以沒有代碼演…

【實習總結】C++ 通過pugi::xml庫對xml文件進行操作

目錄 相關背景 pugi::xml簡概 將配置信息寫入xml文件 讀取xml文件中的配置信息 相關背景 當我們需要將某些配置信息寫入項目目錄下的xml文件,或者再程序啟動時,加載項目下已有的的配置信息(.xml),此時,我…

Linux文件回收機制:安全刪除文件不怕誤刪

Linux文件回收機制:安全刪除文件不怕誤刪 文章目錄 Linux文件回收機制:安全刪除文件不怕誤刪一、Linux默認沒有“回收站”?二、打造你自己的Linux回收站1. 建立回收站目錄2. 創建軟刪除命令remove3. 定時清理回收站4. 替換rm命令5. 完整腳本 …

數據結構排序

目錄 1、插入排序 2、希爾排序 3、堆排序 4、直接選擇排序 5、快排 6、歸并排序 補&#xff1a;計數排序 1、插入排序 void InsertSort(int* arr, int n) {int i 0;for (int i 0; i 1 < n; i){int end i;int tmp arr[end 1];while (end > 0){if (arr[end] &…

Spring聲明式事務生效是有條件滴!

在日常工作中&#xff0c;經常使用Transactional 注解進行事務的聲明&#xff0c;但如果發現事務未生效&#xff0c;可以從下面幾個方面進行排查。 常見失效場景總結 場景原因解決方案內部方法調用繞過了Spring代理注入自身或使用AopContextprivate方法AOP無法增強改為public方…

Code Composer Studio快捷鍵

文本編輯 編輯、查找、替換功能快捷鍵 功能快捷鍵撤銷CutZ重做CutY剪切CtrlX復制CtrlC粘貼CtrlV刪除Delete全選CtrlA代碼塊選中AltShiftA查找、替換Ctrl F查找下一個匹配的字符串CtrlK查找上一個匹配的字符串CtrlShiftK查看接口注釋&#xff08;文檔&#xff09;F2查看函數幫…

從認識AI開始-----生成對抗網絡(GAN):通過博弈機制,引導生成

前言 生成對抗網絡&#xff08;GAN&#xff09;是lan J. Goodfellow團隊在2014年提出的生成架構&#xff0c; 該架構自誕生起&#xff0c;就產生了很多的話題&#xff0c;更是被稱為生成對抗網絡是“新世紀以來機器學習領域內最有趣的想法”。如今&#xff0c;基于生成對抗網絡…

限流算法java實現

參考教程&#xff1a;2小時吃透4種分布式限流算法 1.計數器限流 public class CounterLimiter {// 開始時間private static long startTime System.currentTimeMillis();// 時間間隔&#xff0c;單位為msprivate long interval 1000L;// 限制訪問次數private int limitCount…

Maven 構建性能優化深度剖析:原理、策略與實踐

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…