python-模块系列
2015-12-08 11:00
375 查看
模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
如:os 是系统相关的模块;file是文件操作相关的模块
模块分为三种:
自定义模块
第三方模块
内置模块
登录小练习
pickle,用户python特有的类型和python的数据类型间进行转换。
json,用于字符串和python的数据类型间进行转换。
pickle模块中的两个主要函数是dump()和load()。dump()函数接受一个文件句柄和一个数据对象作为参数,把数据对象以特定的格式保存到给定的文件中。当我们使用load()函数从文件中取出已保存的对象时,pickle知道如何恢复这些对象到它们本来的格式。
dumps()函数执行和dump() 函数相同的序列化。取代接受流对象并将序列化后的数据保存到磁盘文件,这个函数简单的返回序列化的数据。
loads()函数执行和load() 函数一样的反序列化。取代接受一个流对象并去文件读取序列化后的数据,它接受包含序列化后的数据的str对象, 直接返回的对象。
dumps和dump区别展示:
loads和load是dumps和dump的反操作因此都一样。
json的用法和pickle一样,提供了四个功能:dumps、dump、loads、load。
实例:
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
如:os 是系统相关的模块;file是文件操作相关的模块
模块分为三种:
自定义模块
第三方模块
内置模块
自定义模块
自定义模块很好理解了,就是自己写的模块,它可以是一个.py的文件,也可以是一个文件夹(如果是文件夹必须有__int__的目录才是模块,否则就是一个普通目录)1.定义模块
#!/usr/bin/env python #-*- coding:utf-8 -*- __author__ = 'wyf' import hashlib def md5(passwd): hash = hashlib.md5('admin') hash.update(passwd) return hash.hexdigest() def registered (user,passwd):#注册用户函数 with open('db.conf','a') as f: temp = user +'|'+ md5(passwd) f.write(temp+'\n') def login(user,passwd): with open('db.conf','r') as f1: for i in f1: u,p = i.strip().split('|') if u == user and p == md5(passwd): return True def main(): print u'1、登录;2、注册;3.退出' chooseNum = raw_input('请输入选择的操作》》》:') if chooseNum == '1': user = raw_input('请输入用户名》》》:') passwd = raw_input('请输入密码》》》:') if login(user,passwd): print '登录成功' else: print '登录失败' elif chooseNum =='2': user = raw_input('请输入用户名》》》:') passwd = raw_input('请输入密码》》》:') registered(user,passwd) if __name__ == '__main__': main()
登录小练习
4.json和pickle
用于序列化的两个模块pickle,用户python特有的类型和python的数据类型间进行转换。
json,用于字符串和python的数据类型间进行转换。
pickle模块:
pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言识别。要和其他语言交互,可以使用内置的json包,使用pickle模块你可以把python对象直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里。 pickle模块会创建一个python语言专用的二进制格式,你基本上不用考虑任何文件细节,它会帮你干净利落地完成读写独享操作,唯一需要的只是一个合法的文件句柄。pickle模块中的两个主要函数是dump()和load()。dump()函数接受一个文件句柄和一个数据对象作为参数,把数据对象以特定的格式保存到给定的文件中。当我们使用load()函数从文件中取出已保存的对象时,pickle知道如何恢复这些对象到它们本来的格式。
dumps()函数执行和dump() 函数相同的序列化。取代接受流对象并将序列化后的数据保存到磁盘文件,这个函数简单的返回序列化的数据。
loads()函数执行和load() 函数一样的反序列化。取代接受一个流对象并去文件读取序列化后的数据,它接受包含序列化后的数据的str对象, 直接返回的对象。
dumps和dump区别展示:
#!/usr/bin/env python #-*- coding:utf-8 -*- import pickle s = '{"desc":"ininia","status":200,"aaa":[11,22,33,44,55,66]}' f = open('abc.txt','r+') a = pickle.dump(s,f) #dump除了传存储对象还有 打开的文件句柄 f.close() f1 = open('abc1.txt','r+') a1 = pickle.dumps(s) # dumps 直接传存储对象 f.write(a1) f.close()
loads和load是dumps和dump的反操作因此都一样。
json模块:
似乎pickle已经和吊了,能满足几乎所有的序列化和反序列话,但是不要忘记前面提到的pickle只是python特有的操作,只能python才能操作,如果这样的话是不是太局限了?这时候json就有存在的意义了,它可以跨语言进行数据交换,基本上大多数语言都支持json,如果是两个跨语言的数据交换,json是最好的选择,你只要说哥们json吧。但是有一点必须注意,json是很多语言都支持,这也导致了一些局限性,有些python支持的数据类型,json不支持,因此json序列化一般为字典和列表。json的用法和pickle一样,提供了四个功能:dumps、dump、loads、load。
实例:
s = '{"desc":"ininia","status":200,"aaa":[11,22,33,44,55,66]}' s1 = {"desc":"ininia","status":200,"aaa":[11,22,33,44,55,66]} import json result = json.loads(s)#将字符串转换成对象 print result,type(result) #{u'status': 200, u'aaa': [11, 22, 33, 44, 55, 66], u'desc': u'ininia'} <type 'dict'> result1 = json.dumps(s1)#将对象转换成字符串 print result1,type(result1) #{"status": 200, "aaa": [11, 22, 33, 44, 55, 66], "desc": "ininia"} <type 'str'>
相关文章推荐
- python基础之列表、字典、元祖等 (二)
- 转 Python集合(set)类型的操作
- 使用 Python 添加手机聚合平台教程
- python map(),zip(),filter()函数解析
- 关于python中中文显示问题
- 从后台看python--为什么说python是慢的
- python模块
- python基础教程共60课-第11课逻辑判断
- Learning Python(3)--正则表达式
- 学好 Python 的 11 个优秀资源【转载】
- python学习日记_第一天
- Python基础 —— sys 模块
- debug ipython notebook with breakpoint
- Python基础——timeit模块
- leetcode Binary Tree Right Side View python
- python培训Day7 随笔
- python 批量下载图片
- Python使用pygame模块编写俄罗斯方块游戏的代码实例
- 一波神奇的Python语句、函数与方法的使用技巧总结
- 使用Python编写简单的画图板程序的示例教程