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. 第14章——高级IO函数

    1.套接字超时 套接字IO函数设置超时的方法有三种: (1)调用alarm. (2)select (3)使用SO_RECTIMEO和 SO_SNDTIMEO 选项 上面三种方法适用于输入输出操作(re ...

  2. this.getClass().getResource("") url path file 区别

    首先注意 "/word/appointDismiss.docx" 前面一定要加 /,有一次我就是忘记加/ 查了半天错, 不能写成 "word/appointDismiss ...

  3. 有关线上系统点击没有任何相应得问题思考,主要针对PC端应用程序

    1.问题得起因 前段时间,客户得某些机器上,点击应用系统得快捷方式,没有任何响应,不弹出程序主界面,也没有任何得报错提示,甚至程序得错误日志也没有任何输出. 当时,听说发生这种情况得时候,有点懵了,不 ...

  4. 解析MindMapper选项中的鱼骨选项

    MindMapper思维导图可以画鱼骨图,而且完成的相当漂亮,我们可以在选项设置中定义鱼骨图图的默认样式.下面本文就分析了MindMapper选项中可以更改哪些鱼骨图设置. 我们首先打开MindMap ...

  5. 怎么给Folx添加需要储存的网站密码

    Folx内置密码管理功能,可以帮助用户储存特定网站的密码,实现更加快速的登陆下载操作.在Folx的免费版本中,用户最多可以存储2个密码:而Folx专业版则不限制用户存储密码的数量. Folx通过两种方 ...

  6. 关于CopyOnWriterArrayList的一些理解

    学了cowarraylist之后,有些不明白的地方, 1.我们为什么要用写时复制的策略呢?,这样每次不是都要复制吗,性能不是很低吗?直接在元素组上扩容不好吗?而且读的时候数据一致性也保证不了,如果只是 ...

  7. k8S 搭建集群

    k8S 搭建集群1:修改主机名称hostnamectl --static set-hostname masterhostnamectl --static set-hostname node1hostn ...

  8. Python学习系列之列表(十一)

    一.为什么需要列表 变量可以存储一个元素,而列表是一个"大容器"可以存储N多个元素,程序可以方便地对这些数据进行整体操作 列表相当于其它语言中的数组 二.列表的创建1.列表需要使用 ...

  9. EDI的五个常见挑战以及如何克服这些挑战

    EDI是成功进行供应链管理的一个关键要素.它使企业能够以标准化的电子格式处理与任何交易伙伴的业务数据交换,极大简化了许多曾经繁琐的程序.然而,如果企业正在扩张或处于高速增长阶段,如何充分利用EDI仍然 ...

  10. 蓝桥杯——四数平方(2016JavaB第7题)

    四数平方(16JavaB7) 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 ...