我的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#忽觉世间多恍然,奈何终了无归处。
[就这样两个世界接触着,去学编程吧!]