模块的使用,软件开发目录规范

一、模块

1、定义:就是一系列功能的结合体

2、模块的三种来源:

  ①、内置的(Python解释器自带)

  ②、第三方的(别人写的)

  ③、自定义的(你自己写的)

3、模块的四种表现形式

  ①、使用Python编写的py文件(也就意味着py文件也可以称之为模块:一个py文件也可以称之为一个模块)

  ②、已被编译为共享库或DLL的c或c++扩展(了解)

  ③、把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,改文件称之为包)

  ④、使用c编写并连接到Python解释器的内置模块

4、使用模块的好处

  ①、用别人写好的模块(内置的,第三方的):典型的拿来主义,极大地提高开发效率

  ②、使用自己写的模块(自定义的):当程序比较庞大的时候,你的项目不可能只在一个py文件中,

那么当多个文件中都需要使用相同的方法的时候,可以将该公共的方法写到一个py文件中,其他的文件以模块的

形式导过去直接调用即可

5、使用模块的注意点:一定要区分哪个是执行文件,哪个是被导入文件

二、使用import导入模块

1、执行过程

  ①、右键运行run.py问价首先会创建一个run.py的名称空间

  ②、首次导入模块(md.py)

    执行md.py文件

    运行md.py文件中的代码将产生的名字与值存放到md.py名称空间中

    在执行文件中产生一个指向名称空间的名字(md)

  多次导入不会再执行模块文件,会沿用第一次导入的成果(******)

2、访问模块中的名字指向的值,使用import导入模块,访问模块名称空间中的名字统一句式:模块名.名字

print(md.money)md.resd1()md.resd2()

3、只要你能拿到函数名无论在哪都可以通过函数名加括号调用这个函数(会回到函数定义阶段,依次执行代码),函数在定义阶段,名字的查找就已经固定死了,不会因为调用位置的变化而变化

4、使用import导入模块,访问模块名称空间中的名字统一句式:模块名.名字

  ①、指名道姓的访问模块中的名字,永远不会与执行文件中的名字冲突

  ②、你如果想访问模块中的名字必须用模块名.名字的方式

5、当几个模块没有联系的情况下,应该分多次导入,通常导入模块的句式会写在文件的开头

import os
import time
import sys

6、当几个模块有相同的部分或属于同一个模块时,可以将他们写在一起

import read,read1,read2

7、 当模块名字比较复杂的情况下,可以给该模块取别名

import aaabbbcccdddfff as a

8、补充:异常有两大类

  ①、语法结构错误:需要你当场处理,异常捕获没法完成

  ②、逻辑错误:异常捕获可以完成

三、使用from...import...导入模块

1、缺点:访问模块中的名字不需要解模块名前缀,访问模块中的名字时可能会与当前执行文件中的名字冲突

2、补充

from md1 import *

  使用上面这个句式,导入模块,会一次性将md1模块中的名字全部加载过来,不推荐使用,并且根本不知道到底有哪些名字可以用

3、__all__

  当所在py文件被当做模块导入的时候,如果不指定__all__的参数,则会将该py文件中所有的名字全部导入过去,指定参数的话,就可以指定哪些名字可以被导入过去,哪些不可以。

4、from...import...的两种用法

  ①、from 文件名 import 名字(可以有多个)

  ②、from 文件夹1.文件夹2 import 文件名(当前目录下没有该文件,该文件在当前目录的文件夹1下的文件夹2下)

四、循环导入问题及解决思路

1、循环导入指的是文件的互相导入

2、出现循环导入问题,一定是你的程序设计不合理,应该在程序设计阶段就避免。

3、解决循环导入问题的方式

  ①、方式一:将循环导入的语句写在文件最下方(文件内所有的名字已经初始化完毕)

  ②、方式二:函数内导入模块(执行函数时才会导入模块)

五、__name__的用法

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

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

3、用途:

  主要用在启动文件中,当启动文件是主动执行的时候,才会执行启动程序,如果是被当做模块导入时,就不会执行启动程序。

if __name__ == ‘__main‘__:
    src.run()

4、上述语句的快捷写法:main直接按tab键

六、模块的查找顺序

1、模块的查找顺序:

  ①、先从内存中找

  ②、再从内置中找

  ③、最后在sys.path中找(可以理解为环境变量),sys.path是一个大列表,里面放了一堆文件路径,第一个路径永远是执行文件所在的文件夹

2、注意点:一定分清楚谁是执行文件谁是被导入文件(******),py文件名不应该与模块名(内置的,第三方的)冲突

3、将文件路径添加到sys.path中

import sys

sys.path.append(r‘D:\Python项目\dir1‘)

from dir1.dir import md

# 当需要导入的模块不在执行文件的目录下时,可以利用这种方式找到模块文件
# 缺点:添加的路径太过绝对,用户自定义安装后会导致该路径失效,软件崩溃。

七、模块的绝对导入

1、绝对导入必须依据文件所在的文件夹路径为准,绝对导入无论在执行文件中还是被导入文件都适用

原文地址:https://www.cnblogs.com/DcentMan/p/11196381.html

时间: 2024-08-29 21:36:33

模块的使用,软件开发目录规范的相关文章

Python模块:Re模块、附软件开发目录规范

Re模块:(正则表达式) 正则表达式就是字符串的匹配规则 正则表达式在多数编程语言里都有相应的支持,Python里面对应的模块时re 常用的表达式规则:(都需要记住) " . "   #  默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 " ^ "  #  匹配字符开头,若指定flags MULTILINE,这种也可以匹配上("^a","\nabc\neee",flags=re.MUL

模块 导入方式 软件开发目录规范

1.模块 模块是一系列功能的结构体 模块的三种来源:内置,第三方,自定义 模块的四种表现形式: 用python编写的py文件 已被编译为共享库或DLL的C或C++扩展(了解) 将一系列模块组织到一起的文件夹 使用C编写并连接到python解释器的内置模块 模块极大的提高了开发效率(内置,第三方),当程序比较庞大时,一个项目的程序拆分多个py文件,将公共用到的方法写到一个py文件,其他文件以模块的形式调用 知道哪个是执行文件,哪个是导入文件. import导入模块 在运行执行文件时,会创建一个执行

Python学习————软件开发目录规范

软件开发目录规范 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要.软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下 Foo/ |-- core/ | |-- core.py | |-- api/ | |-- api.py | |-- db/ | |-- db_handle.py | |-- lib/ | |-- common.py | |-- conf/ | |-- settings.py | |-- run

Python的软件开发目录规范

软件开发的目录规范: 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要.软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下 Foo/ |-- core/ | |-- core.py | |-- api/ | |-- api.py | |-- db/ | |-- db_handle.py | |-- lib/ | |-- common.py | |-- conf/ | |-- settings.py | |-- r

软件开发目录规范

为什么要设计好目录结构? "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题.对于这种风格上的规范,一直都存在两种态度: 一类同学认为,这种个人风格问题"无关紧要".理由是能让程序work就好,风格问题根本不是问题. 另一类同学认为,规范化能更好的控制程序结构,让程序具有更高的可读性. 我是比较偏向于后者的,因为我是前一类同学思想行为下的直接受害者.我曾经维护过一个非常不好读的项目,其实现的逻辑并不复杂,但是却耗费了我非常长的时间去

08-03 开发软件的目录规范

软件开发目录规范 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要.软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下 Foo/ |-- core/ | |-- core.py | |-- api/ | |-- api.py | |-- db/ | |-- db_handle.py | |-- lib/ | |-- common.py | |-- conf/ | |-- settings.py | |-- run

模块(二)之软件开发目录,常用模块

软件开发目录 我们学习编程开始都是将所有的代码全部都放到一个文件里面,后来我们学习函数,模块之后才会说将自己程序的功能具体分一下类,但是因为我们写的程序是需要用户来使用的,对于怎样编程,怎样分类他们都是不了解的,这就需要我们对于软件或者说是程序的开发有一个明确的目录,让不管是自己还是维护人员都可以知道这个程序的大体内容.目录大概结构如下: 对于目录的具体分类大体有以下几类: 1.bin:启动目录,里面只需要有一个启动程序即可,所有文件的启动都由这里开始 2.conf:配置目录,里面是关于程序运行

4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块

4 Apr 18 上节课复习:函数在一个程序内被使用,模块可以被几个程序共享使用 一.软件开发目录 confàsettings.py core(主要逻辑)àsrc.py dbàdb.txt lib(库)àcommon.py bin(入口,启动)àstart.py logàaccess.log readme(说明书)   二.logging模块的使用 日志分为五个级别:debug 10, info 20, warning 30, error 40, critical 50 若日志级别设为10,包括

python18 时间模块 系统模块(os,os.path) 项目开发目录规范

复习 '''1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集合体,通过包内的__init__文件来管理包中所有模块提供给外界的名字 -- 存放所以模块的文件夹名就是包名 4.导包三件事:1)编译__init__文件的pyc2)执行__init__文件形成全局名称空间,作为包的全局名称空间,包能直接使用的名字全部是__init__文件中提供的3)在导包文件中形成