is in Python

2022-03-03 09:29:23 字數 1415 閱讀 1790

在python中應該避免將“is”運算子用於比較 像“數值”和“字串”這種不可變的值。由於python內部操作這些物件的方式,使得對這些物件使用“is”運算子的結果將是不可**的。

下面以兩個例子加以說明:

#

demo 1:

x = y = [1, 2, 3]

z = [1, 2, 3]

print("

'x == y' gets

", x ==y)

print("

'x == z' gets

", x ==z)

print("

'x is y' gets

", x is

y)print("

'x is z' gets

", x isz)#

demo 2:

a = b = 'hello

'c = '

hello

'print("

'a == b' gets

", a ==b)

print("

'a == c' gets

", a ==c)

print("

'a is b' gets

", a is

b)print("

'a is c' gets

", a is c)

demo 1的結果沒有問題:

'

x == y

'gets true

'

x == z

'gets true

'

x is y

'gets true

'x is z

' gets false

對於demo 2的結果:

'

a == b

'gets true

'a == c

'gets true

'a is b

'gets true

'a is c

' gets true

對於demo 2的結果,我們能夠理解出現這一結果的原因('hello'是一個字串常量並且不可改變的,當定義第二個

字串常量時,由於其與第一個常量值相同,所以 python不會再次申請一段空間用於儲存這一字串常量--因為這個字元

串常量不會改變,而是直接使用前面已經定義過的字串常量;因此後來定義的c和先前定義的a,b其實都是同一物件)。

但是,這和我們使用is的本意可能並不一致,所以,在python中應該避免將“is”運算子用於比較 像“數值”和“字串”

這種不可變的值。

Python usr bin python

usr bin python是告訴作業系統執行這個指令碼的時候,呼叫 usr bin下的python直譯器 usr bin env pyth...

Python記 列表 Python的主力

我將青春翻湧成它 本節主要討論列表不同於元組和字串的地方 列表是可變的,即可修改內容。另外,列表有很多特有的方法。 1 函式 list 2...

Python GUI

1 flexx flexx 是一個純python工具包,用來建立圖形化介面應用程式。其使用 web 技術進行介面的渲染。你可以用flexx來...