Python基础学习笔记(五)

模块的概念:模块是python程序架构的一个核心概念

  • 每个以拓展名py结尾的python源代码文件都是一个模块
  • 模块名同样也是一个标识符,需要符合标识符的命名规则
  • 在模块中定义的全局变量函数都是提供给外界直接使用的工具
  • 模块就好比是工具包,要想使用这个工具包中的工具,就需要先导入这个模块

模块的API:

客户端使用模块提供的函数时,无须了解其实现细节。模块和客户端之间遵循的契约(API)

通过内置函数help(),可以查看Python模块的API。其语法格式为:

import 模块名
help(模块名)

模块的类型:

  • 内置模块,Python提供的内置功能
  • 第三方模块,下载/安装/使用
  • 自定义模块

模块的导入:

1.import导入

import 模块1
import 模块2
import 模块1,2 #不推荐使用,推荐分行导入

如果模块的名字太长,可以使用as指定模块的名称,以方便在代码中的使用

import 模块名1 as 模块别名(符合大驼峰命名法)

  

2.from...import导入

如果希望从某个模块中,导入部分工具,就可以使用from...import,,,方式

import模块名是一次性把模块中所有工具全部导入,并且通过模块名/别名访问

#从模块导入某个工具
from 模块名1 import 工具名

导入以后不通过模块,而通过工具名(全局变量,函数,类)

注意事项:

  • 如果两个模块,存在同名的函数,那么后导入模块的函数,会覆盖掉先导入的函数
  • 同名函数可以通过别名加以区分:from 模块名 import 工具名 as 工具别名
  • 可用from 模块名 import *导入模块中所有工具,但不推荐使用

模块的搜索顺序:

1.搜索当前目录指定模块名的文件,如果有就直接导入

2.如果没有,在搜索系统目录

代码原则:每一个文件都应该是可以被导入的

1.一个独立的python文件就是一个模块

2.在导入文件时,文件中所有没有任何缩进的代码都会被执行一遍

__name__属性:

__name__属性可以做到,测试模块的代码只在测试情况下被运行,而在被导入时不会被执行

__name__是Python的一个内置属性,记录着一个字符串

如果是被其他文件导入__name__就是模块名

如果是当前执行的程序__name__是__main__

#为了使写的python文件都可以当成模块且测试代码不被执行
#则测试代码应该如下:
if __name__ = "__main__":
#测试代码

包:

概念:

  • 是一个包含多个模块特殊目录
  • 目录下有一个特殊的文件__init__.py
  • 包名的命名方式和变量名一样,小写字母 + _

好处:import 包名 可以一次性导入所有的模块

包的创建:

__init__.py

要在外界使用中的模块,需要在__init__.py中指定外界提供的模块列表

例如:

#__init__文件里

from . import 需要被其他文件导入的模块1
from . import 需要被其他文件导入的模块2

  

模块知识持续更新......

最新文章

  1. linux中档案类型
  2. 递归算法(三)——多项分布问题
  3. jquery 格式化日期
  4. [LeetCode] Validate Binary Search Tree (两种解法)
  5. [原] XAF 如何非常容易禁止清除一个下拉字段的值?
  6. 查看博客模板的css代码
  7. 04-Java 异常
  8. 大陆地区OpenStack项目Core现状(截至2016年1月28日,转载自陈沙克日志)
  9. Chromuim开发机配置
  10. BZOJ 1725: [Usaco2006 Nov]Corn Fields牧场的安排
  11. NSArray 数组操作
  12. CCBValue
  13. DDNS client on a Linux machine
  14. angular实现form验证
  15. 关于vue的数据增删的一些细节
  16. H3C S5120清除console口密码
  17. java基础学习之单例设计模式学习
  18. Android笔记(二):savedIndstanceState 和 Bundle
  19. django 自定义中间件 middleware
  20. Python__函数和代码复用

热门文章

  1. Java之数据库表字段有关键字报错java.sql.SQLSyntaxErrorException
  2. Unity 依赖注入容器的AOP扩展
  3. C#/.Net开发入门篇(3)——console类的输入输出
  4. C#使用Linq to csv读取.csv文件数据2_处理含有非列名数据的方法(说明信息等)
  5. C# List 根据对象属性去重的四种方法对比
  6. GO基础之接口
  7. Dynamics 365需要的最小的权限用来更改用户的业务部门和角色
  8. 记录/objc2/object_setClass做了啥
  9. Docker 中卷组管理
  10. java开发实习生面试经历