17、Python對象操作全解析:同一運算符、成員運算符與整數緩存機制實戰

適合人群:零基礎自學者 | 編程小白快速入門
閱讀時長:約8分鐘

文章目錄

  • 一、問題:Python 同一運算符的本質與實戰?
    • 1、例子1:雙胞胎身份證驗證
    • 2、答案:
      • (1)is 同一運算符介紹
      • (2)is與==區別
  • 二、問題:Python整數緩存機制深度解析?
    • 1、例子1:小整數緩存驗證(交互模式)
    • 2、例子2:文件模式下的特殊緩存規則
    • 3、答案:
      • (1)int整數緩存
  • 三、問題:Python的成員運算符?
    • 1、例子1:購物清單檢查
    • 2、答案:
      • (1)成員運算符介紹
  • 四、動手試一試
    • 任務1:同一運算符驗證
    • 任務2:智能門禁權限驗證

一、問題:Python 同一運算符的本質與實戰?

1、例子1:雙胞胎身份證驗證

# 創建兩個長相相同的雙胞胎(值相同)  
twin1 = "張三"  
twin2 = "張三"  # 檢查是否是同一個人(內存地址)  
print(twin1 is twin2)    # 輸出:True → Python字符串駐留機制優化內存使用  # 創建兩個不同的字符串對象  
twin3 = "張" + "三"  
twin4 = "張三"  
print(twin3 is twin4)    # 輸出:True(解釋同上)  # 強制創建不同對象(長字符串)  
profile1 = "張三_身份證號:110101199901011234"  
profile2 = "張三_身份證號:110101199901011234"  
print(profile1 is profile2)  # 輸出:False → 長字符串內存地址不同  
print(profile1 == profile2)  # 輸出:True → 內容相同  

2、答案:

(1)is 同一運算符介紹

is 同一運算符用于比較兩個對象的儲存單元,實際比較的是對象的地址。

運算符描述
isis是判斷兩個標識符是不是引用同一個對象
is notis not 是判斷兩個標識符是不是引用不同對象

(2)is與==區別

在這里插入圖片描述

  1. is 用于判斷兩個變量引用對象是否為同一個,既比較對象的地址。
  2. == 用于判斷引用變量引用對象的值是否相等,默認調用對象的 _eq_() 方法。
  3. is 運算符比 == 效率高,在變量和 None 進行比較時,應該使用is

二、問題:Python整數緩存機制深度解析?

1、例子1:小整數緩存驗證(交互模式)

# 在Python交互模式(REPL)中測試  
a = 100  
b = 100  
print(a is b)  # 輸出:True → 小整數被緩存復用  c = 257  
d = 257  
print(c is d)  # 輸出:False → 超出緩存范圍(-5~256)  

2、例子2:文件模式下的特殊緩存規則

# 文件名:test_cache.py  
a = 257  
b = 257  
print(a is b)  # 輸出:True → 文件模式下相同字面量會被優化為同一對象  c = 1000  
d = 1000  
print(c is d)  # 輸出:True(文件模式下)  

3、答案:

(1)int整數緩存

  1. 交互模式下,Python為優化性能,對小整數進行預緩存處理,范圍[-5,256],底層通過C語言數組實現,連續分配空間,便于查找,而非是所有整數對象。
  2. 文件模式下,所有數字都會緩存,范圍是[-無窮大,+無窮大]。[-5,256]仍然底層用數組實現;不在[-5,256]出現的數,緩存到鏈表中,不連續分配空間。

關鍵規則速查表

模式緩存范圍典型現象
交互模式-5 ~ 256257以上整數每次新建對象
文件模式不限相同字面量自動復用緩存對象

三、問題:Python的成員運算符?

1、例子1:購物清單檢查

# 定義購物清單  
shopping_list = ["牛奶", "面包", "雞蛋", "蘋果"]  # 檢查是否要買香蕉  
need_banana = "香蕉" in shopping_list  
print(f"需要購買香蕉嗎?{need_banana}")  # 輸出:False  # 檢查是否已買雞蛋  
egg_check = "雞蛋" not in shopping_list  
print(f"雞蛋還沒買嗎?{egg_check}")      # 輸出:False(已購買)  

2、答案:

(1)成員運算符介紹

innot in :成員運算符測試實例中包含了一系列的成員,包括字符串、列表或元組。

運算符描述
in如果在指定的序列中找到值返回 True,否則返回 False
not in不在,則返回True

四、動手試一試

任務1:同一運算符驗證

# 根據整數緩存規則判斷輸出結果  
a = -5  
b = -5  
print(a is b)  # 輸出:_____  c = 257  
d = 257  
print(c is d)  # 輸出:_____  # 提示:在Python文件中運行

參考答案:

print(a is b)  # True(小整數緩存范圍[-5,256])  
print(c is d)  # True(文件模式下相同字面量復用對象)  

解析

  1. 文件模式下所有相同字面量整數會復用同一對象
  2. 交互模式中超出-5~256范圍的整數會創建新對象

任務2:智能門禁權限驗證

allowed_users = ["張三", "李四", "王五"]  
current_user = "李四"  # 補全成員運算符判斷用戶權限  
access = ______  
print(f"訪問權限:{access}")  # 目標輸出:True  

參考答案:

access = current_user in allowed_users  

關鍵點

  1. in 運算符直接檢查元素是否存在于集合中
  2. 適用于字符串、列表、元組等可迭代對象

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

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

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


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

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

相關文章

使用auto-coder將kotti項目的pyramid依賴從1.x升級到2.x,將SQLALchemy從1.x升級到2.x

緣起 kotti是一個非常好的基于pyramid框架的web搭建項目,但是由于作者離世,已經3年沒有更新了。 嘗試使用auto-coder將kotti項目的pyramid依賴從1.x升級到2.x,同時發現SQLALchemy依賴也有問題,將SQLALchemy從1.x升級到2.x 開始…

luckysheet的使用——17.將表格作為pdf下載到本地

luckysheet源碼里面自帶有打印按鈕,但是功能是無法使用的,所以我把該功能重寫了一遍 1.在menuButton.js文件中找到源碼打印按鈕的觸發事件: $("#luckysheet-icon-print").click(function () {}2.使用自己寫的掛載方法 window.pr…

仿真APP助力提升卡車駕駛室駕乘舒適度與安全性

駕駛室作為卡車的重要組成部分,其振動特性對于駕駛員的舒適度和長期健康具有至關重要的影響。振動不僅會導致駕駛員疲勞、分散注意力,還可能引發一系列健康問題。為了確保卡車在復雜路面工況下駕駛室結構不受破壞,并保持良好的NVH性能&#x…

功能強大且易于使用的 JavaScript 音頻庫howler.js 和AI里如何同時文字跟音頻構思想法

howler.js 是一個功能強大且易于使用的 JavaScript 音頻庫,它提供了跨瀏覽器的音頻播放功能,支持多種音頻格式,并且具有豐富的 API,可以方便地控制音頻的播放、暫停、循環、音量等。下面是如何在 Vue 項目中使用 howler.js 實現音…

JUC入門(七)

14、ForkJoin ForkJoin框架是Java中用于并行執行任務的框架,特別適合處理可以分解為多個子任務的復雜計算。它基于“分而治之”的思想,將一個大任務分解為多個小任務,這些小任務可以并行執行,最后將結果合并。 ForkJoin框架的核…

第 7 章:綜合回顧與性能優化

本章目標: 系統化地回顧各類外設接口選型原則 深入探討多接口并存時的資源沖突與管理策略 掌握軟硬件協同的性能分析方法,快速定位并消除瓶頸 總結一整套從架構設計到現場調試的最佳實踐與防坑指南 7.1 綜合選型決策矩陣(深度分析) 除了前文的基礎矩陣,這里引入兩個更細化…

交換機的連接方式堆疊和級聯

以下是交換機的堆疊和級聯各自的優缺點總結,幫助快速對比選擇: ?一、堆疊(Stacking)? ?優點 ?高性能 堆疊鏈路帶寬高(如10G/40G/100G),成員間數據通過背板直連,無帶寬瓶頸。支…

C++高效求解非線性方程組的實踐指南

非線性方程組的求解是科學與工程計算中的核心問題之一,涉及物理建模、機器學習、金融分析等多個領域。C因其高性能和底層控制能力成為此類問題的首選語言,但如何高效實現求解仍存在諸多挑戰。本文從算法選擇、工具應用、穩定性優化及性能提升四個維度&am…

2025年- H42-Lc150 --146. LRU緩存(哈希表,雙鏈表)需二刷--Java版

1.題目描述 2.思路 LRU(最近最少使用):如果緩存的容量為2,剛開始的兩個元素都入棧。之后該2元素中有其中一個元素(重點元素)被訪問。把最近訪問過的重點元素保留,另一個邊緣元素就得離開緩存了。 下面是l…

5G 網絡中 DNN 的深度解析:從基礎概念到核心應用

摘要 本文深度剖析 5G 網絡中 DNN(數據網絡名稱)的核心作用與運行機制,從基礎概念入手,詳細闡述 DNN 在會話管理、用戶面資源分配、切片選擇等方面的關鍵功能。通過實際應用場景分析與技術實現細節探討,揭示 DNN 如何助力 5G 網絡滿足多樣化業務需求,為 5G 網絡部署、優…

MLpack 開源庫介紹與使用指南

MLpack 開源庫介紹與使用指南 1. MLpack 簡介 MLpack 是一個快速、靈活的 C 機器學習庫,專注于可擴展性、速度和易用性。它提供了大量經典的機器學習算法實現,包括: 監督學習(分類、回歸)無監督學習(聚類…

Python版scorecardpy庫woebin函數使用

scorecardpy 是一款專門用于評分卡模型開發的 Python 庫,由謝士晨博士開發,該軟件包是R軟件包評分卡的Python版本。量級較輕,依賴更少,旨在簡化傳統信用風險計分卡模型的開發過程,使這些模型的構建更加高效且易于操作。…

英語寫作中“假設”suppose, assume, presume 的用法

一、suppose 是給出推理的前提,與事實無關,例如: Suppose x >0. Then the square root of x is a real number. (假設x大于0,則x的平方根是實數。) Suppose Jack and Alice share a private channel. …

CAD標注樣式如何設置?詳細教程來了

CAD中有很多的標注,比如線性標注,對齊標注,坐標標注,面積標注,直徑標注,弧長標注等等,標注的種類多,標注的樣式也多,今天來給大家介紹一下浩辰CAD看圖王中如何設置不同的…

vscode include總是報錯

VSCode 的 C/C 擴展可以通過配置 c_cpp_properties.json 來使用 compile_commands.json 文件中的編譯信息,包括 include path、編譯選項等。這樣可以確保 VSCode 的 IntelliSense 與實際編譯環境保持一致。 方法一:直接指定 compile_commands.json 路徑…

自動化立體倉庫WCS與PLC通訊設計規范

導語 大家好,我是社長,老K。專注分享智能制造和智能倉儲物流等內容。歡迎大家使用我們的倉儲物流技術AI智能體。 新書《智能物流系統構成與技術實踐》 新書《智能倉儲項目出海-英語手冊,必備!》 完整版文件和更多學習資料&#xf…

【window QT開發】簡易的對稱密鑰加解密工具(包含圖形應用工具和命令行工具)

前言 項目開發時,配置文件中某些信息不適合直接明文顯示,本文提供基于對稱密鑰的AES-256算法的加解密工具,可集成到項目中。 AES講解 以下是我分享的一個在國產信創系統(Linux)下使用openssl實現AES加解密的博文 對稱加密--AES加解密 本文…

「極簡」扣子(coze)教程 | 小程序UI設計進階(二)!讓系統動起來,“禁用”,“加載”狀態設置

大家好,上一期大師兄通過一個例子來介紹一下扣子界面中“可見性”的應用。今天大師兄想再進一步介紹控件中的其他一些重要的屬性。 扣子(coze)編程 「極簡」扣子(coze)教程 | 小程序UI設計進階!控件可見性設置 「極簡」扣子(coze…

前端三件套之html詳解

目錄 一 認識 二 標簽的分類 三 標簽 body標簽 標題標簽 段落標簽 換行標簽 水平分割線 文本格式化標簽 圖片標簽 音頻標簽 鏈接標簽 列表標簽 表格標簽 表單標簽 input標簽 下拉菜單標簽 textarea文本域標簽 label標簽 語義化標簽 button標簽 字符實體 …

Google Play 賬號創建及材料準備

1:注冊一個關聯Google Play賬號的Google賬號,關聯郵箱進行自動轉發 2:準備一張Visa、Master、JCB、運通卡或Discover等美國信用卡或全球付虛擬信用卡,用來支付25美金的GP賬號注冊費 3:為避免出現關聯原因被封&#x…