Python作為一門(mén)新型的編程語(yǔ)言(一般常用作腳本語(yǔ)言)很受歡迎,畢竟相對其他的編程語(yǔ)言(Java ,C#等)來(lái)說(shuō)比較容易入手。那么,在學(xué)習玩入門(mén)Python的時(shí)候,應該從哪方面入手,學(xué)習流程是怎樣的呢?以下是小編為你整理的如何學(xué)好python基礎 ?
基礎知識:學(xué)習每一種新的編程語(yǔ)言都是從最基本的開(kāi)始,對于python而言也是需要先學(xué)習其基礎知識。
python的基礎知識包括:變量和數據類(lèi)型,List和Tuple,條件判斷和循環(huán),Dict和Set, 函數,切片,迭代和列表生成式。 ?
注意:學(xué)習基礎知識切莫著(zhù)急,一定要打好基礎,這樣才會(huì )更好的應用python。 ?
進(jìn)階知識:學(xué)完掌握基礎知識之后,就要學(xué)習進(jìn)階知識了。 ?
python的進(jìn)階知識包括:函數式編程,模塊,面向對象編程基礎,類(lèi)的繼承和定制類(lèi)。 ?
python裝飾器:裝飾器是很重要的一個(gè)知識點(diǎn)。 ?
關(guān)于裝飾器需要涉及到函數作用域.閉包的使用和裝飾器的概念及使用。 ?
如何搭建環(huán)境
學(xué)習爬蟲(chóng)首先學(xué)習Python,建議通過(guò)**mooc和《笨方法學(xué)Python》來(lái)實(shí)現入門(mén),那本書(shū)的內容可以有所取舍。通過(guò)這兩個(gè)途徑再上網(wǎng)上針對性地查找相關(guān)內容完全可以入門(mén),重點(diǎn)在于理解“面向對象”。 ?
爬蟲(chóng)入門(mén)首先要明白一些網(wǎng)絡(luò )技術(shù),了解TCP/IP參考模型,并且對應用層的HTTP協(xié)議的方法和工作原理有一定的認識。爬蟲(chóng)爬取網(wǎng)頁(yè)內容,大多數網(wǎng)頁(yè)服務(wù)由HTTP協(xié)議實(shí)現。 ?
正式學(xué)習爬蟲(chóng)庫urllib和正則表達式,urllib靈活性很高,并且和你所學(xué)的網(wǎng)絡(luò )原理、HTTP原理非常貼合,利于新手學(xué)習,正則表達式看看內容,再看幾個(gè)實(shí)例就應該會(huì )用了,不推薦看亂七八糟的教程和MOOC(效果非常差,講的跨度太大),推薦書(shū)籍《精通Python網(wǎng)絡(luò )爬蟲(chóng) 核心技術(shù)、框架與項目實(shí)戰 》(韋瑋)。同樣是選擇性的閱讀。 ?
學(xué)習完成之后,多加實(shí)踐,推薦實(shí)戰項目:1、爬取漫畫(huà)網(wǎng)上的一部漫畫(huà)的所有圖片,并用PowerPoint做成PDF 2、爬取電影下載網(wǎng)站上的所有電影下載鏈接并整理到Excel。能獨立完成這兩個(gè)實(shí)戰項目,恭喜你已經(jīng)成功入門(mén)! ?
常見(jiàn)的函數應用
交換變量 ?
x = 6
y = 5
x, y = y, x
print x
>>> 5
print y
>>> 6 ?
if 語(yǔ)句在行內
print "Hello" if True else "World"
>>> Hello ?
連接
下面的*一種方式在綁定兩個(gè)不同類(lèi)型的對象時(shí)顯得很cool。 ?
nfc = ["Packers", "49ers"] ?
afc = ["Ravens", "Patriots"] ?
print nfc + afc ?
>>> ['Packers', '49ers', 'Ravens', 'Patriots'] ?
print str(1) + " world"
>>> 1 world
print `1` + " world"
>>> 1 world
print 1, "world"
>>> 1 world
print nfc, 1
>>> ['Packers', '49ers'] 1
數字技巧
#除后向下取整
print 5.0//2
>>> 2
# 2的5次方
print 2**5
>> 32
注意浮點(diǎn)數的除法
print .3/.1
>>> 2.9999999999999996
print .3//.1
>>> 2.0 ?
數值比較 ?
這是我見(jiàn)過(guò)諸多語(yǔ)言中很少有的如此棒的簡(jiǎn)便法 ?
x = 2
if 3 > x > 1:
print x
>>> 2
if 1 < x > 0:
print x
>>> 2
5 ?
同時(shí)迭代兩個(gè)列表 ?
nfc = ["Packers", "49ers"] ?
afc = ["Ravens", "Patriots"]
?
for teama, teamb in zip(nfc, afc): ?
print teama + " vs. " + teamb ?
>>> Packers vs. Ravens ?
>>> 49ers vs. Patriots ?
Import語(yǔ)句 創(chuàng )建了自定義模塊,就是為了用它,import就是用來(lái)導入我們寫(xiě)的模塊的?,F在自定義一個(gè)簡(jiǎn)單的模塊函數myTest.py。然后創(chuàng )建另一個(gè)python文件testImport來(lái)導入myTest.py,測試可行性。如圖:運行testImport得出結果hi:BOb。這就是import語(yǔ)句簡(jiǎn)單應用。
from...import 和from...import*語(yǔ)句:from語(yǔ)句是從模塊中導入其中的一部分到命名空間(下面說(shuō))中,還以剛才的兩個(gè)文件為例,from myTest import sayHi,就是把模塊myTest中的sayHi函數導入到testImport函數中。
命名空間和作用域(即局部變量全局變量):一個(gè)Python表達式可以訪(fǎng)問(wèn)局部命名空間和全局命名空間里的變量。如果一個(gè)局部變量和一個(gè)全局變量重名,則局部變量會(huì )覆蓋全局變量。python會(huì )假設任何函數內賦值的變量都是局部的,因此一個(gè)全局變量要想在局部變量里使用,需要用到global語(yǔ)句了,要么是在函數內再聲明一下這個(gè)局部變量,如圖注釋的兩個(gè)方法: ?
dir()函數:dir函數是一個(gè)已經(jīng)排好序的列表,列表的內容是在模塊里定義過(guò)的名字。列表容納了模塊里定義過(guò)的所有的模塊,函數和變量 ?
globals()和locals()函數:兩個(gè)函數分別用來(lái)返回全局和局部命名空間里的名字(返回類(lèi)型是字典形式,因此可以用key()摘取)。