Python入门(后传—天池龙珠计划):(四)

Python入门(八):文件处理

Python入门(十):计算生态

Python入门(十二):常用标准库——time

Python入门(十三):常用标准库——random

Python入门(十四):常用标准库——os

新增内容

由于之前文章结构的原因,想新增的内容在原有博客上难以下笔,因此索性单独列出来,也方便查看学习

模块和命名空间

  • 模块(Module):一个完整的Python文件即是一个模块,它通常指逻辑上的组织方式。Python中常用import 模块的方式将现成模块中的函数、类等重用到其他代码块中。
    • 数据封装 -> 容器
    • 语句封装 -> 函数
    • 方法和属性封装 -> 类
    • 程序文件封装 -> 模块
  • 命名空间(Namespaces):从名称到对象的映射,大部分的命名空间都是通过 Python 字典实现的
    • 内置命名空间(Built-in Namespaces):Python 运行起来,它们就存在了。内置函数的命名空间属于内置命名空间,所以我们可以在程序中直接运行它们,如函数id()
    • 全局命名空间(Module:Global Namespaces):每个模块创建它自己所拥有的的全局命名空间,不同模块的全局命名空间彼此独立。即使名称相同,也会因所在模块的不同而互不干扰
    • 本地命名空间(Function & Class:Local Namespaces):模块中有函数或者类,每个函数或者类所定义的命名空间就是本地命名空间。如果函数返回了结果或者抛出异常,则本地命名空间也结束了
    • 程序在查询上述三种命名空间的时候,就按照从里到外的顺序,即Local Namespaces–>Global Namespaces–>Built-in Namespaces
      在这里插入图片描述
      【例】创建一个名为hello的模块并调用
      在这里插入图片描述
      在这里插入图片描述

if name == ‘main

  • 对于很多编程语言来说,程序都必须有一个入口
  • 而 Python 则不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态地逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口
  • __name__是内置变量,可用于表示当前模块的名字;
  • __main__是当一个.py文件被直接运行时,其__name__的值,即模块名为__main__
  • 所以,if __name__ == '__main__'的意思是:当.py文件被直接执行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行

【例】现在有两个文件:const.pyarea.py,每个文件都有个执行函数main(),如下所示
在这里插入图片描述
如果area.py的执行语句为main()的话,它就会同时调用const.py文件的main()语句,结果如下所示:
在这里插入图片描述
如果area.py的执行语句为if __name__ == '__main__'的话,那么它就只调用当前文件下的main()语句
在这里插入图片描述
在这里插入图片描述

搜索路径

  • 当解释器遇到import语句,如果模块在当前的搜索路径就会被导入
  • 搜索路径是由一系列目录名组成的,Python解释器依次从这些目录中去寻找所引入的模块
  • 搜索路径是在 Python 编译或安装的时候确定的,搜索路径被存储在sys模块中的path变量中
    在这里插入图片描述

简洁的 with 语句

  • 一些对象定义了标准的清理行为,无论系统是否成功的使用了它,一旦不需要它了,那么这个标准的清理行为就会执行
  • 关键词 with 语句可以保证诸如文件之类的对象在使用完之后一定会正确的执行它的清理方法

【例】

try:
	with open('April.txt','w') as f:
		for line in f:
			print(line)
except OSError as error:
	print('出错啦!%s'%str(error))

序列化与反序列化

  • Python 的 pickle 模块基本实现了基本的数据序列和反序列化
    • 通过 pickle 模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储
    • 通过 pickle 模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象
  • pickle 模块中最常用的函数为:
    • pickle.dump(obj,file,[,protocol]
      • obj:想要序列化的obj对象
      • file:文件名称
      • protocol:序列化使用的协议,若省略则默认为0
    • pickle.load(file):将file中的对象序列化读出
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值