在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python中的那些坑

馬哥Linux運(yùn)維 ? 來(lái)源:博客園 ? 2024-07-16 17:52 ? 次閱讀

1.哪個(gè)是True,哪個(gè)是False?

這里要看三組代碼:

# 第一組:

>>>a=256

>>>b = 256

>>>a is b

# 第二組:

>>>a = 257

>>>b = 257

>>>a is b

# 第三組:

>>>a = 257; b = 257

>>>a is b

問(wèn)題來(lái)了,這三組代碼的運(yùn)行結(jié)果分別是什么呢?答案是True、False和True。第一組和第三組結(jié)果是True好像沒(méi)問(wèn)題,那為什么第二組的結(jié)果是False呢?這里先用id()來(lái)查看一下a和b的地址是什么:

# 第一組:

>>>id(a)

>>>1426657040

>>>id(b)

>>>1426657040

# 第二組:

>>>id(a)

>>>363389616

>>>id(b)

>>>363392912

# 第三組:

>>>id(a)

>>>5722000

>>>id(b)

>>>5722000

可以看到第一組和第三組的a和b的id值是相同的,但是第二組是不同的。出現(xiàn)這種情況是因?yàn)?a href="http://www.xsypw.cn/tags/python/" target="_blank">Python為了避免重復(fù)的創(chuàng)建和回收,就把那些常用的整數(shù)緩存起來(lái),每次需要使用時(shí)直接從緩存中拿,而不是重新創(chuàng)建,這些整數(shù)的范圍是[-5, 256],不在這個(gè)范圍之中的數(shù)字就要重新創(chuàng)建了。那為什么第三組的a和b是一樣的呢?這是因?yàn)镻ython內(nèi)部做了優(yōu)化,對(duì)于在同一個(gè)代碼塊中的代碼,如果出現(xiàn)兩個(gè)值相同的整數(shù),那么它們將被重用。這里可以用下面的代碼進(jìn)行測(cè)試:

#Python學(xué)習(xí)交流群:778463939
a = 257
b = 257

def func():
    c = 257
    print(a is c)  # False

print(a is b)  # True
func()

這段代碼中a和b的id值是一樣的,和c的id值不同。這是因?yàn)閍和b在同一個(gè)代碼塊,而c處在func函數(shù)里,屬于局部變量,和a不在同一個(gè)代碼塊。所以在創(chuàng)建c的時(shí)候會(huì)重新創(chuàng)建,但是創(chuàng)建b的時(shí)候會(huì)重用a這個(gè)對(duì)象。
在Python的交互式命令行中,每單獨(dú)一行都視為一個(gè)代碼塊,因此第三組中的a和b處在同一個(gè)代碼塊中,所以后者重用了前者,因此,兩個(gè)變量的id是相同的。

2.關(guān)于正則表達(dá)式re.sub()

都知道正則表達(dá)式中的re.sub()是用于字符串替換的,比如:

import re


def remove_tag(html):
text = re.sub('<.*?>', '', html, re.S)
return text

這段代碼的功能就是將html中的標(biāo)簽都替換為空,沒(méi)什么好說(shuō)的,這里可以用一段html代碼來(lái)測(cè)試一下:

html = """


Document

"""
print(remove_tag(html))
# Document

運(yùn)行結(jié)果和我們想象的一樣,但是如果html代碼再長(zhǎng)一點(diǎn)呢?比如下面:

html = """
Document


h1標(biāo)題

h2標(biāo)題

h3標(biāo)題

""" print(remove_tag(html))

運(yùn)行結(jié)果如下:

Document

 


h1標(biāo)題h2標(biāo)題h3標(biāo)題

為什么最后會(huì)多出來(lái)呢?這兩個(gè)標(biāo)簽不應(yīng)該被替換掉嗎?問(wèn)題在于re.sub()的第四個(gè)參數(shù),這里先看下sub()函數(shù)的原型:

re.sub(pattern, repl, string, count=0, flags=0)

那為什么我們把re.S放在count的位置也沒(méi)有報(bào)錯(cuò)呢?難道說(shuō)re.S是一個(gè)數(shù)字?打印出來(lái)看一下:

import re

print(re.S)
# 16

原來(lái)re.S還可以當(dāng)數(shù)字用!這時(shí)候數(shù)一下上面那段html代碼中的標(biāo)簽個(gè)數(shù),發(fā)現(xiàn)是第17和第18個(gè),而因?yàn)閞e.S被當(dāng)做16傳給count參數(shù)了,就導(dǎo)致最后兩個(gè)標(biāo)簽沒(méi)有被替換掉。

3.字符串的lstrip()

相信很多人都用過(guò)lstrip(),在處理字符串的時(shí)候很有用,比如:

print("aabbcc".lstrip('aa'))
# bbcc

這很簡(jiǎn)單,也沒(méi)什么問(wèn)題,但是看下面這個(gè)例子:

print("ababacac".lstrip("ab"))
# cac

為什么結(jié)果不是acac呢?這是因?yàn)楫?dāng)lstrip()中傳入一個(gè)字符串后,lstrip()會(huì)把這個(gè)字符串拆成一個(gè)個(gè)字符,然后才從左往右進(jìn)行檢查,如果匹配到就刪除,直到出現(xiàn)第一個(gè)不同的字符,所以最后"ababa"被刪掉了,結(jié)果也就是"cac"了。要避免這種情況的話,可以用replace()方法進(jìn)行替換。

4.嵌套列表

如果要你創(chuàng)建一個(gè)包含三個(gè)空列表的列表,你會(huì)怎么做呢?

# 選項(xiàng)1
li =[[] for i in range(3)]

# 選項(xiàng)2
li = [[]*3]

# 選項(xiàng)3
li = [[]]*3

如果你運(yùn)行一下,就會(huì)知道選項(xiàng)1和選項(xiàng)3能夠得到我們想要的結(jié)果。這時(shí)候再運(yùn)行一下下面這段代碼:

li = [[]]*3
li[0].append(1)
print(li)
# [[1], [1], [1]]

為什么我們明明只給第一個(gè)列表增加了一個(gè)1,但是其他兩個(gè)列表也增加了一個(gè)1呢?這是因?yàn)閇[]]*3并不是創(chuàng)建了三個(gè)不同的列表,而是創(chuàng)建了三個(gè)指向同一個(gè)列表的對(duì)象,所以,當(dāng)我們操作第一個(gè)列表時(shí),其他兩個(gè)列表內(nèi)容也會(huì)發(fā)生變化。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    579

    瀏覽量

    20542
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4793

    瀏覽量

    68700
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84774

原文標(biāo)題:Python中的那些“坑”

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何避開(kāi)智能硬件創(chuàng)業(yè)的那些

    大數(shù)據(jù)等附加價(jià)值。今天我們邀請(qǐng)到幻響神州創(chuàng)始人兼CEO張總,為大家解答如何避開(kāi)智能硬件創(chuàng)業(yè)的那些。專(zhuān)家介紹:張昕尉是十年創(chuàng)業(yè)老兵,2016年2月帶領(lǐng)幻響新三板上市,堅(jiān)持原創(chuàng)態(tài)度,以虔誠(chéng)之心做企業(yè)做產(chǎn)品
    發(fā)表于 03-14 10:13

    python2和python3同時(shí)安裝的詳細(xì)步驟

    整理下python2和python3同時(shí)安裝詳細(xì)步驟希望對(duì)大家有幫助已踩過(guò)(親測(cè)可用?。。。?/div>
    發(fā)表于 10-27 09:31

    運(yùn)放那些——第二篇

    運(yùn)放那些——第二篇
    的頭像 發(fā)表于 08-31 11:37 ?1.5w次閱讀
    運(yùn)放<b class='flag-5'>中</b>的<b class='flag-5'>那些</b><b class='flag-5'>坑</b>——第二篇

    運(yùn)放那些——第一篇

    運(yùn)放那些——第一篇
    的頭像 發(fā)表于 08-31 11:40 ?4.5w次閱讀
    運(yùn)放<b class='flag-5'>中</b>的<b class='flag-5'>那些</b><b class='flag-5'>坑</b>——第一篇

    Python程序員必須掌握從Python2到Python3的轉(zhuǎn)型

    本書(shū)的目標(biāo)讀者是那些正在使用 Python,又想熟悉 Python 3 的程序員。如果你懂 Python2,但是想遷移到 Python 3.
    發(fā)表于 09-14 10:54 ?10次下載

    如何讓你的Python編程不出現(xiàn)反模式?避免初學(xué)Python常見(jiàn)的錯(cuò)誤

    篇文章收集了我在Python新手開(kāi)發(fā)者寫(xiě)的代碼中所見(jiàn)到的不規(guī)范但偶爾又很微妙的問(wèn)題。本文的目的是為了幫助那些新手開(kāi)發(fā)者渡過(guò)寫(xiě)出丑陋的Python代碼的階段。
    的頭像 發(fā)表于 09-24 10:38 ?2801次閱讀

    如何快速學(xué)習(xí)Python?學(xué)習(xí)Python有哪些

    此外,作為人工智能的主要編程語(yǔ)言,未來(lái)的幾年,Python勢(shì)必繼續(xù)高歌。而近期,數(shù)據(jù)科學(xué)網(wǎng)站KDnuggets,發(fā)布的2018數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)工具調(diào)查結(jié)果也顯示:Python榮登第一,成為最受青睞
    的頭像 發(fā)表于 11-29 10:11 ?3931次閱讀
    如何快速學(xué)習(xí)<b class='flag-5'>Python</b>?學(xué)習(xí)<b class='flag-5'>Python</b>有哪些<b class='flag-5'>坑</b>?

    關(guān)于 STM32 時(shí)鐘配置的那些

    關(guān)于STM32時(shí)鐘配置的那些
    的頭像 發(fā)表于 03-08 12:06 ?5946次閱讀

    python的優(yōu)缺點(diǎn)有哪些

    Python的定位是“優(yōu)雅”、“明確”、“簡(jiǎn)單”,所以Python程序看上去總是簡(jiǎn)單易懂,初學(xué)者學(xué)Python,不但入門(mén)容易,而且將來(lái)深入下去,可以勝任那些非常非常復(fù)雜的應(yīng)用程序開(kāi)發(fā)。
    的頭像 發(fā)表于 01-16 09:20 ?3511次閱讀

    “I2C”的那些

    “I2C”的那些 一般情況下, i2c 設(shè)備焊接沒(méi)什么問(wèn)題,按照設(shè)備手冊(cè)一步步來(lái),基本上就順風(fēng)順?biāo)軌蛴闷饋?lái)。如果這么一個(gè)簡(jiǎn)單的東西,有時(shí)候想要的結(jié)果死活不出來(lái),反復(fù)的檢查問(wèn)題的原因,查詢解決辦法
    發(fā)表于 11-06 10:05 ?8次下載
    “I2C”的<b class='flag-5'>那些</b><b class='flag-5'>坑</b>

    Arduino-IDE配置ESP32-CAM開(kāi)發(fā)環(huán)境踩過(guò)的那些

    Arduino-IDE配置ESP32-CAM開(kāi)發(fā)環(huán)境踩過(guò)的那些
    發(fā)表于 11-30 18:36 ?24次下載
    Arduino-IDE配置ESP32-CAM開(kāi)發(fā)環(huán)境踩過(guò)的<b class='flag-5'>那些</b><b class='flag-5'>坑</b>

    EFM32PG1B使用時(shí)遇到那些

    EFM32PG1B使用時(shí)遇到那些的坑坑一:引腳功能定義二:外部中斷的使用官網(wǎng)鏈接一:引腳功能定義?公司項(xiàng)目需要用到EFM32系列的單片機(jī),初看芯片手冊(cè),看到引腳定義的時(shí)候著實(shí)有些疑惑?初看的第一
    發(fā)表于 12-03 15:06 ?3次下載
    EFM32PG1B使用時(shí)遇到<b class='flag-5'>那些</b>的<b class='flag-5'>坑</b>

    EFM32PG1B關(guān)于RTCC和EM4的那些

    EFM32PG1B關(guān)于RTCC和EM4的那些EFM32PG1B關(guān)于RTCC和EM4的那些坑坑一:RTCC初始化二:EM4低功耗模式的初始化
    發(fā)表于 12-04 19:36 ?10次下載
    EFM32PG1B關(guān)于RTCC和EM4的<b class='flag-5'>那些</b><b class='flag-5'>坑</b>

    pythonnumber代表什么

    Python,number(數(shù)字)是一種內(nèi)置的數(shù)據(jù)類(lèi)型,用于表示數(shù)值。Python提供了幾種不同的number類(lèi)型,分別是整數(shù)(int)、浮點(diǎn)數(shù)(float)、復(fù)數(shù)(complex)和布爾值
    的頭像 發(fā)表于 11-22 09:50 ?2057次閱讀

    pythontext的用法

    Python的text是一個(gè)常見(jiàn)的數(shù)據(jù)類(lèi)型,它用于存儲(chǔ)和處理文本數(shù)據(jù)。在Python,文本常常被表示為字符串(string),字符串是一系列Unicode字符的有序序列。 在
    的頭像 發(fā)表于 11-23 15:46 ?3713次閱讀
    主站蜘蛛池模板: freesexvideo性欧美2| 日本亚洲欧美国产日韩ay高清| 未成人禁止视频高清在线观看| 你懂的在线视频观看| 欧美爽爽网| 色妇视频| 亚洲最大色网| 亚洲a网| 深爱五月激情| 加勒比啪啪| 美女操网站| 国产高清小视频| 久久天天综合| 163黄页网又粗又长又舒服| 最新色站| 一区二区三区中文| 国产精品第九页| 特极毛片| 四虎影院免费在线| 欧美三级视频在线播放| 黄色一级片毛片| 222.www免费观看| 97色资源| 欧美aaaav免费大片| 亚洲人成在线精品不卡网| 香蕉网影院在线观看免费| 视频在线一区二区| 亚洲成a人片7777| 婷婷综合激六月情网| 午夜看片a福利在线| 亚洲www.| 免费看 s色| 夜夜操伊人| 91精品久久久久含羞草 | 九色欧美| 午夜影院欧美| 天天添天天射| 天堂最新在线资源| 男人和女人做爽爽视频在线观看| 久久影视免费体验区午夜啪啪 | 色综合久久98天天综合|