python的變量與java的不一樣,java的變量是固定類(lèi)型的,而python的變量也是對象引用。以下是小編為你整理的如何快速學(xué)好python ?
首先是理解對象引用,對象引用就是映射關(guān)系 ?
比如,你在超市的儲物柜1號放了個(gè)包裹,那么你得到一張票據,上面寫(xiě)著(zhù)A ?
那么,這個(gè)A就是引用了這個(gè)格子 ?
標識符-等號-對象,比如,A = 123
那么,A是標識符,123是對象 ?
注意:標識符的大小寫(xiě)是區分的,ABC與Abc與abc,是不同的標識符 ?
如果之前接觸過(guò)java,這個(gè)理解起來(lái)會(huì )有點(diǎn)不一樣,python的變量就是對象引用,與java的變量存儲在棧內存是不一樣 ?
比如A=1,B=A,那么結果是A和B都指向1 ?
假如這時(shí)候,A=2,那么A會(huì )指向2,B不會(huì )跟著(zhù)改變,則還是指向1 ?
所以說(shuō),A指向另外一個(gè)引用的時(shí)候,是直接指向另外一個(gè)引用所引用的對象的 ?
換成代碼,則是下面這樣,首先A指向1號,然后B指向A,再把A的指向2號 ?
這樣的情況下,B不會(huì )跟著(zhù)改變 ?
還有重要的一點(diǎn),就是對象不會(huì )隨著(zhù)沒(méi)有被引用而馬上消失,假設A和B都是指向1,然后A和B又指向2,那么1沒(méi)有被引用了,但是還是會(huì )存在的 ?
用代碼演示就是 ?
A=1,打印A的內存地址 ?
A=2,打印A的內存地址 ?
A=1,打印A的內存地址 ?
A=2,打印A的內存地址 ?
如果對象沒(méi)有被清除,那么4次打印內存地址,13次地址數值是相同的,24次也一樣 ?
底部的內存地址,即使對象再次被引用的時(shí)候,還是原來(lái)的地址。 ?
如何搭建環(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)! ?
構造一個(gè)三維數組
import numpy as npa = np.random.rand(3,3,5) ?
np.floor是一個(gè)ufunc函數,它是一個(gè)一元函數——取整函數,可以做用于a里面的每一個(gè)數字,且保持數組結構不變,仍舊是三維的3*3*5的數組: ?
類(lèi)似的一元ufunc函數還有很多,比如所有的初等數學(xué)函數: ?
print(np.sin(b),'n',np.cos(b)) ?
np.add是一個(gè)多元的ufunc函數: ?
b = np.add.reduce(a) ?
這里,reduce的作用,是把add函數作用于數組a的*層每一個(gè)子數組,計算這些元素的和。 ?
具體的作用結果是: ?
c = []for j in range(3): d = [] for i in range(5): #print(a[:,j,i],'t',sum(a[:,j,i])) d.append(sum(a[:,j,i])) c.append(d)print(np.array(c)) ?
b = np.add.reduce(a,axis = 1) ?
這里指定了add作用于a的第二層子數組,具體如下: ?
c = []for j in range(3): d = [] for i in range(5): #print(a[j,:,i],'t',sum(a[j,:,i])) d.append(sum(a[j,:,i])) c.append(d)print(np.array(c)) ?
b = np.add.reduce(a,axis = 2) ?
將add函數作用于a的第三層子數組: ?
print(sum(a[0,0]))
?
給出一個(gè)一維數組: ?
import numpy as npa = np.floor(np.random.rand(6)*10) ?
從左往右累計a里面的元素之和: ?
b = np.add.accumulate(a) ?
具體的類(lèi)似于: ?
c = 0d = []for i in range(6): c = c+a[i] d.append(c) print(np.array(d)) ?
ActivePython
ActivePython 包含了一個(gè)完整的 Python 內核,直接調用 Python 官方的開(kāi)源內核,附加了一些 Python 的 Windows擴展,同時(shí)還提供了全部的訪(fǎng)問(wèn) Windows APIs 的服務(wù),可以免費使用。提供供32位、64位的python安裝包。 ?
這里使用的是python 2.7.10版本,為什么不用python 3.X呢?因為,目前主流Linux web服務(wù)器的核心版本是2.7,方便部署web應用。 ?
如果這里你使用瀏覽器Chrome,會(huì )提示你是否選擇安裝,選擇保留下載安裝包即可。選擇點(diǎn)擊“運行”軟件即可,建議大家選擇默認安裝,方便管理環(huán)境變量。python的拓展庫一般有一致的的默認安裝路徑,選擇默認安裝,減少程序報錯。 ?
點(diǎn)擊windows開(kāi)始菜單。選擇“運行“,輸入”cmd“,啟動(dòng)命令行窗口。在命令行中,輸入”python“,查看是否安裝成功 ?
優(yōu)化python安裝包管理工具。Activepython自帶了pypm安裝包管理工具。所以,這里可以使用pypm來(lái)安裝pip管理工具,順利實(shí)現拓展包的安裝使用。 ?
為什么不直接使用pypm?因為,更新慢、經(jīng)常安裝失敗、下載速度慢……,除非你是付費用戶(hù)。 ?
在新開(kāi)的命令行窗口中輸入”pypm install pip“,即可。