AI智能
改变未来

day013|python之模块02&目录01


1 from…import

1.1 概念

1.1.1 首次导入模块会发生的事

  • 会触发模块的运行,产生一个模块的名称空间
  • 将运行模块文件过程中产生的名字丢到模块额名称空间
  • 在当前名称空间产生一个名字money,该名字指向名称空间中那个money

1.2 应用

1.2.1 模块spam

# spam.pyprint("from the spam.py")money = 1000def change():global moneymoney = 0print(money)def func1():print("----->%s" % money)def func2():print(\'=====>\')func1()

1.2.2 导入模块

from spam import moneyprint(money)  # 1000money = 20000print(money)  # 20000from spam import money as mprint(m)  # 1000from spam import money,func1,changeprint(money)  # 1000func1()  # ----->1000change()  # 0from spam import money,func1,changemoney = 200000def func1():print(money)func1()  # 200000

1.3 优缺点

1.3.1 优点

  • 无需加前缀,代码更为简洁

1.3.2 缺点

  • 容易与当前名称空间中的名字冲突

1.4 *

from spam import *print(money)print(func1)print(func2)print(change)

2 循环导入问题

2.1 情景一

2.1.1 m1

print(\'running m1\')from m2 import yx = \'m1\'

2.1.2 m2

print(\'running m2\')from m1 import xy = \'m2\'

2.1.3 run

import m1m1()

会报错,因为循环导入时没有取到值

2.2 补救措施1

2.2.1 m1

print(\'running m1\')def f1():from m2 import yprint(y)x = \'m1\'

2.2.2 m2

print(\'running m2\')def f2():from m1 import xprint(x)y = \'m2\'

2.2.3 run

import m1m1.f1()

2.3 补救措施2

2.3.1 m1

print(\'running m1\')x = \'m1\'from m2 import y

2.3.2 m2

print(\'running m2\')y = \'m2\'from m1 import x

2.3.3 run

import m1m1()

3 区分文件与模块的方式

def f1():print(\'from f1\')def f2():print(\'from f2\')if __name__ == \'__main__\':f1()f2()
import m1

4 模块搜索优先级

查找位置优先级1、内存2、内置模块3、sys.pathimport sysprint(sys.path)import timeimport m1time.sleep(10)import m1# 然后迅速将m1文件删除m1.f1()  # 本次m1会执行,因为内存中有缓存。下一次就会报错import syssys.path.append(r\'H:\\PycharmProjects\\python_new\\day013\\代码\\01from import\')import spamspam.func1()

5 ATM

5.1 目录

api–>存放接口文件,接口用于为主要业务逻辑提供数据操作

​ api.py–>应用程序编程接口

bin–>整个项目的启动文件放置在这个文件夹中

​ start.py–>启动软件入口

conf–>整个项目的配置文件放置在这个文件夹

​ settings.py–>配置文件,如存放一些固定的路径

core–>整个项目的核心文件

​ src.py–>核心业务逻辑代码(第一层:用户视图层:核心业务逻辑代码)

db–>用于存放数据文件与操作数据的代码文件

​ db_file–>db.txt …

​ db_handler.py–>操作数据的代码(第三层:数据处理层)

interface–>用于存放用户接口

​ user_interface.py–>第二层(用户接口)

lib–>项目的第三方包,共享的一些库

​ common–>存放公共的功能,如存放装饰器

log–>用于存放项目的日志文件

​ log.txt–>存放日志的文件

README.txt–>整个项目的说明文件,项目需求和大致流程,相当于产品说明书

5.2 README.txt内容

软件定位|软件的基本功能

  • 运行代码的方法:安装环境、启动命令等…
  • 简要的使用说明
  • 代码目录结构说明,更详细点的说明软件的基本原理
  • 常见问题说明
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » day013|python之模块02&目录01