import,了解一下

”’
import a from a

imp.reload 不中止程序的情况下,一种重新载入模块文件代码的方法

代码重用
系统命名空间的划分
实现共享服务和数据

import

1、找到模块文件
模块搜素路径
程序的主目录、pythonpath目录、标准链接库目录、存在的.pth文件的内容 =》sys.path
2、编译成位码(看情况)
检查文件的时间戳

3、执行模块的代码来创建其定义的对象

只有在第一次导入时才会进行

模块文件
源代码文件 .py
字节码文件 ,pyc
目录,包导入
编译扩展模块
c编写的编译好的内置模块
zip文件组件
内存内映像,frozen可执行文件
jpython Java类

模块的源代码文件再导入时
自动生成模块对象
模块的源代码会在导入时运行
一次一条语句
这个过程中赋值的所有变量名都会生成模块对象的属性

模块的创建
.py结尾的文件都会被自动认为是python模块

当导入时,会把内部模块名映射到外部文件名
通过把模块搜索路径中的目录路径加在前边
.py添加在后边
\modulename.

import 和from都是隐性的赋值语句

import 将整个模块对象赋值给一个变量名

from将一个或多个变量名赋值给另一个模块中同名的对象
并不会对模块名本身进行赋值

实际修改另一个文件中的全局变量名,必须使用import

文件名生成命名空间

模块语句会在首次导入时执行
顶层的赋值语句会创建模块属性
模块的命名空间能通过属性dict 或dir 获取
模块时一个独立的作用域

内部模块命名空间是作为dict对象进行存储的

reload
模块会动态加载
只能用在python编写的模块中
reload是python 的内置函数,而不是语句
传给reload的是已经存在的模块对象,而不是变量名
使用需要先导入

init.py 文件是用于声明和初始化模块包的
第一次在进程中导入某目录时
自动运行这个文件中的代码
赋值的变量会变成对应于该目录在内存中所创建的模块对象的属性
没有这个文件的话
无法通过包语法导入目录

使用import 语句的as扩展功能,把路径改为较短的别名

读取定义在一个路径的相同变量名时
必须通过import来使用包

from xxx import xxx 是绝对导入

from . import xxx 是相对导入

”’

猜你喜欢

转载自blog.csdn.net/java_sparrow/article/details/81635691