系列文章目录

一、包

  • 包的概念:

    含有一个或多个模块的并包含一个__init__.py文件的文件夹(该文件可以为空,也可以有代码),该文件夹就是,它是比模块更高一级的封装;

    包的名称通常为全部小写,避免使用下划线。

  • 包的使用方法:

    包的使用方法和模块的使用方法基本一致。

    import.模块
    fromimport 模块
    from.模块 import 要导入的对象
    
  • 导入包时,解释器所作的操作:

    在导入模块时,会运行模块中的代码;而在导入包时,实际上就是导入包下__init__.py文件,解释器会运行__init__.py中的代码。

  • 包内有包:

    包支持相对路径和绝对路径的导入,这种情况适用于包内有包的情况:

    __init__.py中,导入子包中的对象,这样子包中的对象才能在别处被正确导入 :

    # 绝对路径
    fromimport 子包
    from.子包 import 模块
    
    
    # 相对路径
    from . import 子包
    from .. import 模块  # 只有一个子包(文件夹)
    from .import 模块
    
  • __all__变量:

    包的__all__变量定义在__init__.py文件中,作用和模块内的定义的变量一模一样。都是指定用*导入时,可以导入的对象。

二、函数注解(最低版本:python 3.5)

  • 函数注解的概念:

    函数注解也叫类型提示,它是可选的,用来标注形参的数据类型和返回值的数据类型。

  • 作用:

    函数注解目前仅是对参数做一个说明,和给IDE代码、检查工具等第三方工具检查代码使用。不按照标注的类型传参并不会有任何影响。

  • 语法格式:

    参数注解是形参:类型的格式,返回值注解是在括号后面添加-> 数据类型

    def foo(a:int, b:float, c:str='默认值') ->  None:
        pass
    
  • __annotations__属性:
    注解是以字典的形式存放在函数的 __annotations__ 属性中,并且不会影响函数的任何其他部分。

三、软件开发的目录规范

  • 日志文件通常会单独存放到另一块硬盘中;

  • README文件相当于该程序的说明书,写一些程序的安装方法,使用方法等;

  • requirements.txt保存着运行该程序需要安装的一些库,也就是包或者模块;

  • run.py是程序的运行入口文件;

  • setup.py是安装程序时运行的文件;

  • 将工程根目录添加到环境变量中,能极大的方便对其他目录的操作:

    import os
    import sys
    
    
    # 获取项目根目录; __file__保存着当前文件的绝对路径
    BASE_DIR = os.path.dirname(os.path.dirname(根据__file__指出根目录位置)) 
    
    # 添加到环境变量 
    sys.path.append(BASE_DIR)