模块

一.生成器表达式

语法跟列表生成式一样,只不过列表生成式,是放在中括号内,生成器表达式是放在小括号内

g=(i for i in range(10) if i > 5)
print(g)
print(next(g))

二.模块

1.什么是模块:模块就是一系列功能的集合体

2.模块分为四个通用的类别:

       1 使用python编写的.py文件

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

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

  4 使用C编写并链接到python解释器的内置模块

3.模块的来源:

        1. 内置模块

        2.第三方模块

        3.自定义模块:将程序各部分组件共用的功能提取取出放到一个模块里,其他的组件通过导入的方式使用该模块,该模块即自定义的模块

        其中内置模块和第三方模块都是别人写好的,直接用就可以了

4.为何要用模块

       内置模块和第三方模块可以直接使用,提升开发的效率,自定义模块可以减少代码冗余

5.如何用模块

1.import  模块名

          首次导入模块的三个阶段:

                      1.产生一个模块的名称空间

                      2.执行.py文件中的内容,将产生的名字存放到模块的名称空间中

                      3.在当前的执行文件中存放着模块名,该模块名指向了模块的名称空间

之后的导入直接使用首次导入的结果即可。

使用import导入模块的优缺点:

优点:不会与当前执行文件的名称空间中的名字发生冲突

缺点:引用模块中的名字必须加前缀(模块名.)

import spam as sm #改模块名
print(sm.money)
import n1,n2,n3 #导入多个模块

2.from.....import.....

    首次导入模块的三个阶段:

                      1.产生一个模块的名称空间

                      2.执行.py文件中的内容,将产生的名字存放到模块的名称空间中

                      3.在当前的执行文件中拿到的名字,指向了模块的名称空间中相对应的名字

之后的导入直接使用首次导入的结果即可。

使用from.....import.....导入模块的优缺点:

优点:容易与当前执行文件的名称空间中的名字发生冲突

优点:引用模块中的名字不需要加前缀,直接使用即可

from spam import money as m  #改money的名字
print(m)


from spam import * #把spam模块中所有的名字都导入进去
print(read1)
print(money)
print(read2)

6.模块的搜索路径

查找模块路径的优先级:1.内存  2.内置模块  3.sys.path(环境变量):它是以当前执行文件所在的文件夹为准的

7.如何区分python文件的两种用途

def f1():
    print('f1')

def f2():
    print('f2')

if __name__ == '__main__':
    f1()
    f2()

# print(__name__)
# 当文件被当作执行文件执行时__name__的值为__main__
# 当文件被当作模块导入时__name__的值为模块名

三.软件开发的目录规范

bin文件夹中写的是一些启动文件;

conf文件夹中写的是一些配置文件;

lib文件夹中写的是一些自定义模块;

core文件夹中写的是一些程序的核心功能;

db文件夹中写的是一些数据;

log文件夹中写的是一些日志文件;

Readme文件夹中写的是一些使用说明。

原文地址:https://www.cnblogs.com/wangke0917/p/10064268.html