亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python中is與雙等于號“==”的區(qū)別示例詳解

 更新時(shí)間:2017年11月21日 09:14:15   作者:Jason Hu  
Python中有很多運(yùn)算符,下面這篇文章主要給大家介紹了關(guān)于python中is與雙等于號“==”區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

在開始本文之前,首先要知道Python中對象包含的三個(gè)基本要素,分別是:id(身份標(biāo)識)、python type()(數(shù)據(jù)類型)和value(值)。is和==都是對對象進(jìn)行比較判斷作用的,但對對象比較判斷的內(nèi)容并不相同。下面來看看具體區(qū)別在哪。

發(fā)現(xiàn)問題

最近在給小伙伴寫段小代碼用于爬取一個(gè)GIS的各高層數(shù)據(jù),python中使用了”is”來代替”==”,結(jié)果下載至512的時(shí)候出了問題。

代碼如下

def get_next(x, y, z):
 z += 1
 if z is 2**x: # 應(yīng)該用if z == 2**x
 y += 1
 z = 0
 if y is 2**(x+1):
 x += 1
 y = 0
 return x, y, z

這是用來獲取下一個(gè)高層數(shù)據(jù)的URL的函數(shù),結(jié)果第二天,小伙伴告訴我說下載到x == 9, y == 0, z == 512的時(shí)候停止下載了。

探索

首先,根據(jù)上述代碼可以知道,z按照邏輯是不可能等于512的,所有開始懷疑是不是這個(gè)函數(shù)有問題,但是這么簡單的函數(shù),怎么看都不應(yīng)該有問題啊。于是開始跟代碼,發(fā)現(xiàn)

if z is 2**x

處,x == 9, y == 0, z == 512時(shí),if后面居然返回的是False。我拿計(jì)算器算了好幾遍,確定自己不是在二次元后,開始懷疑is的問題。

結(jié)果

在StackOverflow上面找到了答案

Is there a difference between == and is in Python?

is will return True if two variables point to the same object, == if the objects referred to by the variables are equal.

>>> a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True

In your case, the second test only works because Python caches small integer objects, which is an implementation detail. For larger integers, this does not work:

>>> 1000 is 10**3
False
>>> 1000 == 10**3
True

然后自己寫了個(gè)小段子看看最大的可復(fù)用的int是多大

a = 0
b = 0
while a is b:
 a += 1
 b += 1

最后發(fā)現(xiàn)最大是256。

小結(jié):

  • ==比較操作符:用來比較兩個(gè)對象是否相等,value做為判斷因素;
  • is同一性運(yùn)算符:比較判斷兩個(gè)對象是否相同,id做為判斷因素。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Pytorch基本變量類型FloatTensor與Variable用法

    Pytorch基本變量類型FloatTensor與Variable用法

    今天小編就為大家分享一篇Pytorch基本變量類型FloatTensor與Variable用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 用python給csv里的數(shù)據(jù)排序的具體代碼

    用python給csv里的數(shù)據(jù)排序的具體代碼

    在本文里小編給大家分享的是關(guān)于用python給csv里的數(shù)據(jù)排序的具體代碼內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • 學(xué)習(xí)python分支結(jié)構(gòu)

    學(xué)習(xí)python分支結(jié)構(gòu)

    在本篇文章中小編給大家分享了關(guān)于python分支結(jié)構(gòu)的相關(guān)知識點(diǎn)和相關(guān)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-05-05
  • python/sympy求解矩陣方程的方法

    python/sympy求解矩陣方程的方法

    今天小編就為大家分享一篇python/sympy求解矩陣方程的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python3 掃描庫文件并獲取版本號信息的操作方法

    Python3 掃描庫文件并獲取版本號信息的操作方法

    在 C/C++ 開發(fā)中使用了第三方庫,具體說是 .a, .lib, .dll 等文件,想通過 Python 查詢出這些文件中的版本號信息,下面小編給大家?guī)砹薖ython3中掃描庫文件并獲取版本號信息的知識,需要的朋友可以參考下
    2023-05-05
  • 基于Python和PyYAML讀取yaml配置文件數(shù)據(jù)

    基于Python和PyYAML讀取yaml配置文件數(shù)據(jù)

    這篇文章主要介紹了基于Python和PyYAML讀取yaml配置文件數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • pandas 數(shù)據(jù)歸一化以及行刪除例程的方法

    pandas 數(shù)據(jù)歸一化以及行刪除例程的方法

    今天小編就為大家分享一篇pandas 數(shù)據(jù)歸一化以及行刪除例程的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python操作SQLite簡明教程

    Python操作SQLite簡明教程

    這篇文章主要介紹了Python操作SQLite簡明教程,簡單明了的入門教程,包含連接、建表、增刪修查等例子,需要的朋友可以參考下
    2014-07-07
  • python容器的內(nèi)置通用函數(shù)操作

    python容器的內(nèi)置通用函數(shù)操作

    容器是一種把多個(gè)元素組織在一起的數(shù)據(jù)結(jié)構(gòu),容器中的元素可以逐個(gè)地迭代獲取,可以用in, not in關(guān)鍵字判斷元素是否包含在容器中。接下來通過本文給大家介紹python容器的內(nèi)置通用函數(shù)操作,感興趣的朋友一起看看吧
    2021-11-11
  • Python格式化輸出%s和%d

    Python格式化輸出%s和%d

    本篇文章主要介紹了Python格式化輸出%s和%d的實(shí)例案例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05

最新評論