9 Python 基础 模块的 介绍 用法 序列化

本节内容;

  1. 模块的概念   

  2. import 做什么的       包 

  3. from  xxx    import  xxxx     做什么的

  4. if   __name__ == '__main__'   做什么的  

  5. 序列号 介绍   两个方法

 

1  模块 (modue)的概念:

     在计算程序的开发过程的开发过程中,随着程序代码,越写越多 ,在一个文件里代码就会越来越长,越来越不容易维护,为了编写可维护的代码,我们把很多函数分组,分别放在不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式,在Python中,

                  一个py文件就称为一个模块  

 使用模块有什么好处:

                            最大的好处是大大提高了代码的可维护性  

                   其次,编写代码不必从零开始,当一个模块编写完毕,就可以被其他地方引用,我们编写程序的时候,也经常引用其他模块,包括Python内置的模块和第三方模块    所以模块一共三种

 

2, import     调用模块

 

一个py文件就可以作为一个模块

模块的导入:直接导入文件的名字,不需要带着后缀

模块中的函数调用:模块名.函数名()

导入模块的时候做了三件事:1.首先开辟了一个新的命名空间my_moudle

             2.执行了my_moudle内的代码

             3.将my_moudle里面的名字和命名空间绑定在一起了

注意:模块在一个程序中只会被导入一次,不会重复导入(为了节约资源)那么,如何实现模块在程序中只会被导入一次呢?

当导入一个文件之后,会将模块存储在内存中,当再次导入的时候,就会到内存中查看是否导入过这个模块,如果已经导入过了,就不用再导入了。

 

 

3 from  xxx    import  xxxx    

     当你import  一个模块时   import 会把整个模块里的 函数方法加载到 内存的   

  当你调用 from  指定文件   import  文件里的指定一个函数方法           import 就会加载那一个函数方法  其他你要调用 没有

如果你想调用一个文件里的多个函数方法  后面用逗号隔开     就 可以调用了

  4   if   __name__ == '__main__'   

     if   __name__ == '__main__'     因为你在调用模块时 用import  而 import  有执行里面函数功能,就会导致  一个函数方法执行了两遍   而你在你的  功能函数里面加上  if   __name__ == '__main__'   只能在当前脚本文件启动才会执行 if __name__=='__main__'下面函数  ,要是别的文件里启动 这个函数功能   这个函数 if   __name__ == '__main__'  下面函数就不会被执行 

 

 

5 序列化

  我们把对象(变量)从内容中变成可储存或传输的过程 称之为序列化  

  

  比方说 我们想把一个字典  存在一个文件里  需要把 字典转换成字符串才行  而读取时候 还得在eval 方法 

  而用序列的 json   里的两个方法  就可以了   json在其他语言里也是通用的           json 函数   和类 不行 得用 plckle 模块

  

 在Python中叫 pickling,在其他语言也被称之为serialization   marshalling  flattening 等等 都是一个意思

 序列化之后 就可以把序列化后的内容写入磁盘 或者通过网络传输到别的机器上

 反过来 把变量内容从序列化的对象重新读到内存里称之为反序列化 即 unpickling 

 

如果我们在不通的编程语言之间传递对象,就必须把对象序列化为标准格式,比如xml 但更好的方法就是序列化为json因为json表示出来就是一个字符串,可以被所有语言读取,也可以方便储存到磁盘或者通过网络传输

json不仅是标准格式,并且必xml更快而且可以直接在web页面中读取 非常方便

列子 

 

    

#序列化    存
import json

d = {'name':'wangkuan','age':'18'}
data = json.dumps(d)
with open('logging','w') as f:
    f.write(data)

  

#序列化    取
import json
with open('logging','r') as f:
    data = f.read()
    abc = json.loads(data)

print(abc['name'])

  json   的 dump()    load()   把上面的简化

#序列化    存
import json

d = {'name':'wangkuan','age':'18'}

with open('logging22','w') as f:
    json.dump(d,f)

  

# #序列化    取
import json
with open('logging22','r') as f:
    abc = json.load(f)

print(abc['name'])

  

 

posted @ 2018-08-20 19:13  取经之路  阅读(116)  评论(0)    收藏  举报