python成長記(一)

2021-07-26 10:14:14 字數 4207 閱讀 6000

蝸牛之前是學過一點python的,不過只是學過而已看,時間長不用基本多忘了。

為了做畢設,要學習flask框架,覺得最好還是把python再過一遍。

可能覺得蝸牛東一頭西一頭的,看的東西太多。可是蝸牛有什麼辦法,我也很絕望啊!

還是靜下心來看書吧,蝸牛會住上別墅的,蝸牛會開上豪車的……

——————我是華麗的分割線————-——————————

1.乙個.py檔案就是乙個python模組(多數情況下)。有的時候,乙個檔案中包含多個模組。

2.匯入模組的兩種方式:

第一種:

>>>import myfile

>>>print myfile.title

上面是把檔案整個的匯入了

第二種:

>>>from myfile import title

>>>print title

from的本質其實是拷貝。

3.python有很多內建的物件。而且大多數情況下,內建物件都比自己寫的物件好用。像int這種東西在python中是物件。

4.自己設計物件的時候,通常建立在列表和字典之上。因為python是指令碼語言,你別指望他和c++比肩。

python中的內建物件

python是一種弱型別語言,可能學過c++的童鞋總是會不自覺地強加型別的概念。

比如:

haha=123

總有刁民覺得haha是個int型別的變數。

python:你開心就好,我無所謂。

python的內建物件:

number(數字) 123,3.14,,999l

string(字串)

list(列表)

dictionary(字典)

tuple(元組)

file(檔案)

第乙個要學習的內建物件就是

數字

這個其實沒啥講的,講了也都是概念性的問題,具體用的時候再說。

python針對數字物件還提供了一系列的內建函式和模組,如:

內建模組的使用栗子

>>>import math #注意這句話,使用math這樣的內建模組一定要匯入。

#但是使用abs()這樣的內建函式就不用匯入了,因為在名字空間中。

>>>math.pi

3.141925653

>>>abs(-42)

python的表示式操作和預處理

string 字串

python字串支援分片啊啥的,有很靈活的用法。

其實string表示的是被稱為序列的物件的較大的類。

字串支援分片slice,索引index,合併等等。regex和re模組為字串新增了正規表示式的匹配。

這個操作:

>>>name*3

>上面的**是將name輸出了三次。

>>>len(name)

>輸出長度

>>>"abc"+"cde"

>合併字串

>為什麼我總覺得迭代和遍歷是一樣的?

>>>myjob="hacker"

>>>for c in myjob:

>>> print c

>這不就是個遍歷麼,還說的遞迴那麼誇張。

字串的定義是有序的字元集合,所以可以通過位置訪問他們的內容。其實這一點和c++差不多,c++有人理解為師char的陣列,其實一樣。

最大的一點不同是python支援負索引,就是負索引是從-1來的。

s=」name」

s[-1]

結果是e

這個解釋比較好:負索引其實是預設加了乙個長度

s[-2]其實和s[len(s)-2]

就是預設加了乙個長度,省略了而已。

關於string的用法蝸牛之前寫過文章,就不說了。

注意string是不可變序列,要想改變string就去重新生成乙個新的string。

格式化輸出:

>>>name="hahah"

>>>"my name is %s"

%name

這樣那麼就嵌入進去了。%s是字串佔位符的意思

格式化輸出還有很多用法

>>>"%s--%s--%s"

%("haha","hehe","lala")

>>>"%s--%s--%s"

%(43,123.54,[1,2,3])

上面這個就有趣多了,暗地裡其實做了型別轉換。

上面這個43放到%s的位置的時候會轉化為string的型別,只是感覺不到罷了,你的感覺是只是把這個東西輸出了,沒毛病。

string內建提供了一堆函式,比如轉化為大寫什麼的,有空看看。

列表列表其實就是收集其他物件的地方。也就是乙個陣列,如果你還是脫不開c++的陰影的話。

注意列表是有順序的

列表的特點:

-列表是有序的,那就能通過索引去訪問了,那就能分片了。

-列表式可變長度,異構,任意巢狀。列表的長度是可變的,增加減元素都可以,而且是異構的,則代表列表中的元素可以使不一樣的。

-列表裡面的元素也是可變的,也就是說支援索引賦值。

>>>name="hello"

>>>name[2]="a"

>會有錯

>但是這樣

>name=["haha","jehe"]

>name[1]="hiehie"

>就是可以的。

之前說過string是乙個大類「序列」,其實列表list也是乙個序列。

只不過string這種序列是不變的,而list這種序列是可變的

另外注意的一點,如果不是你自己多事兒,一般你用的都是物件的引用。

你把乙個物件放到陣列中,python儲存的都是乙個物件的引用。都是直譯器遮蔽掉了細節。

列表的常見方法:

如果把列表看作是乙個序列,那列表和string很多同樣的屬性就看出來了,那其實就很好理解了。

只是這裡的粒度應該就是列表裡面的元素了。

這裡再提醒一次,列表是可變的物件,可以原位修改,但是字串是不可變物件元組也是。

剛才說列表是python內建的最有彈性的資料型別,這裡又說了,字典是出了list之外的最有彈性的資料型別。

如果你把列表認為是有序的集合,那列表就是無序的物件集合。

其實兩者本來也不一樣,字典是key-value鍵值對,一對一對的是無序的。訪問的時候都是通過key,不是偏移量。

字典可以在原位增長或是縮短,應該也可以原位修改,只是是通過key去找的。

字典是唯一內建的對映型別,將鍵對映到值。

字典裡面的元素是無序的,直譯器通過特殊的方法來尋找裡面的鍵,進而找到value,你就知道這很快就行了,怎麼找鍵的真的不用關心,裡面的學問老大了。

常見的字典操作:

d1={}空的字典

d2= 對,裡面的key值就是要有雙引號的。

d3=["spen"]通過鍵訪問

d2.has_key("egg")判斷時候有egg這個鍵值?

d2.keys()返回的是d2中的所有的鍵值的列表

d2.values()返回的是d2中的所有的值的列表

len(d2)返回d2裡面有幾個key-value鍵值對

d2["egg"]="haha"原位修改

del d2[key]刪除元素。

不過這裡面的key值加不加引號我就得去具體的看看了

我看了,是加的。

d2["egg"]="balalala"

裡面的key值也是要加雙引號的。

於是就出現了下面這種用法:

d2=language="haha"

print d2[language]

輸出的應該是"123"

但是print d2["language"]是錯的。

字典是可以改變的,字典可以改變,擴充套件,縮小而無需生成乙個新的字典。

字典為什麼不能進行有序的訪問什麼的?

是因為字典本身就 不是個序列啊!他只是個對映而已。

而且鍵也不一定非得是字串,因為數字也可以是鍵。

Python成長記十五(python爬蟲)

1 什麼是網路爬蟲 2 爬蟲的步驟 1 明確目的。明確我們想要的資料,通過調研驗證需求的可行性 2 找到資料對應的網頁 3 分析網頁的結構找到資料的標籤位置 4 模擬http請求,向伺服器傳送這個請求,獲取到伺服器返回的html 5 用正規表示式提取我們要的資料 3 爬蟲的必要技能 1 斷點除錯。比...

程式設計小白成長記(一)

2015年12月27日 其實我寫這些部落格主要算是一種督促,算是一種日記吧。我認為把日常程式設計的內容寫下來會更有利於自己的學習,更何況程式猿們通常因為長時間程式設計,表達能力會下降不少。而我並不希望自己變成乙個羞於開口的人。於是,我決意開始寫這個半日記半自我總結的部落格。同時,我也強迫自己使用了以...

成長思考記

大三下開學來的時間是非常充裕的,考研 保研 出國,主意已定,所有的東西彷彿瞬間改變了意義。於是,我又有了時間去讀書,去思考,去成長。和同學談 忍經 沒有共鳴。他們剛聽到這書名字就堅決反對,為什麼要忍!要的就是個性!呵,無語,三字以蔽之 年輕人!許多人不讀此書,可能讓人粗略想到的是 忍氣吞聲 之類的意...