老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務

Python中遇到的“坑”-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站設計、網(wǎng)站制作、蓮花網(wǎng)絡推廣、微信小程序定制開發(fā)、蓮花網(wǎng)絡營銷、蓮花企業(yè)策劃、蓮花品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供蓮花建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

本篇文章給大家分享的是有關Python中遇到的“坑”,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1.哪個是True,哪個是False?

這里要看三組代碼:

# 第一組:

>>>a = 256
>>>b = 256
>>>a is b
# 第二組:
>>>a = 257
>>>b = 257
>>>a is b
# 第三組:
>>>a = 257,b = 257
>>>a is b

問題來了,這三組代碼的運行結(jié)果分別是什么呢?答案是True、False和True。第一組和第三組結(jié)果是True好像沒問題,那為什么第二組的結(jié)果是False呢?這里先用id()來查看一下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)這種情況是因為Python為了避免重復的創(chuàng)建和回收,就把那些常用的整數(shù)緩存起來,每次需要使用時直接從緩存中拿,而不是重新創(chuàng)建,這些整數(shù)的范圍是[-5, 256],不在這個范圍之中的數(shù)字就要重新創(chuàng)建了。那為什么第三組的a和b是一樣的呢?這是因為Python內(nèi)部做了優(yōu)化,對于在同一個代碼塊中的代碼,如果出現(xiàn)兩個值相同的整數(shù),那么它們將被重用。這里可以用下面的代碼進行測試:

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

這段代碼中a和b的id值是一樣的,和c的id值不同。這是因為a和b在同一個代碼塊,而c處在func函數(shù)里,屬于局部變量,和a不在同一個代碼塊。所以在創(chuàng)建c的時候會重新創(chuàng)建,但是創(chuàng)建b的時候會重用a這個對象。

在Python的交互式命令行中,每單獨一行都視為一個代碼塊,因此第三組中的a和b處在同一個代碼塊中,所以后者重用了前者,因此,兩個變量的id是相同的。

2.關于正則表達式re.sub()

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

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

這段代碼的功能就是將html中的標簽都替換為空,沒什么好說的,這里可以用一段html代碼來測試一下:

html = """


Document

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

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

html = """
Document


h2標題

h3標題

h4標題

""" print(remove_tag(html))

運行結(jié)果如下:

Document
h2標題h3標題h4標題

為什么最后會多出來""呢?這兩個標簽不應該被替換掉嗎?問題在于re.sub()的第四個參數(shù),這里先看下sub()函數(shù)的原型:

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

那為什么我們把re.S放在count的位置也沒有報錯呢?難道說re.S是一個數(shù)字?打印出來看一下:

import re
print(re.S)
# 16

原來re.S還可以當數(shù)字用!這時候數(shù)一下上面那段html代碼中的標簽個數(shù),發(fā)現(xiàn)""是第17和第18個,而因為re.S被當做16傳給count參數(shù)了,就導致最后兩個標簽沒有被替換掉。

3.字符串的lstrip()

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

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

這很簡單,也沒什么問題,但是看下面這個例子:

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

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

4.嵌套列表

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

# 選項1
li =[[] for i in range(3)]
# 選項2
li = [[]*3]
# 選項3
li = [[]]*3

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

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

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

以上就是Python中遇到的“坑”,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道。


網(wǎng)站題目:Python中遇到的“坑”-創(chuàng)新互聯(lián)
瀏覽地址:http://www.xueling.net.cn/article/degeij.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 日韩av高清在线 | 老太婆性杂交视频 | 在线观看免费一区 | 朝鲜女人大白屁股ass | 亚洲天天在线日亚洲洲精 | 亚洲精品美女色诱在线播放 | 国产精品刮毛 | 国产精品九九久久99视频 | 成人在线观看中文字幕 | 亚洲国产综合在线 | av私库在线 | 日本视频网站在线观看 | 久久久小视频 | 国产白丝无码视频在线观看 | 亚欧洲精品视频免费观看mv在线观看 | 国产成人激情视频 | 野花日本大全免费观看中文版 | 精品人妻中文av一区二区三区 | 欧美mv日韩mv国产网站 | 欧美精选视频在线观看 | 午夜精品久久久久久久99无限制 | 91精品啪在线观看国产日本 | 最新中文字幕av无码专区不 | 国产精品成熟老妇女 | 农村妇女毛片精品久久久 | 一区二区三区视频在线观看 | 操操操操操网 | 欧美日产欧美日产国产精品 | 国产一卡二卡三卡四卡网站 | 9免费视频 | 波多野结衣在线视频一区二区三区 | 久久久久99精品成人片牛牛影视 | 日本成本人片无码免费视频网站 | 2020国产成人精品视频 | 18禁男女污污污午夜网站免费暖暖 | 久久久激情视频 | 日本高清在线观看 | 99热在线这里只有精品 | 国产一级黄色片免费看 | 91精品国产乱码久久桃 | japanese日本护士xxxx18一19 |