day013|python之模块02&目录01
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的更多相关文章
- Python shutil模块(目录和文件操作)
import shutil #导入shutil模块 copyfileobj方法 将类文件对象fsrc的内容复制到类文件对象fdst shutil.copyfileobj(fsrc, fdst[, le ...
- python os模块 遍历目录
#os #os ->tree命令 import os #递归 #目录 ->文件,文件夹 -> 文件文件夹 dirpath = input('请输入你要遍历的目录\n') def ge ...
- Python之模块IO
目录 Python之模块IO io概叙 io类层次结构 io模块的类图 io模块的3种I/O 原始I/O,即RawIOBase及其子类 文本I/O,即TextIOBase及其子类 字节I/O(缓存I/ ...
- Python模块02/序列化/os模块/sys模块/haslib加密/collections
Python模块02/序列化/os模块/sys模块/haslib加密/collections 内容大纲 1.序列化 2.os模块 3.sys模块 4.haslib加密 5.collections 1. ...
- Python之文件与目录操作及压缩模块(os、shutil、zipfile、tarfile)
Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...
- Python::OS 模块 -- 文件和目录操作
os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...
- python 在不同层级目录import 模块的方法
有一个文件夹/home/a, 里面有个模块叫b.py, 我怎么把他import到程序里? 1). import sys; sys.path.append("/home/a/") ...
- python一些模块的exe安装包在windows的64位系统里识别不到已安装Python目录的解决方法
在windows里安装python一些模块时候,有时候源码安装比较困难,pip install也各种报错,这时候最喜欢用别人编译好的exe或者whl文件来安装,但是在windows的64位系统里,如果 ...
- python之模块filecmp(文件/目录比较)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块filecmp(文件/目录比较) #用于比较文件及文件夹的内容.他是轻量级的工具.可以做一 ...
随机推荐
- Fiddler中添加serverIP
以前一直觉得chrome浏览器中能看到remoteIP,真是觉得太酷了!一直想要fiddler也拥有这种技能,有天好奇的在网上搜了一下,真的可以,改造下fiddler脚本即可:上面那句是算接口请求的t ...
- SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)
SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂) 一,整合Swagger3.0 随着Spring Boot.Spring Cloud等微服务的 ...
- 分布式监控系统之Zabbix基础使用
前文我们了解了分布式监控系统zabbix的相关组件的作用和zabbix的部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13997582.html:今天我们 ...
- 不同角度看Handler——另类三问
之前有一章节介绍了Handler的常见面试题,今天就来说说另类的,可能你没关注的其他问题,一起看看吧. 系统为什么提供Handler 这点大家应该都知道一些,就是为了切换线程,主要就是为了解决在子线程 ...
- CTF-WEB-XTCTF-Web_php_unserialize
题目来源 XTCTF-Web_php_unserialize 题目考点:PHP代码审计.PHP正则.PHP序列化与反序列化 解题思路 题目源码 <?php class Demo { privat ...
- jsp跳转不成功,服务器也不报错,登录页面点击登录没反应,代码如下,请韭菜园子的工友给予指导!
登录后.. 根本跳不到这个检查页面.. 这个登录成功页面也就无从谈起了!
- 使用Folx下载热门电影居然这么简单
在闲暇的时候,很多人会选择观看电影.电视剧来打发时间.对于一些热门的资源,可以通过网页搜索的方式,找到很多与之相对应的种子资源. 但有时候,一些不那么热门的资源就要花费较多时间搜索.有了Folx bt ...
- Guitar Pro吉他指弹入门——特殊调弦
本期文章中,我们将通过吉他打谱软件Guitar Pro 7来向大家讲解指弹曲目中所涉及的特殊调弦. 作为一个吉他手,在练琴的时候总会遇到各种各样的问题,比如说鼓手不肯跟你合作(因为打鼓往往不能露脸), ...
- 蓝桥杯——递增三元组(2018JavaB-第6题,11分)
递增三元组(18JB-6-11') 给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 请你统计有多少 ...
- 蓝桥杯——分组比赛(2017JavaB组第3题)
分组比赛(17JavaB3) 9名运动员参加比赛,需要分3组进行预赛. 有哪些分组的方案呢? 标记运动员为 A,B,C,... I 下面的程序列出了所有的分组方法: ABC DEF GHI ABC D ...