补充:生成器表达式

将列表生成器的中括号改为小括号就是生成器表达式

res = [i for i in range(10) if i > 5]  #  列表生成式

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

模块

  • 什么是模块

    模块就是一系列功能的集合体(对函数集的封装)

    模块的三种来源:

    1. 内置模块

    2. 第三方模块

    3. 自定义模块

  • 为何要用模块

    1. 使用内置或者第三方的模块的好处是:拿来主义,极大提升开发效率

    2. 使用自定义的模块的好处是:将程序的各部分组件共用的功能提取出来放到一个模块中,其他的组件通过导入的方式使用该模块,该模块即自定义模块,好处是可以减少代码冗余。

  • 如何使用模块

    • 导入模块的三种方式:

    1. import + 模块

      1. 首次倒入模块的会发生三件事:

        • 会产生一个模块名称空间

        • 会执行模块文件的内容,将产生的名字丢到模的名称空间里

        • 在当前执行的文件中拿到一个名字(模块名),该名字指向模块的名称空间

      1. 模块的内功能的调用

        • module.func()

          缺点:当模块名复杂(stu_ifo_msg)时,会大大降低开发效率。

    2. from + 模块 + import + 函数名,函数名,函数名……

      1. 首次导入模块会发生3件事

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

        2. 会执行模块文件内容,见文件中产生的名字丢入到模块的名称空间中

        3. 在当前执行文件中拿到的函数名,该名字指向模块的名称空间中的函数

      2. 功能函数的调用

        • func()

          缺点:当执行函数中有相同函数名时,会造成名称空间混淆

    3. import + 模块 + as + 新名字 (推荐)

      导入原理与第一种方式相同,不论模块名多长,模块内功能多少都能以最精简的方式写出清晰的代码(完美解决以上其他两种导入方式带来的缺陷)。

  • 模块的查找路径(优先级从上到下)

    1. 内存

    2. 内置模块

    3. sys.path(是以执行文件为准)

      <!--当执行代码调用的模块中导入了另一个模块,它的sys.path任然是以当前执行代码的sys.path为准-->

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

    print(__ name __)

    • 当文件被当做执行文件导入时__ name__ 的值为__ main__

    • 当文件被当做模块被导入时__ name__的值为模块名

    #  在模块内添加测试该模块的功能代码,但在执行文件中不能让其显示出来
    def func1():
    pass
    def func2():
    pass
    def func3():
    pass if __name__ == '__main__': # 当文件被当作模块导入时,__name__='模块名'
    print('执行测试功能')

软件开发的目录规范

ATM

  1. bin

    1. start.py:启动文件

  2. conf(配置文件,允许用户自定义)

    1. settings.py

  3. core(核心功能)

    1. db:存放数据、账号信息等

    2. src.py : 主程序,核心代码

  4. lib(自定义模块)

    1. common.py

  5. log(日志文件)

    1. Readme.txt(软件介绍)

    2. transcation.tlo(用户日志和交易信息等)

start.py执行src.py中的功能,首先去bin中找,找不到,报错

①在sys.path中添加环境变量,但由于环境变量只针对于当前电脑,所以当程序在其他机器上使用时则无法执行,且只能运行src.py的功能,其他文件则无法执行。

② 一、将项目的根目录加到环境变量里

二、把项目根目录所在的局的对路径拿到,然后加到环境变量里

解决了只能运行src的缺陷,但是在另一台机器上任然不能使用。

③使用__ file __ 内置函数,print( __ file __ )<!--保险起见导入os模块中的os.path.abspath(__ file __)-->得到的是当前执行文件的路径(D:/……/ATM/bin/start.py),将此路径处理后根目录添加到环境变量中。

# os.path.dirname:获取上一层文件夹,os.path.abspath(__file__)得到的是当前执行文件的路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 最终我们需要的当前执行文件的根目录
sys.path.append(BASE_DIR) # 添加到环境变量中
  • 为软件的提现功能添加日志功能并可以让用户自定义路径

软件的执行》》start.py》》scr.py(主程序,业务逻辑功能)》》提现功能下调用common.py中日志功能并记录到log文件夹下的transcation.log文件中,并将路径设置为可由用户自定义—调用conf文件夹下的setting.py的路径设置功能。

import os

BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 当前执行文件下的根目录

LOG_PATH=r'%s\log\transcation.log' %BASE_DIR # 用户自定义
  • 将start.py文件放入根目录下,所有需要添加环境变量的问题都迎刃而解,不需要绕着弯去添加环境变量。

Python模块概念的更多相关文章

  1. python 模块的概念介绍

    模块 模块:本质就是一个.py文件分为三部分:内置模块.第三方模块,自定义模块 模块: 顶层文件 python模块python模块可以将代码量较大的程序分割成多个有组织的.彼此独立但又能互相交互的代码 ...

  2. python成长之路【第十八篇】:python模块介绍、模块导入和重载

    一.模块和命名空间 一般来说,Python程序往往由多个模块文件构成,通过import语句连接在一起.每个模块文件是一个独立完备的变量包,即一个命名空间.一个模块文件不能看到其他文件定义的变量名,除非 ...

  3. 【转】python模块分析之unittest测试(五)

    [转]python模块分析之unittest测试(五) 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) p ...

  4. python 模块之-logging

    python  模块logging import logging ###  简单使用格式    日志级别等级CRITICAL > ERROR > WARNING > INFO > ...

  5. Python深入:Distutils发布Python模块--转载

    https://blog.csdn.net/gqtcgq/article/details/49255995 Distutils可以用来在Python环境中构建和安装额外的模块.新的模块可以是纯Pyth ...

  6. python模块大全

    python模块大全2018年01月25日 13:38:55 mcj1314bb 阅读数:3049 pymatgen multidict yarl regex gvar tifffile jupyte ...

  7. python开发_常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...

  8. Python模块(进阶3)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6411917.html 本文出自:[Edwin博客园] Python模块(进阶3) 1. python中模块和 ...

  9. Python模块、包、异常、文件(案例)

    Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...

随机推荐

  1. 自定义的cell上面有图片时,如果产生了重用,图片可能会错乱问题

    当被重用的cell将要显示时,会调用这个方法,这个方法最大的用武之地是当你自定义的cell上面有图片时,如果产生了重用,图片可能会错乱(当图片来自异步下载时及其明显),这时我们可以重写这个方法把内容抹 ...

  2. 当前View的坐标相对其他View的位置坐标

    // 将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect - (CGRect)convertRect:(CGRect)rect toView:(UIView *) ...

  3. django_view操作数据库

    1 create def add_area(request): area = Area.objects.create(name='commom',description='a commom area' ...

  4. 转 PHP 正则表达式 以及案例

    2.Perl兼容的语法扩充 Perl兼容的正则表达式的模式类似于Perl中的语法,表达式必须包含在定界符中,除数字.字母.反斜线外的任何字符都可以作为定界符.例如,表达式’/^(?i)php[34]/ ...

  5. python_16(bootstrap)

    素材网址: 1.1 官网 https://jquery.com/ 1.2 开源库链接: https://www.bootcdn.cn/ 1.3 网页模板 www.jq22.com 1.1 bootst ...

  6. iOS 自定义读写文件

    LSCacheFile.h // // LSCacheFile.h // iPhone // // Created by xujinzhong on 14-6-5. // Copyright (c) ...

  7. 【进度总结】第一个web应用程序(未完成)

    web程序快速导航 使用Eclipse for Java EE Web Development,并配置Tomcat,这部分内容在众多教程中都描述的十分详细.我直接从代码部分开始记录流程: 这张图是We ...

  8. Idea 2017注册码

    BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  9. HDU 1964 Pipes (插头DP,变形)

    题意:给一个n*m的矩阵,每个格子都是必走的,且无障碍格子,每对格子之间都有一个花费,问哈密顿回路的最小花费. 思路: 这个和Formula1差不多,只是求得是最小花费,这只需要修改一下DP值为花费就 ...

  10. windows8无脑式双系统安装教程(转)

    转:http://blog.csdn.net/poem_qianmo/article/details/7334987 首先去微软官网将ISO文件下载下来,分为32bit跟64bit两个版本,因人而异, ...