Python基礎(chǔ)知識

圖片來之網(wǎng)絡(luò)

有時候技術(shù)總是不夠用闻书,明明已經(jīng)學了很多技能了名斟,但是碰到問題還是不夠用。手工處理耗時太長的問題已經(jīng)困擾著希望解放雙手的我們魄眉,批處理是唯一的出路砰盐,那么python的使用將徹底的解決一切的重復(fù)勞動。

1 縮進

當語句以冒號:結(jié)尾時坑律,縮進的語句視為代碼塊

age = 20
if age >= 18:
    print('your age is', age)
    print('adult')
else:
    print('you are child’)

else if 可以縮寫成 elif

2 轉(zhuǎn)義

使用r’'來表示內(nèi)部的字符串不轉(zhuǎn)義

>>> print(r'\\\t\\')
\\\t\\

3 '''

使用''' (三個“'”單引號來允許多行內(nèi)容)

4 布爾值

兩種值: True 和 False
可以用邏輯運算符 and or not 來參與運算

5 空值

None 特殊的空值

6 變量常量

動態(tài)語言岩梳,不需要聲明類型,a = 2
常量用大寫和下劃線表示晃择,但是不能保證這個值不會變化

7 除法

/ 除法的結(jié)果是浮點數(shù)
// 地板除的結(jié)果是整數(shù)

8 字符串str

  • ord() 函數(shù)獲取字符的整數(shù)表示
  • chr() 函數(shù)把編碼轉(zhuǎn)換為對應(yīng)的字符
  • bytes類型帶b前綴的單引號或雙引號表示: 如 b’ABC’ ABC每個字符都只占用一個字節(jié). (可以使用encode/decode進行編碼)
  • len() 計算字符個數(shù)
  • 格式化 使用%運算符來格式化字符串冀值。 或者用format()方法, 替換字符串內(nèi)的{0},{1}…如 print('Hello, {0}, 成績提升了{1:.1f}%'.format('小明', 17.125)) 打印 Hello, 小明, 成績提升了17.1%
  • str(), int(), float() 進行類型轉(zhuǎn)換
  • startswith()和endswith() 判斷是否傳入的字符串開始或結(jié)束
  • join() 將字符串列表拼接成一個字符串 ','.join([])
  • split() 將一個字符串分割成一個字符串列表 'asf'.split(‘ ')
  • rjust(), ljust(), center() 通過插入空格或其他字符來進行對齊
  • strip(), strip(),strip() 刪除空白字符宫屠,或傳入的字符并且字符單個匹配

注意:

  1. 不能進行字符串和整型數(shù)的“+”操作列疗, 因為不支持自動類型轉(zhuǎn)換。
  2. 字符串乘以整型數(shù)浪蹂,“*”為字符串復(fù)制抵栈,進行復(fù)制字符串。

9 list

  • 有序集合坤次,可以添加和刪除元素古劲。 classmates = ['Michael', 'Bob', 'Tracy']
  • classmates[-1], 獲取最后一個元素, -2缰猴,倒數(shù)第二個产艾。
  • append 追加元素到末尾
  • insert 把元素插入到指定位置
  • pop 刪除list末尾的元素, pop(i) 刪除指定索引位置的元素

10 tuple

元組滑绒,有序列表胰舆,初始化后不能修改。

classmates = ('Michael', 'Bob', 'Tracy’)  
t = (1,)  //  一個元素的時候需要加一個逗號
  • 使用tuple(數(shù)組)蹬挤,可以將數(shù)組轉(zhuǎn)化為元組
  • 使用list(元組)缚窿,可以將元組轉(zhuǎn)化為數(shù)組

11 循環(huán)

  • for…in循環(huán)
  • range() 提供生成整數(shù)序列 range(101) 生成0-100的整數(shù)序列
  • while 循環(huán)
  • break 語句退出循環(huán)
  • continue 跳過當前的這次循環(huán),開始下一次循環(huán)

12 字典

  • dict 與iOS的Dictionary和Android的map一樣
  • d = {'Micheal': 95, 'Bob': 75, 'Tracy': 85}
  • dict[‘key’] 當key不存在的時候會報錯焰扳。需要先進行in判斷
  • get() 獲取value倦零, 如果key不存在返回None, d.get('Thomas', -1) 如果不存在吨悍,返回指定值
  • pop() 刪除key和對應(yīng)的value
  • setdefault() 當key不存在時扫茅,設(shè)置默認值,然后返回value育瓜。如果key存在葫隙,則直接返回value。

13 in

判斷是否在集合中 ‘Thomas’ in d

14 set

  • 一組不能重復(fù)的key 初始化 s = set([1,2,3,4])
  • add(key) 添加元素
  • remove(key) 刪除元素

15 def函數(shù)

  • def my_abs(x): 函數(shù)體
  • pass 語句躏仇,定義什么都不做的空函數(shù)
  • isinstance() 檢查類型, isinstance(x, (int, float)) 檢查x是否是int或float類型.包括繼承關(guān)系
  • return 可以返回多個值恋脚,使用的是truple
  • 默認參數(shù) def power(x, n=2): 那么第二個參數(shù)可以不傳腺办。 默認參數(shù)要牢記一點: 默認參數(shù)必須指向不變對象!
  • 可變參數(shù) 參數(shù)前面加一個*號
  • 關(guān)鍵字參數(shù) 參數(shù)前面加兩個*號糟描, 傳入的是一個字典
  • 命名關(guān)鍵字參數(shù) 特殊分隔符,后被視為命名關(guān)鍵字參數(shù)怀喉。如果已經(jīng)定義了可變參數(shù),那么不需要再寫一個船响,
  • 參數(shù)順序躬拢,必選參數(shù)->默認參數(shù)->可變參數(shù)->命名關(guān)鍵字參數(shù)->關(guān)鍵字參數(shù)

16 切片Slice

L[0:3] 取集合的前三個元素,相當于L[0], L[1], L[2]
L[::5] 從0開始见间,每5個取一個
可以去字符串聊闯,結(jié)合進行切片操作

17 迭代Iteration

enumerate 可以將list變成索引-元素

18 列表生成式

[m + n for m in 'ABC' for n in 'XYZ’]
將表達式寫前面后面緊跟for,可以二層米诉,三層及以上

19 生成器generator

  • 一邊循環(huán)一邊計算馅袁。將列表生成式的[]換成(), 就是生成器。
  • 列表生成式是返回一個列表荒辕,而生成器是返回一個generator,通過next()函數(shù)獲取下一個值犹褒。
  • 如果函數(shù)中定義了yield 關(guān)鍵字抵窒,那么這個函數(shù)就變成了generator

20 迭代器Iterable

  • 可以直接作用于for循環(huán)的對象list, tuple, dict, set, str等統(tǒng)稱為迭代器Iterable。
  • 可以被next()函數(shù)調(diào)用并不斷返回下一個值的對象成為迭代器Iterator叠骑。
  • 使用iter()函數(shù)李皇,可以將Iterable變成Iterator。

21 捕獲異常

try:
except  XXX:

22 高階函數(shù)

一個函數(shù)可以接受另一個函數(shù)作為參數(shù)宙枷,這個函數(shù)就是高階函數(shù)掉房。

  • map() 接受2個參數(shù),一個函數(shù)和一個Iterable慰丛。使用函數(shù)對Iterable中每一個元素進行運算卓囚。
  • reduce() 接受2個參數(shù),一個函數(shù)和一個Iterable诅病, 這個函數(shù)必須接受兩個參數(shù)哪亿。 把結(jié)果和下一個元素使用函數(shù)進行累計計算。
  • filter() 用于過濾序列贤笆,接受一個函數(shù)和一個Iterable蝇棉。
  • sorted() 接受一個列表和一個函數(shù)。
  • 閉包(返回函數(shù))不要引用任何循環(huán)變量或者后續(xù)會發(fā)生變化的變量芥永。
  • 函數(shù)變量篡殷,name 屬性獲取函數(shù)的名字。
  • 偏函數(shù)埋涧,使用functools.partial()把函數(shù)的某些參數(shù)給固定住板辽,返回一個新的函數(shù)奇瘦。

23 裝飾器decorator

在代碼運行期間動態(tài)增加功能的方式,稱為裝飾器戳气。
@log 置于函數(shù)定義處链患,不僅會運行函數(shù),還會在運行前執(zhí)行l(wèi)og的內(nèi)容瓶您。

24 模塊麻捻、包

每個py文件就是一個模塊,每個文件夾就是一個包呀袱,包中必須要有一個init.py的文件贸毕。
模塊不能和Python自帶的模塊名沖突,否者將無法導(dǎo)入系統(tǒng)自帶的模塊夜赵。

  • 導(dǎo)入模塊 import明棍,然后可以直接用模塊內(nèi)的變量和函數(shù)
  • 變量名使用“_”開頭,說明是private的不能直接引用寇僧,不然是public摊腋。

25 類

  • class Student(object): class后緊跟類型,()中是繼承的類嘁傀。
  • 可以自由綁定屬性
  • 使用init函數(shù)實例類并綁定屬性
  • 類中的函數(shù)兴蒸,第一參數(shù)一定是self。調(diào)用的時候self不需要傳遞细办,其他參數(shù)正常傳入橙凳。
  • 屬性名前面添加下劃線”__”,那么這個屬性就是私有變量笑撞,只有內(nèi)部可以訪問
  • 如果屬性名是下劃線”__”開頭和結(jié)尾的岛啸,那么這個屬性是特殊屬性,可以直接訪問
  • type() 獲取對象的類屬性
  • dir() 獲取對象的所有屬性和方法茴肥,使用hasattr(obj, ‘x’)判斷是否有屬性x坚踩,setattr(obj, ‘y’, 19)設(shè)置一個屬性y并賦值19,getattr(obj, ‘y’) 獲取屬性y的值
  • 類屬性瓤狐,在類中直接定義屬性堕虹,使用類名訪問
class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score

26 限制實例屬性

對類和實例可以動態(tài)的添加屬性和方法,使用slots可以限制

class Student(object):
    __slots__ = ('name', 'age') # 用tuple定義允許綁定的屬性名稱

27 @property

負責把一個方法變成屬性調(diào)用芬首。
@property把getter方法變成屬性赴捞, 并會創(chuàng)建另一個裝飾器@xxx.setter把setter方法變成屬性賦值。
如果沒有定義@xxx.setter那么說明這個屬性是只讀屬性

28 多繼承MixIn

一個類可以繼承多個類郁稍。

29 定制類

  • str 返回類的描述赦政,可以重載str來實現(xiàn)輸出類的描述
  • iter 使類支持for…in循環(huán)操作,同時需要實現(xiàn)next方法用來支持迭代
  • getitem 使類可以像list一樣獲取第幾個元素

30 枚舉類

Enum類 value屬性自動賦值給成員int常量,默認從1開始計數(shù)

31 文件讀

  • open()函數(shù)恢着,打開一個文件對象
  • read()函數(shù)桐愉, 讀取內(nèi)容到內(nèi)存
  • close()函數(shù),關(guān)閉文件
  • with 語句掰派,可以自動調(diào)用close函數(shù)
  • write() 寫文件
    with open('/path/to/file', 'r') as f:
    print(f.read())

32 StringIO

內(nèi)存中讀寫str
getvalue() 獲取寫入后的str

33 BytesIO

內(nèi)存中讀寫bytes

34 操作文件和目錄

  • os模塊直接調(diào)用操作系統(tǒng)提供的接口函數(shù)
  • name 操作系統(tǒng)類型
  • uname() 詳細的系統(tǒng)信息
  • environ 環(huán)境變量
  • path 操作文件和目錄模塊 abspath(), join(), mkdir(), reader(), split(), splitext(),
  • rename 重命名
  • remove 刪掉文件

35 序列化

pickling
pickle 模塊

  • 對象序列化 pickle.dumps(d)
  • 對象反序列化 pickle.load(f)
    json模塊 可以直接進行對dict進行json的轉(zhuǎn)換

36 多進程

fork() 調(diào)用創(chuàng)建一個子進程
getpid() 獲取進程的ID
getppid() 獲取父進程的ID

37 del

刪除一個定義的變量
刪除列表中一個元素

38 exec

內(nèi)置語句 執(zhí)行一個表達式

39 raise

觸發(fā)一個異常

40 *星號

*   該位置接受任意多個非關(guān)鍵字(non-keyword)參數(shù)从诲,在函數(shù)中將其轉(zhuǎn)化為元組(1,2,3,4)
**  該位置接受任意多個關(guān)鍵字(keyword)參數(shù),在函數(shù)**位置上轉(zhuǎn)化為詞典 [key:value, key:value ]

41 super

class C(B):
       def meth(self, arg):
           super(C, self).meth(arg)

42 **指數(shù)

指數(shù)操作靡羡, 2 ** 3 得到8

43 print不換行

print('Hello', end=' ')
print("World")

打印 Hello World

44 global

將局部變量作用域使用global聲明變量系洛,那么這個變量為全局變量

45 copy

copy.copy() 函數(shù)用來復(fù)制列表或字典這樣的可變值。
copy.deepcopy() 函數(shù)用來復(fù)制列表中包含列表的情況略步。

46 isX字符串方法

  • slower() 字符都是小寫
  • ismpper() 字符都是大寫
  • isalpha() 只包含字母描扯,且非空
  • isalnum() 只包含字母和數(shù)字,且非空
  • isdecimal() 只包含數(shù)字字符趟薄,且非空(不包含小數(shù)點)
  • isspace() 只包含空格绽诚,制表符和換行,且非空
  • istitle() 僅包含大寫字母開頭杭煎,后面是小寫字母的單詞

47 正則表達式

import re
phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)’)  #創(chuàng)建正則表達式
  • search返回一個March對象
  • findall()返回一組字符串
  • sub() 用新的字符串替換掉匹配的模式
    匹配符
  • 字符恩够? 表示它前面的分組在這個模式中是可選的(0次或1次)
  • 字符* 表示它之前的分組在這個模式中匹配0次或多次
  • 字符+ 表示它之前的分組在這個模式中匹配1次或多次
  • 符號{} 表示它之前的分組重復(fù)指定次數(shù),用兩個數(shù)字“羡铲,”分隔表示一個范圍
    通配符: ‘.’ 匹配除了換行之外的所有字符蜂桶,僅僅匹配一個字符
  • 使用.* 來匹配除了換行符的所有字符
  • ? 后面添加一個犀勒?,表示非貪心匹配妥曲,也就是匹配最短符合的字符串
  • re.DOTALL 表示匹配所有字符
  • re.IGNORECASE 或 re.I 表示不區(qū)分大小寫
  • re.VERBOSE 忽略正則表達式中的空格和注釋
    字符分類
  • \d 0到9的任何數(shù)字
  • \D 除了0到9的數(shù)字之外的任何字符
  • \w 任何字母贾费、數(shù)字和下劃線字符 (相當于單詞word)
  • \W 除了字母、數(shù)字和下劃線字符之外的任何字符
  • \s 空格檐盟、制表符或換行符 (相當于空白space)
  • \S 除了空格褂萧、制表符或換行符之外的任何字符
  • [123] 自定義字符分類,匹配中括號內(nèi)的字符葵萎。字符’.’,’*’,’?’,’(‘和’)’需要轉(zhuǎn)義
  • ^ 中括號中插入^表示非字符類导犹。也表明必須此分組開始
  • $ 必須此分組結(jié)尾

// TODO 以后再補充吧 感覺Python強大的地方是提供了好多好用的庫,可以快速的實現(xiàn)自己的功能

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末羡忘,一起剝皮案震驚了整個濱河市谎痢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卷雕,老刑警劉巖节猿,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡滨嘱,警方通過查閱死者的電腦和手機峰鄙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來太雨,“玉大人吟榴,你說我怎么就攤上這事∧野猓” “怎么了吩翻?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宪拥。 經(jīng)常有香客問我仿野,道長,這世上最難降的妖魔是什么她君? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任脚作,我火速辦了婚禮,結(jié)果婚禮上缔刹,老公的妹妹穿的比我還像新娘球涛。我一直安慰自己,他們只是感情好校镐,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布亿扁。 她就那樣靜靜地躺著,像睡著了一般鸟廓。 火紅的嫁衣襯著肌膚如雪从祝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天引谜,我揣著相機與錄音牍陌,去河邊找鬼。 笑死员咽,一個胖子當著我的面吹牛毒涧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贝室,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼契讲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了滑频?” 一聲冷哼從身側(cè)響起捡偏,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎峡迷,沒想到半個月后霹琼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年枣申,在試婚紗的時候發(fā)現(xiàn)自己被綠了售葡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡忠藤,死狀恐怖挟伙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情模孩,我是刑警寧澤尖阔,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站榨咐,受9級特大地震影響介却,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜块茁,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望数焊。 院中可真熱鬧,春花似錦佩耳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛮瞄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裕坊,已是汗流浹背燕酷。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工籍凝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苗缩。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓饵蒂,卻偏偏與公主長得像酱讶,于是被迫代替她去往敵國和親退盯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.感恩早上先生處理信用卡的事情慰照。2.反正昨天晚上吳老師提醒我琉朽,有一個條沒有寫好,告知我今天有可能發(fā)工資箱叁。3.感恩...
    freemanlin1314閱讀 209評論 0 0
  • 2018年11月11日 姓名 :曹靜杰 企業(yè)名稱 : 遼寧遼陽叢迪服裝有限公司 組別 388期 反省1組 【日精進...
    eddd166e28ad閱讀 156評論 0 0
  • “回望曾經(jīng)的旅程螟够,三言兩語說不清”很喜歡《美若黎明》這首歌的旋律與歌詞,原唱歌手是“冷萌段子手”“秋褲男神”的李健...
    長大的孤單閱讀 1,229評論 1 1