成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python中令人困惑的操作符

開發 后端
操作符對于現代編程來說絕對是一個至關重要的組成部分。它們通常用于數學運算。Python編程語言有一系列不同的操作符,并且不斷添加新的操作符。

操作符對于現代編程來說絕對是一個至關重要的組成部分。它們通常用于數學運算。Python編程語言有一系列不同的操作符,并且不斷添加新的操作符。

有一個運算符具有一些相當有趣的功能和特點,那就是加等運算符。乍一看,這似乎只是加法和等于操作符的基本組合。雖然可能是這樣,但有一些非常有趣的特性使該操作符與眾不同。今天,我想展示這個操作符的一些有趣的特點和特性。

概述

在深入研究這個奇怪的操作符之前,我們可能應該熟悉一下該語言中通常如何使用這個操作符。在這個意義上,加號等于可以被認為是加法和斷言的捷徑。而不是像:

  1. x = 5 
  2. xx = x + 5 
  3. print(x) 
  4. 10 

我們可以這樣做:

  1. x = 5 
  2. x += 5 
  3. print(x) 

當然,這種操作符的使用取決于個人偏好。有些用戶可能更喜歡后一種方法,但在我個人看來,我總是發現加號等于運算符可以使這樣的表達式更加簡潔。

可變元組

您很可能熟悉Python中的元組和列表數據結構。這是Python中兩種不同類型的可迭代一維數組,它們之間只有一個鍵差。元組是不可變的結構,這意味著一旦定義,元組就不能被更改。列表當然是可變的,它包含了像append()這樣的方法。

雖然元組不是可變對象,但有一個關鍵的區別是許多程序員在觀察時忽略的。雖然元組本身可能不是可變的,但其中的類型仍然是可變的。元組仍然是一個數據結構,該元組中的數據仍然屬于其各自的類型。然而,Python仍然具有試圖改變不可變類型時可能會出現的拋出。考慮到這個功能,我們可以預期下面的代碼會顯示一個錯誤,說明元組是不可變的。

  1. z = (5, 10, 15) 
  2. z[4] = 15 

然而,為了證明元組中包含的數據仍然是可變的,如果我們要從元組中取出一些數據,我們可以對它進行修改:

  1. newnum = z[3] 

  1. newnum = z[2] 
  2. newnum += 5 
  3. print(newnum) 
  4. 20 

考慮下面的列表元組:

  1. letters = (["S", "T"], 
  2.                  ["A", "D"]) 

元組本身是一個不可變類型。但是,其中的列表,一個字母在字母L后面,另一個字母在字母L前面,仍然是可變的。如果我們現在試著在這張單子上再加一封信,你覺得會發生什么?

  1. letters[0] += "Q" 

正如預期的那樣,我們得到了另一個類型錯誤,因為元組一旦創建就不能更改。但是,只有在對數據結構調用操作符后才會拋出此類型錯誤。換句話說,我們可能遇到了異常,但如果我們現在從元組中打印出列表,我們將看到元素實際上已經被添加到列表中:

  1. print(letters[0]) 
  2. ['S', 'T', 'Q'] 

需要注意的是,它不能直接處理數據類型。Python的有趣之處在于,在基類內部的數據類型和我們可能在基類外部使用的數據類型之間基本上沒有關鍵區別。這意味著我們實際上可以用純Python重寫這些類型。這與大多數語言不同,后者通常包括在語言本身中沒有結構化的基礎數據類型。

信不信由你,這種類型錯誤和元組可變性是Python的特性,而不是bug。乍一看,這里似乎犯了某種錯誤,但考慮到Python的方法學,這一切在某種程度上確實是有意義的。這一切都與Python如何處理數據有關,更重要的是,plus-equals如何處理不同的數據類型。這就是為什么正等號這么棒的部分原因!

仔細看看

現在我們已經知道了加號等于運算符有多奇怪,為了更好地理解其用法中的怪異之處,讓我們來看看該運算符實際上是如何工作的。當然,這將是這個操作符上相同函數的Python實現的一個更粗略的版本。代碼看起來就像我們期望的那樣:

  1. def plusequals(num1, num2): 
  2.     total = num1.__iadd__(num2) 
  3.     num1 = total 

然而,每當我們使用更大的表達式,而不是簡單的數據類型時,我們可以考慮代碼看起來更類似于以下內容:

  1. def plusequals(x[0], element): 
  2.     total = x[0].__iadd__(element) 
  3.    x[0] = total 

當然,正如我們前面提到的,從元組中提取的元素完全可以添加元素。然而,當我們將x的第一個(第0個)索引賦值給新的總數時,就會遇到元組的類型錯誤。

原文鏈接:

https://towardsdatascience.com/pythons-most-confusing-operator-96c67d6e661a

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2023-12-08 11:05:00

GitLinux

2019-04-25 06:07:17

物聯網平臺物聯網IOT

2009-12-16 09:20:25

ScalaErlangRuby

2021-10-31 18:59:55

Python操作符用法

2010-07-14 14:55:07

Perl操作符

2020-12-07 16:56:35

Rails

2020-12-26 16:51:12

Python操作符開發

2024-01-07 20:15:49

Python編程語言

2020-03-03 15:42:33

Python字典合并代碼

2009-08-19 17:26:28

C# 操作符

2009-07-21 09:31:00

Scala操作符

2016-11-17 15:35:51

RxJava操作Subscriber

2009-07-14 18:34:22

Jython操作符重載

2010-07-13 11:11:39

Perl標量

2009-11-30 16:48:08

PHP操作符

2010-02-23 11:18:25

Python 操作符

2009-08-21 09:30:05

is和as操作符

2011-04-08 16:26:14

JavaScript

2010-07-14 14:30:31

Perl操作符

2010-07-19 11:00:24

Perl操作符
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品欧美精品系列 | 妖精视频一区二区三区 | 最新免费av网站 | 羞羞网站在线免费观看 | 久久精品国产亚洲一区二区三区 | 九九色综合 | 波多野结衣中文字幕一区二区三区 | 久久亚 | www.蜜桃av| 蜜桃五月天| 天天色综网| 国产精品毛片一区二区三区 | 国产高清视频 | 久草免费在线视频 | 久99久视频 | 毛片av免费看 | 国产精品海角社区在线观看 | 欧美成视频 | 久久婷婷色| 久久一区二区av | 欧美a在线 | 精品一级毛片 | 天天色图| 色综合九九 | 91精品国产综合久久久密闭 | 91久久综合亚洲鲁鲁五月天 | 久草视频观看 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 日本精品一区 | 日韩免费高清视频 | 欧美成人一区二区 | 精品国产乱码久久久久久蜜臀 | 国产精品久久av | 久久久一二三区 | 日韩在线观看 | 国产欧美日韩一区二区三区在线 | 日本黄色大片免费看 | 青青草免费在线视频 | 久久久久国产精品一区二区 | 北条麻妃99精品青青久久 | 亚洲电影一区二区三区 |