1 from...import

1.1 概念

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

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

1.2 应用

1.2.1 模块spam

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

1.2.2 导入模块

from spam import money
print(money) # 1000
money = 20000
print(money) # 20000 from spam import money as m
print(m) # 1000 from spam import money,func1,change
print(money) # 1000
func1() # ----->1000
change() # 0 from spam import money,func1,change
money = 200000
def 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 y

x = 'm1'

2.1.2 m2

print('running m2')

from m1 import x

y = 'm2'

2.1.3 run

import m1

m1()

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

2.2 补救措施1

2.2.1 m1

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

2.2.2 m2

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

2.2.3 run

import m1
m1.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 m1
m1()

3 区分文件与模块的方式

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

4 模块搜索优先级

查找位置优先级
1、内存
2、内置模块
3、sys.path
import sys
print(sys.path) import time
import m1 time.sleep(10)
import m1
# 然后迅速将m1文件删除
m1.f1() # 本次m1会执行,因为内存中有缓存。下一次就会报错 import sys
sys.path.append(r'H:\PycharmProjects\python_new\day013\代码\01from import')
import spam
spam.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内容

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

  • 运行代码的方法:安装环境、启动命令等...
  • 简要的使用说明
  • 代码目录结构说明,更详细点的说明软件的基本原理
  • 常见问题说明

day013|python之模块02&目录01的更多相关文章

  1. Python shutil模块(目录和文件操作)

    import shutil #导入shutil模块 copyfileobj方法 将类文件对象fsrc的内容复制到类文件对象fdst shutil.copyfileobj(fsrc, fdst[, le ...

  2. python os模块 遍历目录

    #os #os ->tree命令 import os #递归 #目录 ->文件,文件夹 -> 文件文件夹 dirpath = input('请输入你要遍历的目录\n') def ge ...

  3. Python之模块IO

    目录 Python之模块IO io概叙 io类层次结构 io模块的类图 io模块的3种I/O 原始I/O,即RawIOBase及其子类 文本I/O,即TextIOBase及其子类 字节I/O(缓存I/ ...

  4. Python模块02/序列化/os模块/sys模块/haslib加密/collections

    Python模块02/序列化/os模块/sys模块/haslib加密/collections 内容大纲 1.序列化 2.os模块 3.sys模块 4.haslib加密 5.collections 1. ...

  5. Python之文件与目录操作及压缩模块(os、shutil、zipfile、tarfile)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...

  6. Python::OS 模块 -- 文件和目录操作

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...

  7. python 在不同层级目录import 模块的方法

    有一个文件夹/home/a,  里面有个模块叫b.py,  我怎么把他import到程序里? 1). import sys; sys.path.append("/home/a/") ...

  8. python一些模块的exe安装包在windows的64位系统里识别不到已安装Python目录的解决方法

    在windows里安装python一些模块时候,有时候源码安装比较困难,pip install也各种报错,这时候最喜欢用别人编译好的exe或者whl文件来安装,但是在windows的64位系统里,如果 ...

  9. python之模块filecmp(文件/目录比较)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块filecmp(文件/目录比较) #用于比较文件及文件夹的内容.他是轻量级的工具.可以做一 ...

随机推荐

  1. Linear basis

    Linear basis is a relatively easy to learn but may not be useful algorithm. Below are two blogs that ...

  2. 02、Spring-HelloWorld

    0. 环境准备 1) jar包 jar包我会帮大家准备好的,所以不用担心找不到Jar包  链接:https://pan.baidu.com/s/1JJcYaspK07JL53vU-q-BUQ 提取码: ...

  3. 内存使用过高点检checklist

    正在运行的程序按照内存段来组织,内存段的类型有如下几种: 代码段:用户程序指令,长期存在内存中 数据段:全局变量等,长期存在内存中 堆:局部变量,参数参数等,短期存在内存中 栈:动态存储,可变 代码段 ...

  4. 阿里技术专家深入讲解,SpringMVC入门到进阶,看这一篇就够了

    前言 SpringMVC是一个实现了Web MVC设计模式的轻量级Web框架.它与前辈Struts 2框架一样,都属于MVC框架,因为其使用和性能等方面比Struts 2更加优异,所以Spring M ...

  5. 【惊喜】Github爆火的java面试神技+java核心面试技术已开发下载,大厂内都传疯了!

    前言 今年,由于疫情的影响,很多互联网企业都在缩减招聘成本.作为程序员,原本这两年就面临竞争激烈.年龄危机的问题,而现在的求职局面又完全是企业在挑人的状态. 所以最好能在空闲的时候看看大厂相匹配的技术 ...

  6. U盘数据丢失怎么办,还能恢复吗

    有时候在用U盘的时候会出现数据丢失或者U盘无法打开的问题,检查过之后,发现U盘格式变成了RAW,这是怎么回事?遇到这种情况该怎么解决呢? 首先来看看造成u盘格式变为RAW的主要原因: 1.非正常退出u ...

  7. 【操作系统】先来先服务和短作业优先算法(C语言实现)

    [操作系统] 先来先服务算法和短作业优先算法实现 介绍: 1.先来先服务 (FCFS: first come first service) 如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列 ...

  8. java编写规范及注意事项

    java编写规范及注意事项 1.注释 常见注释有三种  //   /**/ /****/ 如何才能写出漂亮的注释呢,注释的目的就是为了使你的代码让人更容易理解和维护,写一手好的注释是一个优秀码农的基本 ...

  9. NameServer 与zk

    1.nameServer 之间互不通信,故不存在强一致性,即不同的producer看到的视图可能时不一样的,(如何保证最终一致的?) 2.nameServer维护的boker信息 发生变化时,不会像z ...

  10. mysql主从同步上---主从同步原理

    1.主从同步机制   1.1 主从同步介绍和优点   在多台数据服务器中,分为主服务器和从服务器.一台主服务器对应多台从服务器. 主服务器只负责写入数据,从服务器只负责同步主服务器的数据,并让外部程序 ...