常用模块:hashlib,subprocess,configparser。
一 hashlib模块
那么我们前面学习数据类型的时候,也讲了hash,可变类型不可hash;不可变类型可hash。
我们知道hash是一种算法,接收传入的内容经过运算之后得到一个hash值,我们可以把hash看作一个工厂,送进去原料,出来时包装之后的成品。
hash的特点:
1 只要传入的内容一样,得到的hash值就是一样的,(可以分多次传入,只要传入的值一样,得到的hash值就一样),这个特点可以用来检测文件的完整性。
2不能由hash值返解出内容,这也是我们可以用hash加密的一个原因。
3 只要使用的hash算法不变(hash有多种算法:md5,sha256,sha384等。。。)得到的hash值得个数是一定的,不论文件的内容如何变化。
密码加盐:
hash还有一种升级加密办法:
就是密码加盐,密码加盐的本质就是在我们需要加密的内容基础上再加其他的固定的内容。
二 subprocess模块
我们在cmd终端命令行中有如下操作:
1 tasklist会向屏幕输出我们当前电脑所有的程序运行情况,那么如果我们想要单独拿到某一个程序就需要使用一个管道'''|''' tasklist | findstr pycharm 2 taskkill /?用来查看命令进程 taskkill /PID用来结束进程 taskkill /F/PID用来强制结束进程
我们通过一段代码来说明subprocess的应用:
import subprocess obj=subprocess.Popen('dfghgir',#代表我们所输入的命令,可以对也可以错
shell=True,
stdout=subprocess.PIPE,#对的情况下从这个管出来
stderr=subprocess.PIPE#错的情况下从这个管出来
)
res1=obj.stdout.read()#将内容读取出来赋给res1
print(res1.decode('gbk'))#因为res1位utf-8格式的,所以会出现乱码,需要解码成‘gbk’res2=obj.stderr.read()
print(obj.stderr.read())###b"'dfghgir' \xb2\xbb\xca\xc7\xc4\xda\xb2\xbf\xbb\
print(obj.stderr.read())###b‘’那么我们只得到一个结果,所以第二个没有内容输出。
三 configparser模块
有一文件‘a.txt’
[section1]
k1 = v1
k2:v2
user=egon
age=18
is_admin=true
salary=3.341 [section2]
k1 = v1
k2:v2
user=alex
age=20
is_admit=false
salary=4.454
程序: import configparser config=configparser.ConfigParser()
print(config.read('a.txt')) # 查看标题
res=config.sections() #['section1', 'section2']查看文本中的标签 section
print(res)
res1=config.options('section1')
print(res1)#输出的为section1下的key。那么既然能拿到key我们通过可以也能拿到value
res2=config.items('section1')#输出section1下的所有内容。
print(res2)
res3=config.get('section1','age')#通过get得到section1下的age对应的值。
print(res3)
res0=config.getboolean('section1','is_admin')#得到标题下的is_admin的值,判断是不是bool类型。
print(res0)
res5=config.getfloat('section1','salary')#如果所对应的值不是浮点型则会报错。
print(res5)
res4=config.getint('section1','age')
print(res4)
四 面向对象:
优点是:
解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
缺点:
1. 编程的复杂度远高于面向过程,不了解面向对象而立即上手基于它设计程序,极容易出现过度设计的问题。一些扩展性要求低的场景使用面向对象会徒增编程难度,比如管理linux系统的shell脚本就不适合用面向对象去设计,面向过程反而更加适合。
2. 无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法准确地预测最终结果。于是我们经常看到对战类游戏,新增一个游戏人物,在对战的过程中极容易出现阴霸的技能,一刀砍死3个人,这种情况是无法准确预知的,只有对象之间交互才能准确地知道最终的结果。
应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方
面向对象的程序设计并不是全部。对于一个软件质量来说,面向对象的程序设计只是用来解决扩展性。
类在定义阶段特殊的地方是:在定义类的阶段立刻执行类体内的代码,然后将产生的名字存放于类名称空间中。
类与类别:
类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体
那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),还是先有的人类这个概念,这个问题需要分两种情况去看
在现实世界中:先有对象,再有类
世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,如人类、动物类、植物类等概念
也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在
在程序中:务必保证先定义类,后产生对象
这与函数的使用是类似的,先定义函数,后调用函数,类也是一样的,在程序中需要先定义类,后调用类
不一样的是,调用函数会执行函数体代码返回的是函数体执行的结果,而调用类会产生对象,返回的是对象
常用模块:hashlib,subprocess,configparser。的更多相关文章
- 常用模块(hashlib,configparser,logging)
常用模块(hashlib,configparser,logging) hashlib hashlib 摘要算法的模块md5 sha1 sha256 sha512摘要的过程 不可逆能做的事:文件的一致性 ...
- python常用模块之subprocess
python常用模块之subprocess python2有个模块commands,执行命令的模块,在python3中已经废弃,使用subprocess模块来替代commands. 介绍一下:comm ...
- 20 常用模块 hashlib hmac:加密 xml xlrd xlwt:excel读|写 configparser subprocess
hashlib模块:加密 加密: 1.有解密的加密方式 2.无解密的加密方式:碰撞检查 hashlib -- 1)不同数据加密后的结果一定不一致 -- 2)相同数据的加密结果一定是一致的 import ...
- 常用模块xml,shelve,configparser,hashlib
XML 什么XML:全称 可扩展标记语言 标记指的是代表某种含义的字符 XML<> 为什么需要XML 为能够在不同的平台间继续数据的交换 为了使交换的数据能让对方看懂 就需要按照一定的语法 ...
- 模块 - hashlib/subprocess
hashlib 模块 加密算法: hash (152位)散列 哈希 不可逆得 密码背后就是 hash 程序退出hash 值就变了 ,hash值得结果有可能重复 MD5 (128位) 讯息摘要演算法 基 ...
- 7-3三个模块 hashlib ,logging,configparser和序列化
一 hashlib 主要用于字符串加密 1 import hashlib md5obj=hashlib.md5() # 实例化一个md5摘要算法的对象 md5obj.update('alex3714' ...
- pyhthon常用模块hashlib
python hashlib模块 一,hashlib模块主要用于加密,其中提供sha1,sha224,sha256,sha384,sha512,md5算法.常用的使用md5即可完成需求. 一,使用md ...
- Python全栈之路----常用模块----hashlib加密模块
加密算法介绍 HASH Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列 ...
- python常用模块——hashlib模块
Python的hashlib提供了常见的摘要算法,如md5.sha1等 什么是摘要算法了?摘要算法又称哈希算法.散列算法. 它通过一个函数,把任意长度的数据转化魏一个长度固定的数据串(通常用十六进制的 ...
- 常用模块 - hashlib模块
一.简介 Python的hashlib提供了常见的摘要算法,如MD5.SHA1.SHA224.SHA256.SHA384.SHA512等算法. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过 ...
随机推荐
- 在树莓派上运行 .net core 2.1 程序 并实现开机启动
本篇文章完整的说明如和在树莓派上运行 .net core2.1程序,当然也参考了其他的博客,此处结合我自己的经验,再写一篇完整的博客,方便大家,还有我自己进行查阅. https://blog.csdn ...
- Potplayer快捷键
potplayer 滞后快捷键: x potplayer 滞后快捷键: c Crtl+C:截图到剪切板 Crtl+E:截图到安装目录Capture
- 更适合程序员使用的Vim配置 显示行号 语法高亮 智能缩进
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的.为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc.在启动vim时,当前用户根 ...
- BZOJ3052: [wc2013]糖果公园【树上带修莫队】
Description Input Output Sample Input Sample Input Sample Output 84 131 27 84 HINT 思路 非常模板的树上带修莫队 真的 ...
- HDU 1232:畅通工程(并查集模板)
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 浏览器中的data类型的Url格式,data:image/png,data:image/jpeg!(源自:http://blog.csdn.net/roadmore/article/details/38498719)
所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些“小”的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Tag,哪怕这个图片非常非常 ...
- python 取整
1.向下取整 向下取整直接用内建的 int() 函数即可: >>> a = 3.75 >>> int(a) 3 2.四舍五入 对数字进行四舍五入用 round() ...
- ballerina 学习二十八 快速grpc 服务开发
ballerina 的grpc 开发模型,对于开发者来说简单了好多,不是schema first 的方式,而是我们 只要编写简单的ballerina service 就可以了,proto 文件是自动帮 ...
- windows下,java环境变量的设置,设置点击startup.bat启动tomcat
1.首先.安装好java jdk以后环境变量设置: CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar JAVA_HOME:C:\ ...
- java 多线程之:join() 方法
join()介绍 join() 定义在java.lang.Thread中. join() 的作用:让"主线程"等待"子线程"结束之后才能继续运行.