2020-10-30 09:40发布
一、模块介绍
1. 定义:
模块:本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)
用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能)
2. 语法:
• import 语句
当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。
导入模块:
1、 import module1[, module2[,... moduleN]
调用符号:
• From…import 语句
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
1、from modname import name1[, name2[, ... nameN]]
From…import* 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
1、from modname import *
这提供了一个简单的方法来导入一个模块中的所有项目。慎用 from…import *。
• import 和 from 的区别:
import导入使用时,加前缀 module.func。相当于把模块代码放在当前文件中执行一遍。
from可以指定需要的函数或变量导入。
导入模块和当前py文件都有同一个函数,调用会调用哪一个?
因为python是解释型,所以后面覆盖前面。
• from … import … as …
3. import本质
import 本质:
导入一个模块本质就是解释执行一个python文件
导入一个包本质就是解释该包下的__init__.py文件
• __init__.py
包:本质就是一个目录(必须带有一个__init__.py文件),用来从逻辑上组织模块
导入包,怎么导入?
导入包的本质:执行包下面的__init__.py文件
导入包下的模块
包下面的模块,这样调用是错误的
在__init__.py内容中导入模块
4、路径搜索和搜索路径
上面提到的都是导入同级目录下的模块,如果不在同一个目录下:
import module_name实际找module_name.py文件,是文件就一定要有路径。
导入模块就是:找到.py文件的位置,把它执行一遍,从哪里找呢?sys.path.
5. 导入优化
6. 阻止属性导入
如果你不想让某个模块属性被 “from module import *” 导入 , 那么你可以给你不想导入的属性名称加上一个下划线( _ )。 不过如果你导入了整个模块或是你显式地导入某个属性这个隐藏数据的方法就不起作用了。
二、模块的分类
a:标准库
b:开源模块-第三方模块
c:自定义模块
三、常用内置模块
1、os模块
用于提供系统级别的操作
2、time和datetime
在Python中,通常有这几种方式来表示时间:
时间戳
格式化的时间字符串
元组(struct_time)共九个元素。
由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。
时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time)”,返回的是float类型。返回时间戳方式的函数主要有time,clock等。
元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime,localtime,strptime。
时间转为时间戳
格式化时间字符串
转化时间戳和元组到时间字符串
时间加减
3、random模块
4、sys模块
5、shutil模块
高级的 文件、文件夹、拷贝、压缩包等 处理模块
6、ConfigParser
用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。
来看一个好多软件的常见文档格式如下
如果想用python生成一个这样的文档怎么做呢?
• 生成
• 读取出来
• configparser增删改查语法
7、hashlib模块
用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法,hash 加密都是bytes类型
python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
8、Subprocess模块
调用subprocess.run(…)是推荐的常用方法,在大多数情况下能满足需求,但如果你可能需要进行一些复杂的与系统的交互的话,你还可以用subprocess.Popen,语法如下:
可用参数:
args:shell命令,可以是字符串或者序列类型(如:list,元组)
bufsize:指定缓冲。0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲
stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。 所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。
shell:同上
cwd:用于设置子进程的当前目录
env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。
universal_newlines:不同系统的换行符不同,True -> 同意使用
startupinfo与createionflags只在windows下有效 将被传递给底层的CreateProcess函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
终端输入的命令分为两种:
• 输入即可得到输出,如:ifconfig
• 输入进行某环境,依赖再输入,如:python
需要交互的命令示例
9、re-正则表达式模块
常用正则表达式符号
最常用的匹配语法
分组匹配 和 group、groups、groupdict
10、logging模块
python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug, info, warning, error and critical 5个级别,下面我们看一下怎么用。
最简单用法
看一下这几个日志级别分别代表什么意思
如果想把日志写到文件里,也很简单
其中下面这句中的level=loggin.INFO意思是,把日志纪录级别设置为INFO,也就是说,只有比日志是INFO或比INFO级别更高的日志才会被纪录到文件里,在这个例子, 第一条日志是不会被纪录的,如果希望纪录debug的日志,那把日志级别改成DEBUG就行了。
如果想同时把log打印在屏幕和文件日志里,就需要了解一点复杂的知识 了
11、json和pickle数据序列化
str eval
数据序列化
json只能处理简单的,所有语言通用的,函数不能json序列化
pickle可以序列化python所有的数据类型
12、shelve 模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
13、xml处理模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,json之前的交换方式
参考文档:
14、PyYAML模块
Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块
作者:温柔的倾诉链接:https://www.jianshu.com/p/6e3893f5ea44来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
python第三方模块众多,下面我介绍一些比较实用而又有趣的模块,主要分为爬虫、数据处理、可视化、机器学习、神经网络、股票财经、游戏这7个方面,主要内容如下:
1.爬虫:相信大部分人都用python爬过数据,目前来说,比较流行的框架是scrapy,对爬取数据来说,简单方便了不少,只需要自己添加少量的代码,框架便可启动开始爬取,当然,还有简单地爬虫包,像requests+BeautifulSoup,对于爬取简单网页来说,也足够了:
2.数据处理:numpy,scipy,pandas这些包对于处理数据来说非常方便,线性代数、科学计算等,利用numpy处理起来非常方便,pandas提供的DataFrame类可以方便的处理各种类型的文件,像excel,csv等,是分析数据的利器:
3.可视化:这里的包其实也挺多的,除了我们常用的matplotlib外,还有seaborn,pyecharts等,可以绘制出各种各样类型的图形,除了常见的线图、饼图和柱状图外,还可以绘制出地图、词云图、地理坐标系图等,美观大方,所需的代码量还少,更容易上手:
4.机器学习:说起python机器学习,大部分人都应该scikit-learn这个包,常见的机器学习算法,像回归、分类、聚类、降维、模型选择等,这里都有现成的代码可供利用,对于这机器学习方面感兴趣的人来说,这是一个入门机器学习的好包:
5.神经网络:说起神经网络,大部分人都应该会想起深度学习,对应的就会想到谷歌目前非常流行的深度学习框架—tensorflow,tesndorflow可被用于语音识别和图像识别等众多领域,其发展前景光明,对于这方面感兴趣的科研人员来说,是一个很不错的工具,当然,还有基于tensorflow的theano,keras等,都是学习神经网络的不错选择:
6.股票财经:对于股票和财经比较感兴趣的朋友来说,python也提供了现成的库来获取和分析股票财经数据—tushare,tushare是一个免费、开源的python财经数据接口包,可以快速的获取到国内大部分股票数据,对于金融分析人员来说,可以说是一个利器,降低了许多任务量:
7.游戏:python专门为游戏开发提供了一个平台—pygame,对于想快速开发小型游戏的用户来说,是一个很不错的选择,简单易学、容易上手,脱离了低级语言的束缚,使用起来也挺方便的:
基础语法、面向对象这些,然后常用的组件、框架这些都要会~
更多Python视频、源码、资料加群683380553免费获取
import 语句
From…import 语句
import 和 from 的区别:
import导入使用时,加前缀 module.func()。相当于把模块代码放在当前文件中执行一遍。
from … import … as …
__init__.py
# 以上可见:sys.path 是一个列表
# 里面的 '' 指的当前路径,这是为何查找模块先从当前目录查找的原因
os.path.abspath(__file__) # 当前文件绝对路
os.path.dirname(os.path.abspath(__file__)) #获取目录名
sys.path.append() :追加到最后
# 所以:可以如下,动态添加路径到第一
sys.path.insert
时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。
元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
调用subprocess.run(…)是推荐的常用方法,在大多数情况下能满足需求,但如果你可能需要进行一些复杂的与系统的交互的话,你还可以用subprocess.Popen(),语法如下:
startupinfo与createionflags只在windows下有效 将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
分组匹配 和 group()、groups()、groupdict()
python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别,下面我们看一下怎么用。
python第三方模块众多,主要分为爬虫、数据处理、可视化、机器学习、神经网络、股票财经、游戏这7个方面
1、基础,所有的语言都一样,必须把基本的语法练习熟练,从数据类型,到函数面向对象
2、多写小功能,比如计时器,啥的
3、找网站刷算法题
4、多练习项目,web的,爬虫的,数据分析的,从简单开始。
re的matche方法和search方法
re的split,findall,finditer方法
re.split(pattern, string[, maxsplit])
按照能够匹配的子串将string分割后返回列表。maxsplit用于指定***分割次数,不指定将全部分割。
re.findall(pattern, string[, flags])
搜索string,以列表形式返回全部能匹配的子串
re.finditer(pattern, string[, flags])
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器
namedtuple
namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
deque
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
defaultdict
使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict:
partial函数
partial函数可以重新绑定函数的可选参数,生成一个callable的partial对象:
update_wrapper函数
update_wrapper函数可以把被封装函数的__name__、__module__、__doc__和 __dict__都复制到封装函数去:
wraps函数
wraps函数将update_wrapper也封装了进来
可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。
人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...
代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http': 'http://61.155.164.110:3128'}http://www.goub......
要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False #进入循环标志while not Is_exit:User_name = input(please ...
MacOS设置环境变量path的完全总结 一、MacOS加载bash shell 环境变量的加载顺序 mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile ...
当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...
在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...
import sqlite3p = sqlite3.connect(file:memDB1?mode=memory&cache=shared, uri=True)p.execute('CREATE TABLE tbTest (fld1, fld2)')p.execute(INSERT INTO tbTest VALUES ('fld1', 'fld2'...
Python可以说是这几门著名语言里最易理解的了,这就是Python的优点之一,相比较其他语言,PHP,Java,C C++ C#这些语言,
学测试吧,简单容易些
第一语言现在还是java比较好找工作,第二语言学Python或者是go语言都可以了解一下
PythonPython是一种面向对象的解释型计算机程序设计语言,具有丰富强大的库,常被称为胶水语言,能够把其他语言制作的各种模块轻松链接在一起。因此Python具有:简单易学、数据分析能力强的特点。很多科学家都会自学Python,进行科研数据分析,由此可见Python...
1、简单;2、易学;3、免费开源;4、自动内存管理;5、可以移植;6、解释性;7、面向对象;8、可扩展;9、丰富的第三方库
人工智能是未来发展的一种趋势,也是当下非常流行的行业,是一门包含十分广泛的科学,由不同的领域组合而成,比如说机器学习、计算机视觉等等,研究人工智能涉及的方方面面是非常复杂的,那么为什么说做人工智能使用python比较好呢?1、Python遵循简单、优雅...
Python 是脚本语言,也就是中间件语言,其内核仍然百是纯 c 的性能表达的,而主要性能消耗在脚本的实时编译上。度而对比c,同样的功能,python可以表达比c更加精炼,当然牺牲了一些性能。如果确实对某知个模组性能不满意,还可以使用 c 编写 Python 模块为其...
最多设置5个标签!
一、模块介绍
1. 定义:
模块:本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)
用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能)
2. 语法:
• import 语句
当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。
导入模块:
1、 import module1[, module2[,... moduleN]
调用符号:
• From…import 语句
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
1、from modname import name1[, name2[, ... nameN]]
From…import* 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
1、from modname import *
这提供了一个简单的方法来导入一个模块中的所有项目。慎用 from…import *。
• import 和 from 的区别:
import导入使用时,加前缀 module.func。相当于把模块代码放在当前文件中执行一遍。
from可以指定需要的函数或变量导入。
导入模块和当前py文件都有同一个函数,调用会调用哪一个?
因为python是解释型,所以后面覆盖前面。
• from … import … as …
3. import本质
import 本质:
导入一个模块本质就是解释执行一个python文件
导入一个包本质就是解释该包下的__init__.py文件
• __init__.py
包:本质就是一个目录(必须带有一个__init__.py文件),用来从逻辑上组织模块
导入包,怎么导入?
导入包的本质:执行包下面的__init__.py文件
导入包下的模块
包下面的模块,这样调用是错误的
在__init__.py内容中导入模块
4、路径搜索和搜索路径
上面提到的都是导入同级目录下的模块,如果不在同一个目录下:
import module_name实际找module_name.py文件,是文件就一定要有路径。
导入模块就是:找到.py文件的位置,把它执行一遍,从哪里找呢?sys.path.
5. 导入优化
6. 阻止属性导入
如果你不想让某个模块属性被 “from module import *” 导入 , 那么你可以给你不想导入的属性名称加上一个下划线( _ )。 不过如果你导入了整个模块或是你显式地导入某个属性这个隐藏数据的方法就不起作用了。
二、模块的分类
a:标准库
b:开源模块-第三方模块
c:自定义模块
三、常用内置模块
1、os模块
用于提供系统级别的操作
2、time和datetime
在Python中,通常有这几种方式来表示时间:
时间戳
格式化的时间字符串
元组(struct_time)共九个元素。
由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。
时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time)”,返回的是float类型。返回时间戳方式的函数主要有time,clock等。
元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime,localtime,strptime。
时间转为时间戳
格式化时间字符串
转化时间戳和元组到时间字符串
时间加减
3、random模块
4、sys模块
5、shutil模块
高级的 文件、文件夹、拷贝、压缩包等 处理模块
6、ConfigParser
用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。
来看一个好多软件的常见文档格式如下
如果想用python生成一个这样的文档怎么做呢?
• 生成
• 读取出来
• configparser增删改查语法
7、hashlib模块
用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法,hash 加密都是bytes类型
python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
8、Subprocess模块
调用subprocess.run(…)是推荐的常用方法,在大多数情况下能满足需求,但如果你可能需要进行一些复杂的与系统的交互的话,你还可以用subprocess.Popen,语法如下:
可用参数:
args:shell命令,可以是字符串或者序列类型(如:list,元组)
bufsize:指定缓冲。0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲
stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。 所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。
shell:同上
cwd:用于设置子进程的当前目录
env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。
universal_newlines:不同系统的换行符不同,True -> 同意使用
startupinfo与createionflags只在windows下有效 将被传递给底层的CreateProcess函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
终端输入的命令分为两种:
• 输入即可得到输出,如:ifconfig
• 输入进行某环境,依赖再输入,如:python
需要交互的命令示例
9、re-正则表达式模块
常用正则表达式符号
最常用的匹配语法
分组匹配 和 group、groups、groupdict
10、logging模块
python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug, info, warning, error and critical 5个级别,下面我们看一下怎么用。
最简单用法
看一下这几个日志级别分别代表什么意思
如果想把日志写到文件里,也很简单
其中下面这句中的level=loggin.INFO意思是,把日志纪录级别设置为INFO,也就是说,只有比日志是INFO或比INFO级别更高的日志才会被纪录到文件里,在这个例子, 第一条日志是不会被纪录的,如果希望纪录debug的日志,那把日志级别改成DEBUG就行了。
如果想同时把log打印在屏幕和文件日志里,就需要了解一点复杂的知识 了
11、json和pickle数据序列化
str eval
数据序列化
json只能处理简单的,所有语言通用的,函数不能json序列化
pickle可以序列化python所有的数据类型
12、shelve 模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
13、xml处理模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,json之前的交换方式
参考文档:
14、PyYAML模块
Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块
作者:温柔的倾诉
链接:https://www.jianshu.com/p/6e3893f5ea44
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
python第三方模块众多,下面我介绍一些比较实用而又有趣的模块,主要分为爬虫、数据处理、可视化、机器学习、神经网络、股票财经、游戏这7个方面,主要内容如下:
1.爬虫:相信大部分人都用python爬过数据,目前来说,比较流行的框架是scrapy,对爬取数据来说,简单方便了不少,只需要自己添加少量的代码,框架便可启动开始爬取,当然,还有简单地爬虫包,像requests+BeautifulSoup,对于爬取简单网页来说,也足够了:
2.数据处理:numpy,scipy,pandas这些包对于处理数据来说非常方便,线性代数、科学计算等,利用numpy处理起来非常方便,pandas提供的DataFrame类可以方便的处理各种类型的文件,像excel,csv等,是分析数据的利器:
3.可视化:这里的包其实也挺多的,除了我们常用的matplotlib外,还有seaborn,pyecharts等,可以绘制出各种各样类型的图形,除了常见的线图、饼图和柱状图外,还可以绘制出地图、词云图、地理坐标系图等,美观大方,所需的代码量还少,更容易上手:
4.机器学习:说起python机器学习,大部分人都应该scikit-learn这个包,常见的机器学习算法,像回归、分类、聚类、降维、模型选择等,这里都有现成的代码可供利用,对于这机器学习方面感兴趣的人来说,这是一个入门机器学习的好包:
5.神经网络:说起神经网络,大部分人都应该会想起深度学习,对应的就会想到谷歌目前非常流行的深度学习框架—tensorflow,tesndorflow可被用于语音识别和图像识别等众多领域,其发展前景光明,对于这方面感兴趣的科研人员来说,是一个很不错的工具,当然,还有基于tensorflow的theano,keras等,都是学习神经网络的不错选择:
6.股票财经:对于股票和财经比较感兴趣的朋友来说,python也提供了现成的库来获取和分析股票财经数据—tushare,tushare是一个免费、开源的python财经数据接口包,可以快速的获取到国内大部分股票数据,对于金融分析人员来说,可以说是一个利器,降低了许多任务量:
7.游戏:python专门为游戏开发提供了一个平台—pygame,对于想快速开发小型游戏的用户来说,是一个很不错的选择,简单易学、容易上手,脱离了低级语言的束缚,使用起来也挺方便的:
基础语法、面向对象这些,然后常用的组件、框架这些都要会~
1.爬虫:相信大部分人都用python爬过数据,目前来说,比较流行的框架是scrapy,对爬取数据来说,简单方便了不少,只需要自己添加少量的代码,框架便可启动开始爬取,当然,还有简单地爬虫包,像requests+BeautifulSoup,对于爬取简单网页来说,也足够了:
2.数据处理:numpy,scipy,pandas这些包对于处理数据来说非常方便,线性代数、科学计算等,利用numpy处理起来非常方便,pandas提供的DataFrame类可以方便的处理各种类型的文件,像excel,csv等,是分析数据的利器:
3.可视化:这里的包其实也挺多的,除了我们常用的matplotlib外,还有seaborn,pyecharts等,可以绘制出各种各样类型的图形,除了常见的线图、饼图和柱状图外,还可以绘制出地图、词云图、地理坐标系图等,美观大方,所需的代码量还少,更容易上手:
4.机器学习:说起python机器学习,大部分人都应该scikit-learn这个包,常见的机器学习算法,像回归、分类、聚类、降维、模型选择等,这里都有现成的代码可供利用,对于这机器学习方面感兴趣的人来说,这是一个入门机器学习的好包:
5.神经网络:说起神经网络,大部分人都应该会想起深度学习,对应的就会想到谷歌目前非常流行的深度学习框架—tensorflow,tesndorflow可被用于语音识别和图像识别等众多领域,其发展前景光明,对于这方面感兴趣的科研人员来说,是一个很不错的工具,当然,还有基于tensorflow的theano,keras等,都是学习神经网络的不错选择:
6.股票财经:对于股票和财经比较感兴趣的朋友来说,python也提供了现成的库来获取和分析股票财经数据—tushare,tushare是一个免费、开源的python财经数据接口包,可以快速的获取到国内大部分股票数据,对于金融分析人员来说,可以说是一个利器,降低了许多任务量:
7.游戏:python专门为游戏开发提供了一个平台—pygame,对于想快速开发小型游戏的用户来说,是一个很不错的选择,简单易学、容易上手,脱离了低级语言的束缚,使用起来也挺方便的:
一、模块介绍
1. 定义:
模块:本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)
用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能)
更多Python视频、源码、资料加群683380553免费获取
2. 语法:
import 语句
当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。
导入模块:
调用符号:
From…import 语句
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
From…import* 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
这提供了一个简单的方法来导入一个模块中的所有项目。慎用 from…import *。
import 和 from 的区别:
import导入使用时,加前缀 module.func()。相当于把模块代码放在当前文件中执行一遍。
from可以指定需要的函数或变量导入。
导入模块和当前py文件都有同一个函数,调用会调用哪一个?
因为python是解释型,所以后面覆盖前面。
from … import … as …
3. import本质
import 本质:
导入一个模块本质就是解释执行一个python文件
导入一个包本质就是解释该包下的__init__.py文件
__init__.py
包:本质就是一个目录(必须带有一个__init__.py文件),用来从逻辑上组织模块
导入包,怎么导入?
导入包的本质:执行包下面的__init__.py文件
导入包下的模块
包下面的模块,这样调用是错误的
在__init__.py内容中导入模块
4、路径搜索和搜索路径
上面提到的都是导入同级目录下的模块,如果不在同一个目录下:
import module_name实际找module_name.py文件,是文件就一定要有路径。
导入模块就是:找到.py文件的位置,把它执行一遍,从哪里找呢?sys.path.
# 以上可见:sys.path 是一个列表
# 里面的 '' 指的当前路径,这是为何查找模块先从当前目录查找的原因
os.path.abspath(__file__) # 当前文件绝对路
os.path.dirname(os.path.abspath(__file__)) #获取目录名
sys.path.append() :追加到最后
# 所以:可以如下,动态添加路径到第一
sys.path.insert
5. 导入优化
6. 阻止属性导入
如果你不想让某个模块属性被 “from module import *” 导入 , 那么你可以给你不想导入的属性名称加上一个下划线( _ )。 不过如果你导入了整个模块或是你显式地导入某个属性这个隐藏数据的方法就不起作用了。
二、模块的分类
a:标准库
b:开源模块-第三方模块
c:自定义模块
三、常用内置模块
1、os模块
用于提供系统级别的操作
2、time和datetime
在Python中,通常有这几种方式来表示时间:
时间戳
格式化的时间字符串
元组(struct_time)共九个元素。
由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。
时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。
元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
时间转为时间戳
格式化时间字符串
转化时间戳和元组到时间字符串
时间加减
3、random模块
4、sys模块
5、shutil模块
高级的 文件、文件夹、拷贝、压缩包等 处理模块
6、ConfigParser
用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。
来看一个好多软件的常见文档格式如下
如果想用python生成一个这样的文档怎么做呢?
• 生成
• 读取出来
• configparser增删改查语法
7、hashlib模块
用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法,hash 加密都是bytes类型
python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
8、Subprocess模块
调用subprocess.run(…)是推荐的常用方法,在大多数情况下能满足需求,但如果你可能需要进行一些复杂的与系统的交互的话,你还可以用subprocess.Popen(),语法如下:
可用参数:
args:shell命令,可以是字符串或者序列类型(如:list,元组)
bufsize:指定缓冲。0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲
stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。 所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。
shell:同上
cwd:用于设置子进程的当前目录
env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。
universal_newlines:不同系统的换行符不同,True -> 同意使用
startupinfo与createionflags只在windows下有效 将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
终端输入的命令分为两种:
• 输入即可得到输出,如:ifconfig
• 输入进行某环境,依赖再输入,如:python
需要交互的命令示例
9、re-正则表达式模块
常用正则表达式符号
最常用的匹配语法
分组匹配 和 group()、groups()、groupdict()
10、logging模块
python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别,下面我们看一下怎么用。
最简单用法
看一下这几个日志级别分别代表什么意思
如果想把日志写到文件里,也很简单
其中下面这句中的level=loggin.INFO意思是,把日志纪录级别设置为INFO,也就是说,只有比日志是INFO或比INFO级别更高的日志才会被纪录到文件里,在这个例子, 第一条日志是不会被纪录的,如果希望纪录debug的日志,那把日志级别改成DEBUG就行了。
如果想同时把log打印在屏幕和文件日志里,就需要了解一点复杂的知识 了
11、json和pickle数据序列化
str eval
数据序列化
json只能处理简单的,所有语言通用的,函数不能json序列化
pickle可以序列化python所有的数据类型
12、shelve 模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
13、xml处理模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,json之前的交换方式
14、PyYAML模块
Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块
python第三方模块众多,主要分为爬虫、数据处理、可视化、机器学习、神经网络、股票财经、游戏这7个方面
1、基础,所有的语言都一样,必须把基本的语法练习熟练,从数据类型,到函数面向对象
2、多写小功能,比如计时器,啥的
3、找网站刷算法题
4、多练习项目,web的,爬虫的,数据分析的,从简单开始。
re
re的matche方法和search方法
re的split,findall,finditer方法
re.split(pattern, string[, maxsplit])
按照能够匹配的子串将string分割后返回列表。maxsplit用于指定***分割次数,不指定将全部分割。
re.findall(pattern, string[, flags])
搜索string,以列表形式返回全部能匹配的子串
re.finditer(pattern, string[, flags])
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器
collections
namedtuple
namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
deque
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
defaultdict
使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict:
functools
partial函数
partial函数可以重新绑定函数的可选参数,生成一个callable的partial对象:
update_wrapper函数
update_wrapper函数可以把被封装函数的__name__、__module__、__doc__和 __dict__都复制到封装函数去:
wraps函数
wraps函数将update_wrapper也封装了进来
相关问题推荐
可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。
人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...
代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http': 'http://61.155.164.110:3128'}http://www.goub......
要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False #进入循环标志while not Is_exit:User_name = input(please ...
MacOS设置环境变量path的完全总结 一、MacOS加载bash shell 环境变量的加载顺序 mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile ...
当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...
在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...
import sqlite3p = sqlite3.connect(file:memDB1?mode=memory&cache=shared, uri=True)p.execute('CREATE TABLE tbTest (fld1, fld2)')p.execute(INSERT INTO tbTest VALUES ('fld1', 'fld2'...
Python可以说是这几门著名语言里最易理解的了,这就是Python的优点之一,相比较其他语言,PHP,Java,C C++ C#这些语言,
学测试吧,简单容易些
第一语言现在还是java比较好找工作,第二语言学Python或者是go语言都可以了解一下
PythonPython是一种面向对象的解释型计算机程序设计语言,具有丰富强大的库,常被称为胶水语言,能够把其他语言制作的各种模块轻松链接在一起。因此Python具有:简单易学、数据分析能力强的特点。很多科学家都会自学Python,进行科研数据分析,由此可见Python...
1、简单;2、易学;3、免费开源;4、自动内存管理;5、可以移植;6、解释性;7、面向对象;8、可扩展;9、丰富的第三方库
人工智能是未来发展的一种趋势,也是当下非常流行的行业,是一门包含十分广泛的科学,由不同的领域组合而成,比如说机器学习、计算机视觉等等,研究人工智能涉及的方方面面是非常复杂的,那么为什么说做人工智能使用python比较好呢?1、Python遵循简单、优雅...
Python 是脚本语言,也就是中间件语言,其内核仍然百是纯 c 的性能表达的,而主要性能消耗在脚本的实时编译上。度而对比c,同样的功能,python可以表达比c更加精炼,当然牺牲了一些性能。如果确实对某知个模组性能不满意,还可以使用 c 编写 Python 模块为其...