我的Python
1.第一次使用Python
最開始是怎麼知道Python的呢?
:是因爲某空間的某廣告,還有補考內容
那第一次是爲什麼使用Python呢?
:因爲某神祕網站有大量的資源,想要下載,聽說Python可以
那感覺Python怎麼樣呢?
:最開始使用Python的時候,感覺它能夠下載東西很神奇
Python難不難?
:應該不難,學會了其他的編程語言,看Python的東西還是很簡單的
2.Python的學習網站
- CheckiO is a code game coders
- Python Code Examples
- GitHub
- 菜鳥教程(Python3)
- CSDN
- Vamei
- 廖雪峯
- 實驗樓
- 吾愛破解
- Python部落
- python中文學習大本營
以上前兩個網站需要使用外網,其他的都是國內可以用的,這些網站我學習的時候只是在使用CSDN以及菜鳥教程。
其中菜鳥教程中的是Python2與Python3的,學習的時候需要看Python3的部分,但是其中會有一些語法還沒有更新到Python3,這個時候需要自己去查一查。
3.Python的個人理解
Python是一門動態解釋型的強類型定義語言
名詞解釋
編譯型&解釋型
編譯型:使用專門的編譯器,針對特定的平臺,將高級語言源代碼一次性的編譯成可被該平臺硬件執行的機器碼,幷包裝成該平臺所能識別的可執行性程序的格式。
在編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把源代碼編譯成機器語言的文件,如exe格式的文件,以後要再運行時,直接使用編譯結果即可,如直接運行exe文件。因爲只需編譯一次,以後運行時不需要編譯,所以編譯型語言執行效率高。
C/C++、Pascal/Object Pascal等
.
解釋型:使用專門的解釋器對源程序逐行解釋成特定平臺的機器碼並立即執行。
解釋型語言不需要事先編譯,其直接將源代碼解釋成機器碼並立即執行,所以只要某一平臺提供了相應的解釋器即可運行該程序。
Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB等靜態語言&動態語言
靜態語言:靜態語言是在編譯時變量的數據類型即可確定的語言,多數靜態類型語言要求在使用變量之前必須聲明數據類型。
C、C++、Java、Delphi、C#等
.
動態語言:動態語言是在運行時確定數據類型的語言。變量使用之前不需要類型聲明,通常變量的類型是被賦值的那個值的類型。
PHP、ASP、Ruby、Python、Perl、ABAP、SQL、JavaScript、Unix Shell等強類型定義語言&弱類型定義語言
強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,如果不經過強制轉換,那麼它就永遠是這個數據類型了。
.
弱類型定義語言:數據類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同數據類型的值。
參考網站:
Python是一門什麼樣的語言
靜態語言和動態語言的區別
4.Python的環境配置
1.下載Python
Python官網下載
[推薦直接去官網下載,不僅僅是Python,其他各種軟件,比如Maya,3dsMax,Unity3d,VS等等,一定要先去官網看看這些軟件有沒有免費的個人版本。功能多固然好,但是破解版本的那些個功能,可能工作或者學習過程中根本不可能用到,而且破解版本不能夠更新,破解步驟又十分的繁瑣,所以推薦去下載個人免費版。(づ。◕‿‿◕。)づ]
2.環境配置
1.我的電腦[此電腦]–>屬性–>高級系統設置–>環境變量–>Path–>雙擊編輯
2.Win+R打開運行窗口,輸入cmd打開控制檯,然後輸入Python
2.1 打開之後如下所示:
2.2一般Python的路徑,說的就是某一個文件夾內有Python.exe,然後將這個文件夾的路徑直接複製下來,添加到路徑之中就可以了。
2.3測試是否成功 [Win+R打開運行窗口,輸入cmd打開控制檯,然後輸入Python]
只要是安裝過程不出什麼意外,最後都是可以輸出東西的。[看着都正確 ]
5.Python的編寫工具
IDE: Integrated Development Environment(繼承開發環境),也就是平常說的編程工具。
從官網上下載的那個是Python的解析器以及一個簡單IDE。[話說我是裝了Miniconda,爲了使用numpy而專門下載的,卸載了原來安裝的Python]
1.Sublime Text3
2.Microsoft Visual Studio
3.PyCham
1.Sublime Text3
這是目前我使用的,而且用的特別的習慣,因爲高亮顯示感覺很棒。而且,Sublime Text3可以寫好多東西,可以寫html的也可以寫PHP的,甚至是C和C++都是可以寫的,但是卻因爲要配置好多東西,所以不常用。
Sublime Text3編輯網頁的時候很方便,寫Python的話,除了input()函數使用的時候會比較難受[這個是可以調整的,度娘去搜索就好 ],其他都挺好.
一般比較複雜的需要調試的部分,我會拿到VS裏面去調試,但還是傾向於使用Sublime Text3。
Sublime Text3很小,只有十幾兆。
Sublime Text3寫Python時的調整
[上面的不夠看就去找一些其他教程,總有一個可以看懂。]
2.Microsoft Visual Studio
VS的功能也很強大,除了Java不容易寫,其他的語言都可以在這個上面寫,尤其是C++/C#,寫起來超級爽,寫Python也是因爲難以捨棄對VS的喜愛。
VS的寫Python的界面在下面,但是寫Java的時候需要有一個環境的配置,找到Environment相關的字眼點擊一下,添加就可以了。或者去度娘找一找。
3.PyCham
並沒有使用過不知道好不好,但應該很不錯,畢竟是好多人的首推。如果以後要專業使用Python的話,大概需要使用這款IDE。安裝教程也可以去度娘找。
6.第一次寫的Python
第一次寫Python,是爲了下載某神祕網站的代碼,千萬不要拿過來使用,可能會出錯(
你可能會喜歡上它)。
代碼比較亂,而且那個時候還不是很懂這些代碼是什麼意思,只知道什麼語句有什麼意思,然後一直修改一直修改,使用多線程下載了很多東西,真正墮落而且黑暗的人生就此開始,新的大門已然打開,這也算作是學習的動力之一。
如今這一段代碼是什麼意思我已經不是很清楚,但是作爲第一次使用Python的體驗,確實需要完完整整的保存下來。
多線程提高下載速度,多線程的概念掌握的不是很牢固,但是這個概念很重要,要達到徒手寫多線程的熟練程度纔可以。
#!/usr/bin/python3
import threading
import time
import urllib.request
import re
import os
exitFlag = 0
class myThread (threading.Thread):
def __init__(self, threadID, threadName,filenum,fondnum,addintion,flodernum):
threading.Thread.__init__(self)
self.threadID = threadID
self.threadName=threadName
self.filenum=filenum
self.fondnum=fondnum
self.addition=addintion
self.flodernum=flodernum
def run(self):
print ("開始線程:" + self.name)
downpic(self.fondnum,self.addition,self.filenum,self.flodernum)
print ("退出線程:" + self.name)
#線程有多個,但是出口只有一個,最開始產生的時候,是最擁擠的時候,每一個線程都會爭用速度,隨着線程順序的逐漸優化,速度也會變得越來越慢
#因此這裏需要,每個線程之下載一個文件,然後在這一批線程作爲一個循環的因子,一直改變
#在對方服務器看來,我並不是瘋狂在刷他的數據。因此每一次循環都會有第一次循環的速度。
def downpic(fondnum,addition,filenum,flodernum):
for x in range(fondnum,fondnum+addition):
picpath='https://5kkkee.com/cdn/xx/file/'+str(x)+'/'
locolpath='D://0001//TEST'+'-'+str(flodernum)+'//'+str(x)+'.gif'
try:
urllib.request.urlopen(picpath,timeout=7)#判斷
urllib.request.urlopen(picpath,timeout=8)#判斷
urllib.request.urlopen(picpath,timeout=9)#判斷
urllib.request.urlretrieve(picpath,locolpath)#添加多次鏈接的函數
except Exception as e:
thestr="pic"+str(x)+"出現異常"
print(thestr)
fileHandle=open("D://0001//TEST"+"-"+str(flodernum)+'//'+str(filenum)+'.txt',"a")
fileHandle.write(thestr+"\n")
fileHandle.close()
continue
thestr="pic"+str(x)+"it is okay"
print(thestr)
#初始化必要變量
#addition*threadnum*circlenum=1000
#addition=1 threadnum=50 circlenum=50
prefix='thread'
#fondnum=178000
#filesaddition=1000 #文件每次增長的數量
#fondnum=613000 #下載的第幾個文件
#addition=10 #增量:每次小線程下載的個數
#threadnum=100 #線程數
#circlenum=1 #批量線程循環次數
#threadlist=[] #線程鏈表
#filelist=[] #文件鏈表
filesaddition=1000 #文件每次增長的數量
fondnum=5075000 #下載的第幾個文件
addition=1 #增量:每次小線程下載的個數
threadnum=50 #線程數
circlenum=20 #批量線程循環次數
threadlist=[] #線程鏈表
filelist=[] #文件鏈表
#初始化鏈表
for processid in range(5075,5100):
for circle in range(1,circlenum+1):
for tx in range(1,threadnum+1):
str1=prefix+str(tx)
str2=prefix+"-"+str(tx)
threadlist.append(str)
filelist.append(str2)
#動態創建線程
for tx in range(1,threadnum+1):
threadlist[tx-1]=myThread(tx,filelist[tx-1],tx,fondnum+addition*(tx-1)+circlenum*(circle-1) ,addition,processid)
# 開啓新線程
for tx in range(1,threadnum+1):
threadlist[tx-1].start()
for tx in range(1,threadnum+1):
threadlist[tx-1].join()
#打印結束的循環
print ("退出主線程"+str(processid))
print ("退出主線程"+str(processid))
print ("退出主線程"+str(processid))
print ("退出主線程"+str(processid)+"\a")
fondnum+=(addition*threadnum)
#import urllib.request
#import re
#import os
#for x in range(842442,842444):
# picpath='https://5kkkee.com/cdn/xx/file/'+str(x)+'/'
# locolpath='C://Users//31386//Desktop//1//'+str(x)+'.jpg'
# try:
# urllib.request.urlopen(picpath,timeout=6)
# except Exception as e:
# thestr="pic"+str(x)+"出現異常"
# print(thestr)
# fileHandle=open("C://Users//31386//Desktop//log.txt","a")
# fileHandle.write(thestr+"\n")
# fileHandle.close()
# continue
# urllib.request.urlretrieve(picpath,locolpath)
# thestr="pic"+str(x)+"it is okay"
# print(thestr)
#import re
#import urllib.request
#url='https://5kkkee.com/cdn/xx/file/489720/'
#data=urllib.request.urlopen(url).read().decode()#讀取並解碼,默認應該是utf-8?
#rule=r'src="(.+?\.jpg)" pic_ext'
#compiled_rule=re.compile(rule)
#list1=re.findall(compiled_rule,data)
#x=1
#path='D://0001//ffee'#構建本地保存路徑
#for element in list1:
# print(x)
# pathnew=path+'//'+str(x)+'.jpg'
# urllib.request.urlretrieve(element,pathnew)
# x=x+1
7.今日份的感言
#1#無可傾訴的黯然,是亡者之花。
#2#心如死灰的枯寂,連風都沙啞。
#3#一樹繁花碎滿枝。
#4#燈開在花下。
#5#千帆無信萬水憂,秋生江畔兩岸愁。
#6#音難訴,絃斷矣。
#7#忽覺世間多恍然,奈何終了無歸處。
[就這樣兩個世界接觸着,去學編程吧!]