九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
那些讓你驚掉下巴到肚皮上的python冷知識(一)

一、我不是我

現(xiàn)在,我們在交互模式下分別定義兩個變量:a,b,他們的值都等于200:


然后判斷a和b是否是引用的同一對象,并打印出來:

很顯然a和b引用的是同一對象,所以返回的結(jié)果為true

是不是覺得我在說廢話!!!

下面就是見證奇跡的時候了:

我們再分別定義a和b,他們的值都等于257:


這個時候再判斷是否是引用的同一對象:

竟然不是了!!!

這到底是為什么呢???

現(xiàn)在為你解答:

這其實(shí)是python的整數(shù)緩沖區(qū)導(dǎo)致的結(jié)果。

python在交互模式下,會對比較小的整數(shù)對象進(jìn)行緩存([-5,256])

當(dāng)我們定義的整數(shù)不在這個范圍時,python會新生成一個對象,獨(dú)占一個內(nèi)存地址。

所以,雖然剛剛我們讓a和b都等于了257,但因?yàn)槭欠謩e定義的,兩個257的內(nèi)存地址是不同的,所以a 不是b,返回False。

我們打印兩個a和b的id就會發(fā)現(xiàn),他們是不一樣的:

如果我們判斷a和b的值是否相等,那返回的就會是true:


或者通過:a=b=257,這樣再通過is判斷是否引用的同一對象,就不會返回False了

另外,通過編譯器(Pycharm、idle)或者保存為文件執(zhí)行時,結(jié)果是不一樣的,這是因?yàn)榻忉屍髯隽藘?yōu)化,不會因此分配新的內(nèi)存地址。

二、空字符串的數(shù)量竟然不是零?

現(xiàn)在定義一個變量str1,等于:aabbc,然后打印a的數(shù)量:

str1='aabbc'
print("數(shù)量為:",str1.count("a"))
-----------------輸出結(jié)果-----------------
數(shù)量為: 2

結(jié)果為str1中有兩個a

現(xiàn)在又是見證奇跡的時候了!!!

我們打印空字符串的數(shù)量:

str1='aabbc'
print("數(shù)量為:",str1.count(""))
-----------------輸出結(jié)果-----------------
數(shù)量為: 6

為什str1中有6個空字符串!!!

難道通靈了???

現(xiàn)在把str1的值改為:ab,再打印空字符串的數(shù)量

str1='ab'
print("數(shù)量為:",str1.count(""))
-----------------輸出結(jié)果-----------------
數(shù)量為: 3

怎么又變成3了!!!

----------------------經(jīng)過評論區(qū)大佬的解答,終于找到原因了----------------------

我們需要去看python的源碼這種情況是怎么處理的

當(dāng)我們通過count統(tǒng)計(jì)字符的數(shù)量時,會調(diào)用stringlib_count這個函數(shù)

而查詢空字符串的時候,代表下圖的sub_len=0

所以會執(zhí)行下面的代碼,會返回被查詢字符串的長度+1


py源碼中的寫法

原來如此!!!

三、字符串是個列表?

我們定義一個變量a,它的值為:hello world:
a = 'hello world'

然后打印a[0]:

a = 'hello world'
print('a[0]的值為:',a[0])
-----------------輸出結(jié)果-----------------
a[0]的值為: h

但是輸出a的類型卻是個str:

a = 'hello world'
print(type(a))
-----------------輸出結(jié)果-----------------
a的類型為: <class 'str'>

其實(shí)字符串是字符的有序集合,可以通過其位置來獲得具體的元素。
在 python 中,字符串中的字符是通過索引來提取的,索引從 0 開始。
當(dāng)然也可以輸入負(fù)值,表示從末尾提取,最后一個為 -1,倒數(shù)第二個為 -2:

a = 'hello world'
print('a的末尾字母為:',a[-1])
-----------------輸出結(jié)果-----------------
a的末尾字母為: d

就是這么神奇!!!

分享暫時到這里,小伙伴們點(diǎn)贊、收藏、評論是對我最大的支持!!

四、往期文章回顧

python-20行代碼將圖片轉(zhuǎn)素描畫(附源碼和成品下載地址)

python小爬蟲-28行代碼實(shí)現(xiàn)圖形化在線翻譯!

python-85行代碼完成貪吃蛇和關(guān)卡升級:是男人就堅(jiān)持到第10關(guān)!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python 如何統(tǒng)計(jì)文本種的字符數(shù)量,包括中/英文字符、數(shù)字、特殊字符等?
python 判斷字符串中是否包含中文
C++-string““s操作符
python的字符串內(nèi)建函數(shù)
PHP中GBK和UTF8編碼處理 - PHP教程|PHP5|PEAR|框架 - Power...
python3 字符串切片
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服