• 包的使用


    装饰器(基础阶段难点)
    在遵循开闭原则(对扩展开放,对修改封闭,不能修改源代码和调用方式)的前提下给一个函数添加新功能的函数
    装饰器是通过闭包函数实现的
    闭包?一个函数嵌套定义在另一个函数内部,并且内部函数访问了外部函中的名字
    在将内部函数作为返回值,返回给外界
    def outer(func):
    def wrapper():
    pass
    迭代器
    解释for循环的执行原理
    是一种通用的取值方式
    什么是迭代器
    具备__nex__和__iter__方法
    什么是可迭代对象
    可以被迭代器取值的对象
    具备__iter__方法
    列表生成器
    生成器本质是一个函数,只不过里面有yield关键字
    列表生成式
    快速的生成一个列表
    [表达式 for i in 可迭代 if 条件]
    生成器表达式
    快速生成一个
    (表达式 for i in 可迭代 if 条件)
    得到一个生成器,
    三元表达式
    有三个元素的表达式 a,b(条件) c
    简化if else的书写 要求无论判断成立活不成立都要一个返回值
    递归
    函数执行过程中,直接或者间接的调用了函数自身
    递归也是一个循环的过程,并且递归在循环调用时,每次调用都会产生名称空间,可能会造成内存溢出

    用递归求100的阶乘
    二分法
    匿名函数
    没有名字的函数,只在定义的时候临时有效,用完就没了

    内置函数
    max min reduce sorted map filter
    模块
    一堆功能的集合体,
    import
    1.创建名称空间
    2.执行内部代码,把名字放到名称空间中
    3.在导入模块的地方生成一个名字指向名称空间
    from
    1.创建名称空间
    2.执行内部代码,把名字放到名称空间中
    3.直接将被导入的名字放入当前名称空间中
    as 一行导入多个,*号导入所有名字


    什么是包
    本质是文件夹
    为什么使用包
    函数可以使得同一个文件中代码结构更清晰
    模块(py文件)是以文件形式来组织代码结构
    如果文件越来越多管理起来更不方便,所以需要使用文件夹来管理,从文件夹级别来管理代码
    包的使用
    新建一个文件夹就是一个包
    包和文件夹仅有一个区别 包中应该包含一个__init__.py文件

    __init__.py文件的作用
    包也是模块
    再导入一个模块时发生三件事一样
    问题是,第二步需要执行导入文件代码,包只是个文件夹不能直接执行,所以需要提供一个py文件用来代表这个包成为一个模块

    init初始化单词的缩写,表示对包中的内容进行初始化
    包的初始化其实就是导入这个包中的其他模块
    总结:导入包时本质上就是导入包下的__init__的py文件
    注意:init文件的作用仅仅是导入包内模块 提供给外界使用,不应该使用里面的逻辑代码

    init是可选的 可有可无
    在py2中要求必须有,py3是可选
    如果没有提供init文件 在使用模块时就直接使用文件夹.需要的模块名称

    init的好处
    可以将包内模块的功能直接导入到__init__中,这样一来对于包的使用者而言
    可以无需考虑要使用的功能在那个文件中,直接调用功能即可

    使用包的流程
    1.创建一个包
    2.编写包内部的模块代码
    3.写完之后打开init文件,将需要提供给外界使用的模块导入其中(可以省略,可以不提供init)

    相对导入和绝对导入
    相对?
    指的是相对于某个模块而言的导入路径
    语法:
    from.import 名称
    .表示的是当前这一级目录
    再加一个点表示上一级即..
    注意:执行文件中不能使用相对导入
    使用相对导入时不能使用点返回到执行文件所在的一层
    相对导入 超出了顶层包
    相对导入仅用在同一个包内的模块间相互导入

    绝对?
    指的是从执行文件开始的绝对路径,注意不是文件的绝对路径
    导入时需要注意:
    1.import 导入时,点的后面必须是一个模块或包名
    2.from导入式 import 后面不能出现点

    循环导入
    开发室模块可能又很多,极有可能出现循环导入
    循环导入指的是
    两个模块 相互导入 你导入我 我导入你
    解决方案就是不要循环导入,这明显是设计有问题
  • 相关阅读:
    福州KTV
    MSN登陆不上:微软谴责中国的“技术问题”
    DB2 存储过程开发最佳实践
    在DB2存储过程中返回一个数据集
    Host is not allowed to connect to this MySQL server 解决方案
    CentOS安装中文支持
    ImportError: libpq.so.5: cannot open shared object file: No such file or directory
    CentOS 终端显示中文异常解决办法
    pytestDemo
    python 获取当前运行的类名函数名
  • 原文地址:https://www.cnblogs.com/gengbinjia/p/10298783.html
Copyright © 2020-2023  润新知