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...