input(str)中可以輸入列印字串
tuple是常量list
單個元素的tuple用(a,)表示,注意逗號
hex整數轉十六進製制字串, oct整數轉八進位制字串,ord字元轉ascii碼,chr ascii碼轉字元
//雙斜槓為地板除(忽略餘數),**為乘方
a[::-1] list翻轉,第二個冒號後面為不長
dict遍歷
遍歷key: for key in d:
遍歷value: for v in d.values():
遍歷key-value: for key,val in d.items():
list遍歷
遍歷元素: for l in list:
遍歷元素和索引: for i,a in enumerate(list):
函式可變引數:def foo(a,*b): , *list 將列表轉換為可變引數
函式關鍵字引數(python3以上):def foo(a,b,**kw):, **將dict轉換為關鍵字引數
函式限制關鍵字引數:def person(name, age, *, city, job):, 限制關鍵字引數與普通引數中間用*,隔開,所有限制關鍵字引數都必須傳入,但可以設預設值。
引數組合順序:必選引數 > 預設引數 > 可變引數 > 命名(限制)關鍵字引數 > 關鍵字引數
def f1(a, b, c=0, *args, **kw):
生成器:g = (x * x for x in range(10)),與列表解析式的區別是小括號而非中括號, 生成器邊迴圈邊計算,減少列表記憶體占用
生成器函式, 在函式中使用「yield 變數」,函式執行到這個地方中斷並返回變數,直到下一次迭代(呼叫next(generator))繼續執行後續**
iterable與iterator的區別
凡是可作用於for迴圈的物件都是iterable型別;
凡是可作用於next()函式的物件都是iterator型別,它們表示乙個惰性計算的序列;
集合資料型別如list、dict、str等是iterable但不是iterator,不過可以通過iter()函式獲得乙個iterator物件。
python的for迴圈本質上就是通過不斷呼叫next()函式實現的
for x in [1, 2, 3, 4, 5]:
pass
# 實際上完全等價於:
it = iter([1, 2, 3, 4, 5])
while true:
try:
x = next(it)
except stopiteration:
break
map(lambda x:x**2+1,a)
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
sorted([36, 5, -12, 9, -21], key=abs)
lambda表示式f = lambda params_in: params_out
偏函式 int2 = functools.partial(int, base=2)
class中以雙下劃線開頭的變數(如:__private_val)是私有變數, 不能被外部直接訪問, python直譯器將其改名成_classname__private_val
_slots_ 限制使用者能對類新增的屬性,對子類不起作用. __slots__ = ('name', 'age')
@property裝飾器
讀介面用@property裝飾, 寫介面用@score.setter裝飾,score是需要裝飾的介面名字.
儘管是函式, 但呼叫時不需要帶括號, 把它當做乙個變數進行訪問. 如果沒有定義寫介面, 則該"變數"唯讀, 不可寫.
注意: 必須要先定義@property才能定義寫介面.
class student(object):
#get介面
@property
def score(self):
return self._score
#set介面
@score.setter
def score(self, value):
if not isinstance(value, int):
raise valueerror('score must be an integer!')
if value < 0 or value > 100:
raise valueerror('score must between 0 ~ 100!')
self._score = value
例項屬性與類屬性的區別:例項屬性是在類中定義,可以通過類或例項訪問,但如果給例項繫結乙個同名的屬性,例項屬性會把類屬性覆蓋掉。
繫結方法
>>> def set_age(self, age): # 定義乙個函式作為例項方法
... self.age = age
>>> from types import methodtype
>>> s.set_age = methodtype(set_age, s) # 給例項繫結乙個方法
類中的特殊函式
_init_:類的初始化函式/建構函式
_slot_:限制類及其例項的可新增屬性
_len_: 返回長度,支援len()函式,它自動去呼叫該物件的_len_()方法
_str_: print()乙個例項時,會呼叫該函式
_repr_:直接顯示變數呼叫該函式,為除錯服務的
_iter_: 支援for迴圈,該方法返回乙個迭代物件,然後,python的for迴圈就會不斷呼叫該迭代物件的_next_()方法拿到迴圈的下乙個值,直到遇到stopiteration錯誤時退出迴圈。
_getitem_: 支援list那樣按照下標取出元素
_getattr_: 訪問物件屬性時,如果找不到某個屬性,會呼叫該函式。
_call_: 支援例項化方法,直接用例項呼叫方法
except不僅會捕獲指定型別的錯誤,還會捕獲其所有子類錯誤
執行py檔案時加入-o選項可以遮蔽所有斷言輸出
logging
import logging
logging.warning('this is warning message')
pdb: python3 -m pdb *.py
n:單步執行, l:檢視當前**, - p 變數名:檢視變數, q:退出除錯, c:繼續執行, pdb.set_trace()設定斷點
程式設計知識點 1 關鍵詞之儲存型別
應一些初學者的要求,雖然本人也絕對稱不上專業,但是想讓乙個人快速地走出初學的迷茫,需要這種精煉的集合 首先,闡明一下我的觀點 不論是什麼程式語言,其實有很多的共通之處,基本上你學過一門程式語言,其他的語言也能很快學會.本人學c 但是會在必要的時候盡量避開語言特色只講想法 在這麼廣泛且有深度的領域中,...
python關鍵詞大全 python的關鍵字有哪些
在python中若想查詢python中有哪些關鍵字。可以先導入keyword模組import keyword 匯入關鍵字模組 print keyword.kwlist 查詢所有關鍵字 查詢結果 false none true and as assert break class continue de...
python提取關鍵詞
value 34895348587575 value 34895348587575 abababbaba value 1.290934 coding utf 8 created on sun aug 16 20 57 31 2020 author jwy coding utf 8 version p...