模块

名称空间的嵌套关系是在定义阶段就固定死的,与调用位置无关

生成器表达式:res=(i for i in range(10) if i>5)

1.import 模块 

  什么是模块? 模块就是功能的集合体

  模块的四个通用类别:

     使用python编写的.py文件
            把一系列模块组织到一起的文件夹
            已被编译为共享或DLL的c或c++扩展
            使用C编写并连接到python解释器的内置莫模块

       模块的三种来源
            内置模块
            第三方模块
            自定义模块

  为什么要用模块?

    1.使用内置或第三方模块的好处:极大提升开发效率

    2.使用自定义模块的好处:将程序部分组件公用的功能提取到一个模块,其他组件通过调用方式使用该模块,目的是减少代码冗余

  怎么使用模块? 先定义后使用

    首次导入模块会发生的三件事情:

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

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

      3..spam在当前执行文件中,拿到一个名字,改名字指向模块的名称空间

        之后的导入引用首次导入成功的

      调用 spam.money

      导入模块时候 可以其别名  import spam as s

  import 的优缺点:

      优点:引用模块中的名字必须加前缀(模块名.),指名道姓的问某一个空间要名字,不会与当        前名称空间中的名字冲突

      缺点:引用模块中的名字必须加前缀(模块名.),不够简洁

2.from 模块 import 功能

     1.产生一个模块的名称空间
        2.执行spam.py的文件内容,将产生的名字丢到模块的名称空间内
        3.在当前执行文件中拿到read1,该名字直接指向模块的名称空间中的read1  

     from import的优缺点
          优点:引用模块中的名字不加前缀(模块名.),比较简洁
          缺点:容易与当前执行文件名称空间中的名字冲突
     from spam import *

3.模块的搜索路径及环境变量sys.path的设置
    1.内存
    2.内置模块
    3.sys.path依次查找 (是以执行文件为准)
        查找模块路径优先级:内存->内置->硬盘

4.区分python的两种用途_name_
    当文件被当做执行文件时_name_的值为_main_
    当文件被当做模块导入时_name_的值为模块名
    def f1():
        print('f1')    
    def f2():
        print('f2')
    if _name_ == _main_:
        f1()
        f2()

5.软件开发的目录规范
    1.把项目根目录加到环境变量
    2.应该把项目根目录所在的绝对路径,然后加到环境变量
    3.

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR)
    项目名
        bin 文件启动目录(环境变量基准)
            start
        conf 配置文件
            settings
        lib 自定义模块(与业务无关)
        core 核心逻辑代码(业务)
            src
        db 数据库文件
        log 日志文件
        Readme 文件(介绍)

posted @ 2018-12-04 15:54  yyf1  阅读(197)  评论(0编辑  收藏  举报