python的必知小知識點

2022-09-11 22:00:26 字數 3063 閱讀 8150

'hello, %s' % name

"hello, bob"

'hey %(name)s, there is a 0x%(errno)x error!' %

結果:'hey bob, there is a 0xbadc0ffee error!'

'hello, {}'.format(name)

'hello, bob'

'hey , there is a 0x error!'.format( name=name, errno=errno)

'hey bob, there is a 0xbadc0ffee error!'

name = bob

f'hello, !'

'hello, bob!'

def greet(name, question):

return f"hello, ! how's it ?"

greet('bob', 'going')

"hello, bob! how's it going?"

templ_string = 'hey $name, there is a $error error!'

template(templ_string).substitute(

name=name, error=hex(errno))

'hey bob, there is a 0xbadc0ffee error!'

id => id是記憶體位址

is => 比較兩邊的記憶體是否相等

== => 比較兩邊的數值是否相等

= => 是賦值

小資料池,也稱為小整數快取機制,或者稱為駐留機制等等,

對於數字: -5~256是會被加到⼩小資料池中的. 每次使⽤用都是同⼀乙個物件.

對於字串串:

1.如果字串串的長度是0或者1, 都會預設進行快取

2.字串長度大於1, 但是字串中只包含字母, 數字, 下劃線時才會快取

3.用乘法的到的字串乘數為1, 僅包含數字,字母,下劃線時會被快取. 如果

包含其他字元, 而長度<=1 也會被駐存,乘數大於1 . 僅包含數字, 字母, 下劃

線這個時候會被快取. 但字串串長度不能大於20

4.指定駐留留. 我們可以通過sys模組中的intern()函式來指定要駐留留的內容.

copy淺拷貝,沒有拷貝子物件,所以原始資料改變,子物件會改變深拷貝,包含物件裡面的自物件的拷貝,

所以原始物件的改變不會造成深拷貝裡任何子元素的改變

import copy

a = [1,23,66,[6,8]]

d = a

b = copy.copy(a)

c = copy.deepcopy(a)

print(a,b,c,d)

23, 66, [6, 8, 88], 99]

print(a,b,c,d)

一. python內部使用引用計數機制, 來保持追蹤記憶體中的物件,所有物件都有引用計數. 乙個物件分

配乙個新名稱,然後將其放入到乙個容器中(如列表, 元祖, 字典), 這樣這個計數就增加. 當我們使用

delect刪除語句對物件別名進行刪除或者,引用超過了這個作用域,或者被重新複製的時候,引用的

計數會減少.對於不可變資料(數字,字串)直譯器會在程式的不同部分共享記憶體,以便節約內

存.sys.getrefcount( )函式可以獲得物件的當前引用計數

二. 這個垃圾**機制呢, 就是當乙個物件的引用計數歸零時,他就會被垃圾**機制處理掉 ,當兩

個物件相互引用的時候, del語句可以減少 引用次數並銷毀引用底層物件的名稱, 由於每個物件都

包含乙個對其他物件的引用, 因此引用計數不會歸零, 物件也不會銷毀,為解決這一問題,直譯器會

定期執行乙個迴圈檢測器,搜尋不可訪問物件的迴圈並刪除它們。

三.記憶體池機制

python提供了對記憶體的垃圾收集機制,但是它將不用的記憶體放到記憶體池而不是返回給作業系統。

1,pymalloc機制。為了加速python的執行效率,python引入了乙個記憶體池機制,用於管理對

的malloc。

2,python中所有小於256個位元組的物件都使用pymalloc實現的分配器,而大的物件則使用系統的malloc。

3,對於python物件,如整數,浮點數和list,都有其獨立的私有記憶體池,物件間不共享他們的

記憶體池。也就是說如果你分配又釋放了大量的整數,用於快取這些整數的記憶體就不能再分配給浮點數。

hash(雜湊) 一般譯為「雜湊」,它是一種加密過的儲存結構。它將任意長度的輸入,通過散

列演算法,轉換成固定長度的輸出。而這個輸出就是雜湊的值。並且,這個轉換過程是一種壓縮映

射,所以,雜湊值的空間遠小於輸入值的空間。另外,不同的輸入可能會雜湊出相同的輸出,所

以不能從雜湊值來確定其輸入值是什麼。hash應用中乙個簡單的例子就是短鏈結。短鏈結是乙個

hash後的雜湊值,它的輸入值就是原始鏈結。首先,我們拿到乙個原始鏈結,到乙個具有hash

功能的伺服器上,做hash轉換,得到乙個雜湊值,這個值就是短鏈結的值。前面說到過,雜湊值

會遠小於輸入值,所以短鏈結比原鏈結字元長度小了許多。然後,再將這個短鏈結與原鏈結存到

伺服器上的資料庫中,形成對映關係。當有人訪問伺服器上的短鏈結時,只需要從對映關係中找

到原始鏈結,即可跳轉到原始鏈結。

hash 的乙個特點就是效能好,查詢起來很快。它是一種以空間換取時間的方案。

簡單說,如果乙個物件是可雜湊的, 那麼生命週期內這個物件不可變,如:int,float,string, tuple.

反之, 不可雜湊的物件可變, 像lsit, dict, set.

MySQL必知必會知識點1

mysql 使用到預設埠是 3306 mysql 在執行匹配時預設不區分大小寫。選擇資料庫 usedatabasename 了解資料庫 show databases 了解資料庫中的表 show tables 從表中選擇特定的列 selectcolumnname from tablename 從表中選...

mysql必知必會知識點彙總

摸魚看完的書,筆記扔在這裡記錄一下 in的最大優點?in能夠包含其他select語句 mysql中not支援對什麼語句進行取反?not支援對in between exists取反 mysql中like是什麼?like是謂詞,不是操作符 null能被 萬用字元匹配嗎?null不能被 萬用字元匹配 使用...

CSS 必知的7個知識點

1 width是個雷 很多頁面要求寬度自適應,那麼width設百分比吧,否則塊元素很容易變成粘著不走的狗皮膏藥 當沒有定義元素寬度時,瀏覽器撐滿整行,實際上執行的是width auto,寬度自適應。2 ie6不認識min height 解決辦法就是 height,有時候明明不需要可變高度,如果喜歡沒...