廖雪峰python教程筆記1

2021-08-14 18:49:56 字數 2562 閱讀 3027

d.get(『thomas』, -1) 檢查字典中是否有』thomas』的key,沒有返回-1,沒有指定返回值預設返回none;

d.pop(『bob』) 刪key

字典key不能為列表

s = set([1, 2, 3]) set需要以list作為輸入集合,不能重複且無順序。

s.add() s.remove() s1&s2 s1|s2

a = 『abc』,b = a.replace(『a』, 『a』) a是變數,』abc』是字串物件。當我們呼叫a.replace(『a』, 『a』)時,實際上呼叫方法replace是作用在字串物件』abc』上的,而這個方法雖然名字叫replace,但卻沒有改變字串』abc』的內容。相反,replace方法建立了乙個新字串』abc』並返回,如果我們用變數b指向該新字串,就容易理解了,變數a仍指向原有的字串』abc』,但變數b卻指向新字串』abc』了

預設引數可以不按順序寫,但當不按順序提供部分預設引數時需要寫引數名

預設引數必須指向不變物件

可變引數

def

calc

(*numbers):

#引數numbers接收到的是乙個tuple

sum = 0

for n in numbers:

sum = sum + n * n

return sum

calc(1, 2) #不需要傳入列表

nums = [1, 2, 3]

calc(*nums) #*nums表示把nums這個list的所有元素作為可變引數傳進去

可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。

10. 關鍵字引數

def

person

(name, age, **kw):

print('name:', name, 'age:', age, 'other:', kw)

person('adam', 45, gender='m', job='engineer')

#name: adam age: 45 other:

extra =

person('jack', 24, **extra) #注意kw獲得的dict是extra的乙份拷貝,對kw的改動不會影響到函式外的extra。

#name: jack age: 24 other:

命名關鍵字引數(限制傳入的關鍵字引數名字,必須傳入指定關鍵字引數)

def

person

(name, age, *, city, job):

print(name, age, city, job)

person('jack', 24, city='beijing', job='engineer')

defperson

(name, age, *args, city, job):

print(name, age, args, city, job)#如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了:

命名關鍵字引數必須傳入引數名,這和位置引數不同。這5種引數都可以組合使用,按照必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數的順序。

通過乙個tuple和dict,你也可以呼叫上述函式。

def

f1(a, b, c=0, *args, **kw):

print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

deff2

(a, b, c=0, *, d, **kw):

print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

>>> args = (1, 2, 3, 4)

>>> kw =

>>> f1(*args, **kw)

a = 1 b = 2 c = 3 args = (4,) kw =

>>> args = (1, 2, 3)

>>> kw =

>>> f2(*args, **kw)

a = 1 b = 2 c = 3 d = 88 kw =

遞迴函式

解決遞迴呼叫棧溢位的方法是通過尾遞迴優化,事實上尾遞迴和迴圈的效果是一樣的,所以,把迴圈看成是一種特殊的尾遞迴函式也是可以的。尾遞迴是指,在函式返回的時候,呼叫自身本身,並且,return語句不能包含表示式。這樣,編譯器或者直譯器就可以把尾遞迴做優化,使遞迴本身無論呼叫多少次,都只占用乙個棧幀,不會出現棧溢位的情況。

def

fact

(n):

if n==1:

return

1return n * fact(n - 1) #可能溢位

廖雪峰Python教程筆記(六)

在電腦程式的開發過程中,隨著程式 越寫越多,在乙個檔案裡 就會越來越長,越來越不容易維護。把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python中,乙個.py檔案就稱之為乙個模組 module 模組的好處 為了避免模組名衝突,pyt...

python廖雪峰教程 學習筆記

如何用字元來描述字元 d匹配數字 digit w匹配字母或數字 word s可以匹配空格 space 表示任意個字元,表示至少乙個字元 表示0個或1個字元,表示n個字元,表示n m個字元 可以匹配任意字元 例如 kongxiangyu w如何做到更精確的匹配?規定數字 字母或者下劃線 0 9a za...

廖雪峰python教程學習筆記(函式)

1.max函式可以接收任意多個引數,並返回最大的那個 2.函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個別名 3.在python中,定義乙個函式要用def語句,依次寫出函式名 括號 括號中的引數和冒號,然後在縮排塊中編寫函式體,函式的返回值用return...