python學習之運算符

来源:https://www.cnblogs.com/huizhipeng/archive/2018/12/09/10093041.html
-Advertisement-
Play Games

python學習之運算符; 算術運算符; 比較運算符;位運算符; 邏輯運算符; 成員運算符; 身份運算符; ++ 或 -- 自運算符; is 和 ==; 數組的兩種賦值方式區別 ...


目錄

python學習之運算符

本篇文章說明python中的一些運算符,python版本號為python3.6,python2中的內容不再本篇文章內

1. 算術運算符

運算符 描述 實例
+ 兩個對象相加 10+20=30
- 得到負數或是一個數減去另一個數 20-10=10
* 兩個數相乘或是返回一個被重覆若幹次的字元串 2*3=6'py'*3='pypypy'
/ x除以y 5/2=2.5
% 取模,返回除法的餘數 5%3=2
** 冪,返回x的y次冪 2**10=1024
// 取整除,返回商的整數部分(向下取整) 10//3=3

2. 比較運算符

運算符 描述
== 等於 - 比較對象是否相等
!= 不等於 - 比較兩個對象是否不相等
<> 不等於 - 比較兩個對象是否不相等
> 大於 - 返回x是否大於y
< 小於 - 返回x是否小於y
>= 大於等於 - 返回x是否大於等於y。
<= 小於等於 - 返回x是否小於等於y。

3.位運算符

運算符 描述 實例
& 按位與運算符 3&5=1 ,二進位解釋:011 & 101 = 001
| 按位或運算符 3|5=7 ,二進位解釋:011 | 101 = 111
^ 按位異或運算符 3^5=7,二進位解釋:011 ^ 101 = 110
~ 按位取反運算符,~x 類似於 -x-1 ~5 = -6
<< 左移動運算符: 高位丟棄,低位補0。 4<<4=64
>> 右移動運算符 128>>4=8

4. 邏輯運算符

運算符 邏輯表達式 描述 實例
and x and y 布爾"與" 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。 12 and 4 = 412 and False = False
or x or y 布爾"或" 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 12 or 5 = 12
not not x 布爾"非" 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 not 5 = False

5. 成員運算符

運算符 描述 實例
in 如果在指定的序列中找到值返回 True,否則返回 False。 's' in 'asdf' = True
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。 's' not in 'asdf' = False

6. 身份運算符

運算符 描述
is is 是判斷兩個標識符是不是引用自一個對象x is y, 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True,否則返回 False
is not is not 是判斷兩個標識符是不是引用自不同對象 x is not y , 類似id(a) != id(b)。如果引用的不是同一個對象則返回結果 True,否則返回 False。.

id() 函數用於獲取對象記憶體地址。

7.其他

1. 關於++ 或 -- 自運算符

  
  因為在 Python 里的數值和字元串之類的都是不可變對象,對不可變對象操作的結果都會生成一個新的對象。

a = 1
print(id(a))
a += 1
print(id(a))
#輸出結果
1908042784
1908042816

  在 C/java 之類的語言中,把a指向記憶體地址單元數據值由1改成了2。但是在Python中是完全不同的另一套機制。解釋器創建一個新的整數對象 2。然後把這個對象的地址再次分配給 a。
  所以在 Python 中不可能出現C/java 之類那種單獨一行一個 i++,i-- 的。

2. is 和 ==

  
  is 用於判斷兩個變數引用對象是否為同一個, == 用於判斷引用變數的值是否相等。
a is b 相當於 id(a)==id(b)。

3. 數組的兩種賦值方式區別

  在python中給數組賦值的常用方法中有兩個不同的方式

# 第一種
b=a 

# 第一種
b=a[:]

看起來都是一樣的,那麼他們之間有沒有什麼區別呢?當然,區別是有的。區別就是:前者傳遞引用;後者是拷貝。直接=是引用賦值,引用原來的對象;而[:]是重新推導,會生成新的對象。用代碼演示如下:

a = [1, 2, 3, 4]
b = a
c = a[:]
print(id(a))
print(id(b))
print(id(c))
#輸出結果
2294445187016
2294445187016
2294445993544

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 代碼塊的分類 python中分幾種代碼塊類型,它們都有自己的作用域,或者說名稱空間: 文件或模塊整體是一個代碼塊,名稱空間為全局範圍 函數代碼塊,名稱空間為函數自身範圍,是本地作用域,在全局範圍的內層 函數內部可嵌套函數,嵌套函數有更內一層的名稱空間 類代碼塊, 名稱空間為類自身 類中可定義函數,類 ...
  • 集成Spring Boot 2.1,Mybatis,Mybatis Plus,Druid,FastJson,Redis,Rabbit MQ,Kafka等,可使用代碼生成器快速開發項目,使用maven assembly打包發佈 https://geekidea.github.io/fast-sprin... ...
  • python的內建模塊collections有幾個關鍵的數據結構,平常在使用的時候,開發者可以直接調用,不需要自己重覆製造輪子,這樣可以提高開發效率。 1. deque雙端隊列 平常我們使用的python內置list類的append,extend,pop方法都是從list的尾部執行的(pop()預設 ...
  • import os import time # 添加員工信息 def zengjia(): print('請輸入員工的基本信息:') while 1: while 1: id = input("請輸入編號").strip() if not id.isdigit(): print("... ...
  • 轉自:https://blog.csdn.net/apache0554/article/details/53889253 前言:中文編碼問題一直是程式員頭疼的問題,而Python2中的字元編碼足矣令新手抓狂。本文將儘量用通俗的語言帶大家徹底的瞭解字元編碼以及Python2和3中的各種編碼問題。 一、 ...
  • 今天晚上學習《零基礎學Java》,看到第50頁時,發現書上一行代碼自己想不通,這行代碼意思是將123按位取反,程式運行後輸出結果是-124,即~123=-124. 開始我個人理解是123轉換成二進位為:01111011,按位取反後為10000100,即132,與真實輸出結果-124不一致。後來我查閱 ...
  • python學習之數字 1.python數值類型 2. 數字類型轉換 3. 常用函數 3.1 數學函數 3.2 隨機函數 ...
  • 列表(list) 基本操作 比如說我要整理一個近期熱映的電影列表: 列表很像數組,但功能超越數組。列表都是從0開始的,python中列表無需事先聲明類型。 從列表後面加上一個新的元素,比如說加個“無名之輩”,是 方法。 刪除列表最後一個元素: 方法。 兩個列表相銜接,用的是 方法。 我想在某個條件下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...