python技巧分享(七)

這是一個(gè)系列文章,主要分享python的使用建議和技巧,每次分享3點(diǎn),希望你能有所收獲。

1 is 和 == 的區(qū)別

import os

str1 = os.__name__
str2 = "os"

print str1
# os
print str2
# os

print str1 == str2
# True

print str1 is str2
# False

由示例中可以看到,str1和str2的值都是字符串"os",str1 == str2為True,但是str1 is str2卻為False,即is和==不是一回事,is為True表示兩個(gè)對象的id相同,即id(str1) == id(str2)時(shí),str1 is str2才為True,is表示2個(gè)對象引用同一塊內(nèi)存內(nèi)容,==表示2個(gè)對象的值相等。所以判斷2個(gè)對象值是否相等時(shí),使用==,判斷2個(gè)對象是否引用同一塊內(nèi)存時(shí),使用is。如果將上面示例中的str1 = os.name修改成str1 = "os",你會發(fā)現(xiàn)str1 is str2為True,這是python為了性能考慮,將str1和str2都指向同一塊內(nèi)存,內(nèi)存的值就是字符串"os",所以導(dǎo)致str1 is str2為True,如下:

str1 = "os"
str2 = "os"

print str1
# os

print str2
# os

print str1 == str2
# True

print str1 is str2
# True

print id(str1) == id(str2)
# True

print id(str1)
# 31301840

print id(str2)
# 31301840

2 通過下劃線_丟棄多余的返回值

  • 不推薦方式
def demo():
    return 0, 1, 2


multi_values = demo()

print multi_values[1]
# 1
  • 推薦方式
def demo():
    return 0, 1, 2


_, one, _ = demo()

print one
# 1

前一種方式將返回的多個(gè)值以元組的形式保存在變量multi_values中,然后讀取第二個(gè)值,后一種方式中,通過下劃線方式,丟棄多余的函數(shù)返回值,更加簡潔易讀。

3 如何判斷文件是否被打開

  • 推薦方式
with open("tmp") as f:
    print f.closed
    for line in f.readlines():
        print line

print f.closed

'''
False
line 1

line 2

line 3
True
'''

由示例中可以看到,使用with方式打開文件,文件在with語句塊范圍外會自動關(guān)閉。第一個(gè)print打印False,文件處于打開狀態(tài),第二個(gè)print在with語句的范圍外,打印True,表明文件處于關(guān)閉狀態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容