1.导入方式
3.全导入
from 文件名 import * #*表示所有
PS:针对于*号的导入还可与控制名字的数量
在模块文件中可以使用__all__ = [字符串的名字]控制*能够获取的名字
循环导入问题
循环导入是两个文件彼此导入彼此
解决方法:彼此在导入名字之前 先准备好
(循环导入将来应尽量避免出现)
判断文件类型(判断是执行文件还是被导入文件)
所有的py文件都只带一个__name__内置名
当py文件是执行文件的时候__name__的结果是__main__
当py文件是导入的文件时__name__的结果是模块名(文件名)
__name__主要用于开发代码的作者测试代码用
if __name__ == "__main__": 需要执行的子代码 #当文件是执行文件时才会执行if的子代码
上述判断一般只出现在整个程序的启动文件中
模块的查找顺序
1、先去内存中查找
2、再去内置中查找
3、再去sys.path中查找(程序系统环境变量)就是和你执行文件相同的路径(必须是同级别)下查找
解决方案:1.如果非要使用不在sys.path中的文件你可以将文件路径追加到sys.path中
sys.path.append(文件所在路径)
2.利用from .....ipmort.......句式 (起始位置一定是执行文件所在的路径)
PS:创建模块文件的时候尽量不要和内置模块名冲突
导入模块的的时候一定要知道谁是执行文件所有文件都是参照执行文件来的
绝对导入与相对导入
只要涉及模块的导入 那么sys.path永远以执文件为准
绝对导入:
其实就是以执行文件所在的sys,path 为起始路径 往下一层查找
from xxx import xxx
from aaa.bbb.ccc.... import B
如果不是用pycharm运行 需要将项目的根目录添加到sys.path(但针对项目根目录的绝对路径偶遇模块可以帮助我们获取>>>:os模块)
相对导入:
. 表示当前路径
.. 表示上一路径
../.. 表示上上一层路径
相对导入可以不参考执行文件所在路径 直接以当前模块文件路径为准
1.只能在模块文件中使用 不能在执行文件中使用(.号不能出现在执行文件中)
2.相对导入在项目比较复杂时比较容易出错
包的概念
1.如何理解包
专业角度:内部含有__init__.py的文件夹
直观角度:就是一个文件夹
2.包的作用
内部存放多个py文件(模块文件)
3.具体使用
import 包名
导入包名其实是导入里面的__init__.py文件(该文件里面有什么你才能用是什么)
其实也可以跨过__init__.py直接导入里面的模块文件
针对python3解释器文件夹里面是否有__init__不影响
编程思想的转变
1、小白阶段
按照需要从上到下堆叠代码 单文件
2.函数阶段
将代码按照不同的功能封装成不同的函数 单文件
3.模块阶段
个根据功能的不同拆分不同的模块文件 多文件
软件开发目录规范
1.bin文件夹
用于存储文件的启动文件 start.py
2.sonf文件夹
用于存储程序的配置文件 settings.py
3.sore文件夹
用于存储文件的核心逻辑 src.py
4.lib文件夹
用于存储程序的公共功能 common.py
5.db文件夹
用于存储程序的数据文件 userinfo.txt
6.log文件
用于存储程序的日志文件 log.log
7.interface文件夹
用于存储程序的接口文件 user.py order.py goods.py
8.readme文件(文本文件)
用于存储程序所需要的第三方模块名称和版本
常见内置模块
1.collections模块
1.1具名元组(含有名字的元组)
2.有序字典
时间模块
时间的三种格式
1.时间戳 time.time()
2.结构化时间
3.格式化时间
三种时间之间的转换
标签:__,文件,python,py,导入,模块,文件夹 From: https://www.cnblogs.com/lgb114/p/16620122.html