黑馬程序員python教程,8天python從入門到精通,學python看這套就

1.cmd調出命令提示符后,輸入python并回車即為進入python.exe(解釋器程序:功能是解釋python代碼并提交給計算機執(zhí)行)之后可在>>>后面輸入代碼,但每回車一次就運行一次
2.一次性運行一大段代碼:cmd后輸入 python+空格+文件路徑
如:python D:\python\test.py
3.pycharm常用快捷鍵:
ctrl+alt+s:打開設置
ctrl+d:復制當前行代碼
ctrl+a(/f):全選(/搜索)
ctrl+shift+f10:運行當前代碼文件
shift+alt+上/下:將當前行代碼上下移動
shift+f6:重命名文件
4.字面量-----不需要聲明變量類型,直接寫即可 如:666
print(666)
5.單行注釋:以#開頭中,最好用空格隔開
多行注釋:一對三個雙引號 (一般對python文件,類或者方法進行解釋) 即:
"""
我是力神
"""
6.print輸出多份內容----print(內容1,內容2,,,,內容n)
并且默認print語句輸出內容時會自動換行
想要不換行:
print(“hello”,end=‘’)
變量----可以存儲很多類型的數(shù)據(jù)信息(在python中變量本身無類型) 變量名=變量值 如:
money=50
print("錢包還有:",money)
money=money-10
print("買了冰淇淋話費10元,還剩余:",money,"元")
7.查看數(shù)據(jù)類型----type()
8.數(shù)據(jù)類型轉換----int(x) / float(x) / str(x)
均表示將x轉換成對應的數(shù)據(jù)類型
萬物都可轉化成字符串,帶上雙引號即可
但是字符串轉換成數(shù)字時必須確保字符串的內容都是數(shù)字
浮點數(shù)轉換成整數(shù)會丟失精度,即小數(shù)部分
9.標識符命名規(guī)則----由英文、中文(不推薦)、數(shù)字、下劃線組成,開頭不能是數(shù)字1
變量命名規(guī)則----簡潔明了;多個單詞組合變量名時要用下劃線做分隔(如:first_number=1);英文字母全小寫
10.運算符: // 取整除(只要整數(shù)部分) 9//2 結果 :2
** 指數(shù) 2**3 結果:8
11.三種字符串定義方法:單/雙/三引號定義法
name="""黑馬"""
單可包含雙 name=‘“黑馬”’
雙可包含單 name=“‘黑馬’”’
可以用轉義字符\解除引號的效用
name=“\"黑馬\"”
name=‘\'黑馬\'’
12.字符串拼接---用“+”連接字符串變量或者字符串字面量
統(tǒng)計字符串長度---- len()
13.字符串格式化----(不僅可以在字符串類型之間,還可以有數(shù)字類型)如:
num=57
salary=16781
message=“python大數(shù)據(jù)學科,北京%s期,畢業(yè)平均工資:%s”%(num,salary)
數(shù)據(jù)類型占位:
%s ---- %表示:我要占位
s表示:將變量變成字符串放入占位的地方
%d 將內容轉換成整數(shù)放入占位的地方
%f 將內容轉換成浮點數(shù)放入占位的地方
14.字符串格式化-數(shù)字精度控制
m 控制寬度,要求是數(shù)字(小數(shù)點和小數(shù)部分也算入寬度計算)如果m小于數(shù)字本身,則不生效
.n 控制精度,會進行小數(shù)的四舍五入
15.快速格式化方法(不限數(shù)據(jù)類型,沒有精度控制):
語法 ----- f"內容{變量}" (即format首字母)
如:name=“博客”
year=2023
price=19.26
print(f"我是{name},我成立于:{year},我今天的股票價格是:{price}")
16.input() ---- 數(shù)據(jù)輸入(輸入的數(shù)據(jù)都被當做字符串返回)

17.bool(布爾類型) True / False
變量名稱=布爾類型字面量
可以通過比較運算得到布爾類型的結果
18.if語句

19.if else語句

20.if-elif-else多條件判斷語句

elif語句可以寫多個,當所有條件都不滿足時,執(zhí)行else后面的語句
從上往下有序判斷條件是否滿足,有一個滿足后面的條件就不用管了,else語句可以省略不寫
案例:

21.產(chǎn)生隨機數(shù)字:
import random
num=random.randint(1,10)
22.while循環(huán)

while+空格+True / False

23.制表符\t

24.九九乘法表(用while循環(huán)寫)

print()即為輸出一個換行
25.for循環(huán)
無法自定義循環(huán)條件,只能被動取出數(shù)據(jù)處理


26.range語句
一. range(num) 獲取一個從0開始,到num結束的數(shù)字序列(不含num本身)
如 range(5)得到數(shù)據(jù)【0,1,2,3,4】

27.變量作用域
想要訪問for循環(huán)中的臨時變量,可以預先在循環(huán)外定義它
規(guī)范為軟要求,規(guī)則是硬要求
28.九九乘法表(用for循環(huán)寫)

29.continue和break語句
在嵌套循環(huán)中,都只能作用在所在的循環(huán)上,對上層循環(huán)不起作用


30.函數(shù)的定義
def 函數(shù)名(傳入?yún)?shù)):
函數(shù)體
return 返回值
31.函數(shù)空返回值None
在if判斷中,None等于False
在聲明無初始內容的變量時,如name=None

32.函數(shù)的說明文檔

33.在函數(shù)的內部將外面的全局變量進行修改:
重新賦值沒用---因為相當于又定義了一個新的局部變量
global關鍵字

34.數(shù)據(jù)容器:可以容納多份數(shù)據(jù)的數(shù)據(jù)類型
如:name_list=['小紅’,‘小美’,‘小李’,‘小王’]

35.列表list

變量名稱=[元素1,元素2,。。。]
元素類型不受限制
列表允許重復數(shù)據(jù)存在
空列表---- 變量名稱=[ ] 或 = list()
嵌套列表:my_list = [[1,2,3],[4,5,6]]
正向索引,下標從0開始
反向索引,下標從-1開始


36.方法

37.列表常用操作
# 查找下標 列表.index(元素)
#修改特定位置的元素值 列表[下標] = 值
(即進行重新賦值 / 修改)
#在指定下標位置插入指定的元素
列表.insert(下標,元素)
#追加元素到列表尾部 列表.append(元素)
append追加單個元素
extend追加一批元素

#刪除元素
del 列表[下標] / 列表.pop(下標)
可以通過返回值接收到pop方法刪除即取出的元素
remove方法 從前往后刪除第一個

#請空列表內容 列表.clear()
#統(tǒng)計某一個元素在列表內的數(shù)量:列表.count()
#統(tǒng)計列表內有多少元素 len(列表)

38.列表遍歷

39.元組tuple 元組內的元素不能被篡改,否則會報錯,但是可以修改元祖內的list內容


嵌套元組根據(jù)下標尋找:num = t5[1][3]

40.字符串也可以通過下標索引:從0開始 / 從-1開始
字符串也是一個無法修改的數(shù)據(jù)容器
# index方法
# replace方法


# split方法
用‘,’的時要注意中英文區(qū)別


因為同樣是得到了一個新的字符串,所以用新的 new_my_str進行賦值
# strip
line = line.strip() 能去除開頭和結尾的空格以及換行符

# count()
# len()

41.序列---內容連續(xù)、有序,可使用下標索引的一類數(shù)據(jù)容器
列表、元組、字符串均可以視為序列
非序列類型:集合、字典(不支持下標索引)
序列切片(結束下標元素不包含在內)

步長為1時可以省略不寫
為n表示每次跳過n-1個取元素
如; my_tuple = (0,1,2,3,4,5,6)
result = my_tuple[:]
(表示從開頭到結尾)

42.切片聯(lián)系案例

示例如下

42.集合set :內容無序(所以不支持下標索引訪問)但是內容可以修改,不重復
不支持下標,所以不能用while循環(huán)進行遍歷

# pop方法

# difference方法

# difference_update方法

# union方法
新集合去重且順序不確定

# len()統(tǒng)計集合元素數(shù)量時同樣去重,一種元素只算一個

43.字典dict
其中的key不能重復
沒有下標索引,通過key來獲得value值

字典[key] 獲得對應的value
字典的嵌套:

score = stu_score_dict[“周杰倫”][“語文”]
44.字典常用操作
# 新增 / 更新元素
字典[key] = value
# keys方法

# 通過獲取全部的key遍歷

# 直接通過for循環(huán)進行遍歷,每一次循環(huán)都直接得到key


45.數(shù)據(jù)容器分類


通用操作:
遍歷


字符串轉列表(元組、集合):會將字符串中的每一個元素取出作為列表(元組)元素
字典轉列表(元組、集合):會將value拋棄,key作為列表(元組)元素
字典轉字符串:value會保留

字典可以轉換成別的容器,但是別的容器不能轉換成字典
通用排序---排序的結果都是列表對象(所以字典排序后value值會丟失)

逗號后面是默認參數(shù),不寫則默認是正向排序,寫了為反向


46.字符串大小比較
單個字符之間通過ASCII碼表,確定字符對應的碼值數(shù)字來確定大小

47.多返回值的函數(shù)

48.函數(shù)的多種參數(shù)

缺省參數(shù);

不定長參數(shù):

48.函數(shù)作為參數(shù)傳遞
實質是一種邏輯的傳遞
49.lambda匿名函數(shù)

圖中的compute相當于一個調用test_func時傳入的參數(shù),也可以理解成x

50.文件編碼:使用正確的編碼才能對文件進行正確的讀寫操作
編碼:是一種規(guī)則集合,記錄了內容和二進制間進行相互轉換的邏輯
以什么編碼寫文件就以什么編碼讀文件
用windows系統(tǒng)自帶的記事本打開文件即可查看文件編碼(右下角)
UTF-8 是目前全球通用的文件編碼格式
51.文件操作
# 打開文件:



# 讀操作

用這兩種方法讀取時,每使用一次read,讀取文件的位置會被記錄,下一次讀取會接著往下讀?。ㄆ鋵嵕褪怯幸粋€指針)

readlines方法讀取文件封裝到列表時,會將換行符也讀取到

readlines返回的是列表,readline返回的是字符串

for循環(huán)讀出來的是列表形式
# 關閉文件

如果不用close可以用下面這個:



52.案例


嚴格來說,第一種方法不太準確,當有‘itheimahhh’也會被計數(shù)
自己做的:

53.寫操作
文件不存在時會字典創(chuàng)建文件
存在時在再次打開文件寫時會清空原有內容

其實close方法內置了flush功能
54.追加操作(與寫操作無異,將‘w’換成‘a(chǎn)’即可)

想要寫入時換行追加,可以加上換行符‘\n’

54.文件備份案例
題目


代碼

55.異常處理(捕獲異常:提前假設某處會出現(xiàn)異常,做好提前準備,當真的出現(xiàn)異常時,可以有后續(xù)手段)
###

### 下圖的e是一個別名,改成a/c。。。。都可以
e可以看成是一個記錄異常信息的變量

示例:

###

示例:

###
或者使用開頭的捕獲常規(guī)異常
即只用 except:

# else

# finally

56.異常的傳遞性

57.python模塊:即為一個Python文件,以 .py結尾,
模塊的導入一般寫在代碼文件的開頭位置

中括號表示可選,即中括號內的可以不寫:

### import模塊:

ctrl + 鼠標左鍵 查看導入模塊文件內容
ctrl + f 搜索文件內函數(shù)
###

###

示例:

###

58.自定義模塊
新建一個Python文件,并在里面定義出對應的函數(shù)

ps: 當導入多個模塊時,且模塊內有同名功能,當調用這個同名功能時,調用到的時后面導入的模塊的功能

# 測試功能
Python里面有內置變量 __name__

既滿足了自定義模塊內右鍵運行時能進行測試又實現(xiàn)了導入模塊功能時測試功能不會被運行
###

注意事項;

59.python包

當 __init__.py 這個特殊文件存在時,該文件夾才是一個python包,不存在時,就是一個普通的文件夾


或者如下示例:

又或者直接導入某種功能;


示例:


注意事項:

60.如何安裝第三方包



注意事項;

61.

因為f.close()也可能出現(xiàn)錯誤,因為如果在f = open就出現(xiàn)錯誤,則f 仍然為None,無法調用close方法
示例代碼;




62.json數(shù)據(jù)格式(JavaScript Object Notation)
json本質上來說就是一個字符串,將Python的字典轉化成字符串,或者將python中元素都是字典的列表轉換成字符串
能讓不同語言都能夠相互通用地互相傳遞數(shù)據(jù),是一種非常良好的中轉數(shù)據(jù)格式

其實就是python內的字典 / 內部嵌套了字典的列表


示例:(帶上后面的參數(shù)使得中文能完整地不加轉換地輸出)

因為json是字符串,所以別忘了 ‘ ’

總結:

63.pyecharts模塊

64.pyecharts快速入門.
構建出一個Line對象后,得到的只是一個空的二維坐標系

自己做的圖:

全局配置,類似于一種通用設置

設置全局配置項:

鼠標懸??梢圆榭慈峙渲庙椨心男?,或者收藏網(wǎng)頁(pyecharts官網(wǎng))里面查看,ctrl+p???

使用前要記得導包

示例如圖:

總結:

65.數(shù)據(jù)準備
可以通過第三方網(wǎng)站(如ab173---懶人網(wǎng)站)對json數(shù)據(jù)進行格式化分析,可以更容易地看出數(shù)據(jù)之間的層級關系

# 獲取trend key
json整個字典復制給了usdict,選擇usdict的key“data”可以獲取到值,值是另外一個列表,然后從字典的key“data”獲取到的列表里面用下標索引0來獲取一個新的字典,
最后在這個新的字典里面還是要新的key“trend”獲取到值,這個值就是我們要的日期啊什么什么的

去完之后復制打印出來的代碼到網(wǎng)站:

#取x軸


因為2020年結尾的12月31號的
#取y軸


66.構建折線圖
構建一個Line對象
三個國家其實可以共用同一個x軸,所以添加一個x軸即可



67.# 設置全局選項
ctrl+p 導出如下卡片:

代碼添加:



鼠標在圓點懸??梢燥@示
68.地圖

可見,數(shù)據(jù)是一個列表,列表里面的元素是元組
要顯示顏色:

手動校準范圍:

查看顏色編碼:


代碼實現(xiàn):


69.全國疫情地圖構建

取數(shù)據(jù)的步驟如下:


21行是給列表傳參,傳入一個元組,元組里面是兩個值
render()也可以傳參數(shù):

代碼:


效果圖:

70.河南省疫情地圖構建
層級關系如下:

老師代碼;




缺少一個濟源市的數(shù)據(jù)所以手動添加


71.基礎柱狀圖。

反轉X軸和y軸

想要讓數(shù)據(jù)顯示如圖:

添加如下代碼:在導包之后,在添加y軸數(shù)據(jù)的同時添加標簽

------------------------------------------------------------
總結:

72.基礎時間線柱狀圖的繪制


想讓時間線自動播放:

時間線設置主題 :如柱狀圖的顏色
即在創(chuàng)建時間線對象時傳入一個字典

------------------------------------------------------------
總結

73.動態(tài)GDP柱狀圖繪制
列表的sort方法:


------------------------------------------------------------

此處是傳入了一個函數(shù)對象,而不是函數(shù)的返回值
這里就是sort方法將my_list遍歷進coose_sort_key?(等于for element in my_list)?,將他們的返回值進行升序, 降序排列

------------------------------------------------------------
需求分析

數(shù)據(jù)處理:
下圖可見數(shù)據(jù)之間由,分隔開所以可以由,將其分成三列

右下角不再是UTF-8而是ANSI, ANSI是Windows系統(tǒng)的一個默認編碼格式,即跟隨Windows系統(tǒng)語言版本來的,而Windows系統(tǒng)是中文版本所以默認的中文編碼是GB2312

也可以另存文件,改為UTF-8的格式

為什么要用字典,因為這樣可以把字典的key作為x軸,對應的value作為y軸
這里有錯,不是將鍵作為x軸,而是將鍵對應的值作為x軸和y軸
------------------------------------------------------------
字存在對應的key值時不會報錯,不存在則報錯


這里其實不是字典的append方法,而是在傳入key后,新建一個列表對象作為value,然后再把數(shù)據(jù)'美國, 123'這個列表數(shù)據(jù)傳入剛才新建的列表對象中
各位,這里的意思是一開始字典是空的,然后dict_data[year]是在找year這個鍵
由于字典是空的,就會出錯,所以用try來捕獲,如果出錯了執(zhí)行except里面的語句
而except里dict_data[year]=[]的意思是給字典添加一個鍵值對為year的值:[]空列表
這樣說吧,第一次字典沒數(shù)據(jù),是進行下面expect的內容,先添加1960關鍵字,再向里面加一個列表,列表用的append
------------------------------------------------------------構建時間線:
因為字典中的key值是無序的,而時間線的年份是從小到大的,所以通過sorted函數(shù)將年份排序成列表
------------------------------------------------------------

因為每一年GDP只取到前8的國家,所以通過列表中國家的GDP數(shù)據(jù)進行排序嗎,即為開頭的列表的sort方法

又又因為X軸是一個列表,存放國家,y軸也是一個列表,存放GDP數(shù)據(jù),所以定義兩個空列表
------------------------------------------------------------

要想把最高GDP數(shù)據(jù)放在最上面,可以在加入添加數(shù)據(jù)前就把數(shù)據(jù)翻轉

或者data_dict[year].sort(key=lambda element:element[1],reverse=False)這里改為False就好了??? X
等于False不是取倒數(shù)前8了嗎哈哈
p111
使用對象組織數(shù)據(jù)

p112
類的定義和使用
函數(shù)是寫在類外部的,方法是寫在類內部的函數(shù)


成員方法的定義語法

成員方法訪問成員變量必須使用self
self表示的是類對象本身的意思
Self雖然出現(xiàn)在形參列表中,但是本質上不占用參數(shù)位置,無需理會
注意事項:

p113


類不是已經(jīng)能夠完美地描述現(xiàn)實世界的事物了嗎?那為什么還要創(chuàng)建對象才去使用呢

類是抽象,對象是具體。就像馬是類,而白馬、黑馬等是對象,可以這樣理解?
面向對象編程:
設計類,基于類創(chuàng)建對象做具體的工作

通過Python有一個內置的模塊叫做winsound導入它之后可以讓我們的電腦發(fā)出一些小聲音再通過beep方法就可以發(fā)出聲音了
其中2000表示頻率
3000表示鬧鐘響鈴的持續(xù)時間

p114
構造方法
init這個單詞的前后各有兩個_



如果上一步省略了,那么這一步就表示對成員變量進行聲明并且進行賦值
也就是說這一步既有定義的功能也有賦值的功能
-------------------------------------------------------------構造方法的注意事項


案例練習------------------------------------------------

代碼:


p115

str字符串方法

lt小于符合比較方法

括號內的self表示本身的類對象,other表示另外一個傳入的類對象

其實就是定義一種方法,告訴計算機你比較的是什么東西,如果說不定義,計算機不知道該比較年齡還是姓名(可以用ASCII碼比較)
Le小于等于比較符號方法

eq比較運算符實現(xiàn)方法

這個地方?jīng)]有報錯是因為在沒有實現(xiàn)eq方法的前提下,等等符號就默認比較內存地址,如果是比較內存地址那么STU1和STU2是兩個獨立的對象所以結果一定是false:
每新建一個對象就會自動生成一個內存地址值,直接打印對象打印的是地址值,想打印對象中的變量,必須對象名.變量名,這個對象對應的地址里邊的變量值

總結

P116

封裝

對用戶隱藏的屬性和行為:

私有成員:

使用私有成員:

如果不賦值直接訪問私有成員變量并打印怎么會報錯

???這里為什么可以賦值并打印出來沒有報錯呢
它不是私有變量嗎

接上條:而賦值可以訪問到是因為創(chuàng)建了一個新屬性,但是這個屬性和原來的哪個私有屬性是沒有關系的
可以賦值是相當于又定義了一個新的變量,類內部的私有成員變量值不變
直接在外部修改私有成員變量不會報錯,那是因為這個為對象創(chuàng)造的一個新成員變量



所以私有成員的作用是可以定義不直接對用戶開放的屬性和行為
118繼承
單繼承:

多繼承:

pass關鍵字:用來補全語法,
比如我們在寫類的時候,這個類繼承了別的類已經(jīng)有很多的功能了,我不想在添加新功能,但是由于語法要求不能空著必須寫點什么,保證我們的語法不報錯,所以可以用pass來替代一下

多繼承的注意事項:

總結:

P119

調用父類同名成員




------------------------------------------------------------------------------------------------------------------------多繼承情況下,如果出現(xiàn)同名成員,使用supert()方式2調用父類成員時,優(yōu)先匹配先繼承的父類成員



P120










p121
掌握對函數(shù)或方法的形參或返回值進行類型注解



p122
使用union類型進行聯(lián)合注解



P123多態(tài)





這里的AC是抽象類,抽象類即為含有抽象方法的類,抽象方法就是方法體為空即pass的方法函數(shù)
所以構造對象時是創(chuàng)建它的子類

父類的存在就是一個標準,雖然他不執(zhí)行,但是沒有這個標準,所有的類都亂套了,講究的就是一個規(guī)范,規(guī)范即優(yōu)雅

p124-126(數(shù)據(jù)分析案例)

代碼中通過print輸出的是內存地址,而內存地址并沒有用,所以我們通過一個魔術方法將它的內容輸出
將地址轉換成字符串輸出

多態(tài)的前提是:子類繼承父類、復寫父類方法,而使用多態(tài)是:子類對象類型傳給父類對象類型對象,通過父類對象調取方法
----------------------------------------------------------

這里的如果日期不在字典里就創(chuàng)建新的日期作為key,相當于遍歷結束同時把字典創(chuàng)建完成
------------------------------------------------------------

record.data是Record里的成員屬性,data
-------------------------------------------------------

也可以和之前那樣用異常處理
代碼如下:






p127SQL




p128數(shù)據(jù)庫

以Excel組織數(shù)據(jù)的存儲

數(shù)據(jù)庫如何存儲數(shù)據(jù);

數(shù)據(jù)庫與SQL的關系:

相當于數(shù)據(jù)庫是一塊農(nóng)田,農(nóng)田里面可以滋養(yǎng)數(shù)據(jù),而SQL可以幫助我們更好地完成農(nóng)田的管理

p129


p139
pspark




最為亮眼的是大數(shù)據(jù)開發(fā)和人工智能






p140
pyspark安裝



p154
閉包



簡單的閉包可以讓我們的函數(shù)依賴外部變量
圖中的logo變量對于inner函數(shù)來說是持續(xù)存在的外部變量,如“黑馬程序員”,而對于outer函數(shù)來說是臨時的內部變量
不管inner函數(shù)調用幾次“黑馬程序員”這個變量都是不變的,沒有人能夠訪問到也沒有人能夠修改它,因為“黑馬程序員”對于outer函數(shù)來說是臨時的內部變量
想要修改的話只有再調用一次out函數(shù)再傳入一個參數(shù)(如圖)

從而達到既想依賴外部全局變量又不想那個全局變量可以被修改
------------------------------------------------------------
一般來說如果想讓一個函數(shù)去使用外部變量肯定是要在函數(shù)的外面去定義一個變量,那么,當函數(shù)運行之后,這個變量的作用域還在,但是跟我們的函數(shù)就沒有什么關系了
------------------------------------------------------------
1.這里就是嵌套閉包的特性。內部函數(shù)可以捕獲到外部函數(shù)的變量
2.而此時外部函數(shù)中的參數(shù)因為作用域的原因,它是一個臨時變量,用完了對于外部來說,就消失了
------------------------------------------------------------
在inner內部對outer的臨時變量logo進行修改



initial_account是作用于這個函數(shù)內部的一個臨時變量
防止別人隨隨便便找到全局變量的內存地址直接修改值


p155
裝飾器





裝飾器不單單只能在閉包商用,普通函數(shù)和類也可以使用,不是只局限于閉包的

P156設計模式之單例模式



如圖構建了一次str_ tool之后在引用的時候都是同一個對象

如圖S1,和S2打印出來的地址是不一樣的說明S1和S2并不是同一個對象
而單例模式是要實現(xiàn)不管構建多少個S1 S2或S3 S4都是希望最終得到的是同一個對象


P157
設計模式之工廠模式
低耦合



不管你傳的對象是誰,入口都是統(tǒng)一的


但是如果是通過工廠這樣的統(tǒng)一入口則只需要像下面這個圖里面一樣改


P158
多線程

一個進程理解成單個工作任務, 多線程理解成完成單個任務需要好幾個人

處理器同一時刻只能執(zhí)行一條指令, 但多個處理器可以同時執(zhí)行多個指令
并行是指同一時刻有多條指令在多個處理器上同時執(zhí)行
并發(fā)是指多個線程對應的多條指令被快速輪回的執(zhí)行


P159
多線程編程
我們構建出了多少個thread對象就構建出了多少個線程





因為按照順序來說target排在第二位所以不能不加參數(shù)名

------------------------------------------------------------


如果是元祖那么哪怕只有一個元素也要記得帶,



4
P160
網(wǎng)絡編程之服務端開發(fā)
Socket




構建客戶端:


運行好代碼即運行服務端,卡在了如圖藍線處


所以關鍵是不是127.0.0.1要重新手動輸入一遍?


想要讓對話連續(xù)進行持續(xù)進行下去:

全選之后按Tab鍵,整體右移4個空格,牛逼啊老師?。?!



p161
網(wǎng)絡編程之客戶端開發(fā)



必須要先運行服務端的代碼才能再運行客戶端的代碼


服務端通過ip和端口去區(qū)分不同的客戶端
p162
正則表達式之基礎方法

正則的三個基礎方法:
第一個

0到6,但不包含6,有些函數(shù)又是包括的,注意區(qū)分和記憶-------索引左閉右開
span是區(qū)間,group是內容
第二個

第三個


p163
正則表達式之元字符匹配




案例分析:

正則里面不要隨便的加空格

為了讓第一位不為零則規(guī)定第一個數(shù)字是1-9

這樣還是不夠,因為要么是,要么不是,而不是從中取一部分

因為郵箱格式就是@前面一大堆內容和@后面一大堆內容,而這個內容可能是一個,可能是兩個,可能是多個

運行結果如下:
結果是這樣的原因是findall有一個特殊的地方就是如果有分組的話那么就會按照分組的那個顯示出來
當前代碼有三個括號分了三個組

------------------------------------------------------------

為了得出準確的結果需要把所有的完整的做一個組
因此運行結果如下:

或者用match方法

不符合要求的運行代碼如下:

轉義字符

p164
遞歸
