今日所得

  模块

  import

  from...import...

  循环导入

  相对导入

  绝对导入

  软件开发目录规范

模块

  模块:是一系列功能的集合体

  模块的三种来源:1.内置模块(Python解释器自带的模块)

          2.第三方模块(别人写的)

          3.自定义模块(自己写的)

  模块的四种表现形式

   1.使用Python编写的py文件(py文件也可以称之为模块)

   2.已被编译为共享库或DLL的C或C++扩展

   3.把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,该文件夹称之为包)包:一系列py文件的结合体

   4.使用C编写并连接到Python解释器的内置模块

   Python解释器启动时加载的模块缓存 > 同级目录 > sys.path(环境变量)

  使用别人编译好的模块,可以极大的提高开发效率

  使用自己编译的模块,当程序比较庞大的时候,你的项目不可能只在一个py文件中,当多个文件需要使用相同的方法时,可以将该方法放到一个公用的py文件中,有文件需要使用时可以直接调用

import

  这是Python在调包时用到的关键字

import time

name = 'chen'
start = time.time()
time.sleep(2)
print(name)
end = time.time()
print(end - start) """
右键运行执行文件,会首先创建一个执行文件的名称空间
让后首次导入time模块
1.执行time.py文件
2.运行time.py的代码将产生的值和名字放入time的名称空间中
3.执行文件会得到一个指向time名称空间的名字(time)
多次导入不会再执行模块文件,会沿用第一次导入的结果
"""

from...import...

  在执行文件中运行

首先创建执行文件的名称空间

首次导入模块

1.运行模块

2.执行模块将产生的名字和值放入模块的名称空间

3.直接拿到import指向的模块中某个值的名字

缺点

  1.访问模块中的名字不需要加模块名前缀

  2.在访问模块中的名字可能会与当前执行文件中的名字起冲突

循环导入

  在运行执行文件时,导入一个模块,导入的模块中又导入了其他模块,来来回回的互相导入

  如果出现了循环导入问题,就说明是你的程序设计不合理,循环导入问题应该在程序的设计阶段就应该避免

解决循环导入问题的方式

  1.将循环导入的句式写在文件最下方

  2.在函数内导入模块

__name__的用法

当该文件被当做执行文件时__name__打印的结果是__main__

当文件被当做模块导入的时候__name__打印的结果是模块名(没有后缀)

模块的查找顺序

  1.先从内存中找

  2.再去内置中找

  3.最后去sys.path中找(环境变量)

要分清楚谁是执行文件,谁是被导入文件

print(sys.path)是一个大列表,第一个路径就是执行文件所在的路径

模块的绝对导入

  绝对导入必须依据执行文件所在的文件夹路径为准

  1.绝对导入无论是在执行文件中还是被导入文件中都合适

相对导入

  .代表的当前路径

  ..代表的上一级路径

  ...代表的上上一级路径

  相对导入不能再执行文件中使用,使用相对导入就不需要考虑执行文件是谁,只需要知道模块与模块之间路径关系

  

"""
项目名
bin文件夹
start.py项目启动文件
conf文件夹
setting.py项目配置文件
core文件夹
src.py项目核心逻辑文件
db文件夹
数据相关
lib文件夹
common.py项目所有用到的公共的功能
log文件夹
log.log项目的日志文件
readme文本文件 介绍项目
"""

bin文件夹

  start.py文件

import sys
import os BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# __file__是当前文件的位置
sys.path.append(BASE_DIR)
"""
pycharm会自动将你新建的最顶层的目录自动添加到环境变量中
上面这两句话 不是针对你的 是针对下载你这个软件的用户
"""
from core import src if __name__ == '__main__':
src.run()

python与模块的导入方式的更多相关文章

  1. 17.python自定义模块的导入方式

    1.直接用import导入 最后运行main.py可以看到命令行窗口输出了一句:你好,这样就完成了. 2.通过sys模块导入自定义模块的路径path 3.在环境变量中找到自定义模块 这个方法原理就是利 ...

  2. 模块的概念、模块的导入方式【IMPORT 模块名、FROM 模块 IMOPRT 功能】、模块的搜索路径、链式导入&循环导入

    今日内容 1. 模块:模块的概念 2.导入的方式:import  from import 3. 环境变量:sys.path 4. 导入模块的顺序 5. 循环导入:模块间互相导入 模块 常见的四种模块: ...

  3. 第10.9节 Python子包的导入方式介绍

    在<第10.8节 Python包的导入方式详解>详细介绍了包的导入方式,子包也是包,子包的导入与包的导入方法上没有本质区别,但二者还是有所不同.本节对照二者的方式介绍子包与包导入的关系: ...

  4. python之模块的导入

    今天在做一个项目的时候卡在模块导入这个点上了.赶紧回头总结一下 一.被导入的文件和工作的脚本在一个目录下 1.导入一个.py文件里的功能或参数(导入模块) 先看一下目录结构: module里有两个功能 ...

  5. python第三方模块的导入

    模块搜索路径 当我们尝试加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错: >>> import module1 Traceback (most ...

  6. python学习笔记:模块——自定义模块的3种导入方式

    一.定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块.如果不懂 ...

  7. 11、python模块的导入

    前言:本文主要介绍python模块的导入,包括模块的定义.模块的作用.导入方式以及模块的搜索路径. 一.模块的定义 python模块(module),简单来说就是一个python文件,以.py结尾,文 ...

  8. 第10.8节 Python包的导入方式详解

    一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...

  9. Python之模块和包

    一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...

随机推荐

  1. git 知识罗列

    git pull is basically a shortcut for two operations: git fetch which downloads the history from the ...

  2. spring hystrix和内置tomcat组件的参数调优解析

    1. springboot内置tomcat容器的参数配置 server: port: 12021 # server端的socket超时间(毫秒),使用值-1表示没有(即无限)超时,默认值为60000( ...

  3. IOC 本质是为了实现 AOP|火影鸣人

    @JFinal 波总在 JFinal 4.8 发布新闻的评论 中给出了下面的表述: IOC 本质是为了实现 AOP 我有点吃惊, 没想到 Java 界的大佬对这两个概念有和我完全不一致的认识. 所以写 ...

  4. Linux 配置单机yum源--ISO镜像做源

    前提:防火墙关闭.SElinus关闭 1.上传ISO镜像(建议传到home目录下) [root@localhost home]# ls iso/ CentOS-.iso 2.挂载目录 [root@lo ...

  5. day67-CSS字体属性、文字属性、背景属性、css盒子模型

    1. 字体属性 1.1 文字字体:font-family可以把多个字体名称作为一个“回退”系统来保存.如果浏览器不支持第一个字体,则会尝试下一个.浏览器会使用它可识别的第一个值. * {font-fa ...

  6. Java之同步方法处理实现Runnable接口的线程安全问题

    /** * 使用同步方法解决实现Runnable接口的线程安全问题 * * * 关于同步方法的总结: * 1. 同步方法仍然涉及到同步监视器,只是不需要我们显式的声明. * 2. 非静态的同步方法,同 ...

  7. Chrome使用频率最高的快捷键

    标签 ctrl+T 打开新标签  ——— ctrl+W 关闭标签 ctrl+shift+T 打开上衣个被关闭的标签 ctrl+tab 标签向右切换 —— ctrl+shift+tab 标签向左切换 c ...

  8. Java类只加载一次的情况

    一个类只加载一次: 调用Java命令. 创建对象时 访问静态成员时 Class.forName("包名.类名")

  9. centos快速安装mysql

    1. wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2. rpm -ivh mysql-community-r ...

  10. jexus+.netcore+identityserver4 部署支持ssl(https)

    硬件环境: 在阿里云购买了一个centos 7 64 位服务器 软件: jexus ,dotnet core sdk 第一步安装dotnet core sdk: 先安装dotnet core sdk ...