昨日回顾

  1. 装饰器:完美的呈现了开放封闭原则。本质:闭包。

    def wrapper(f):
    def inner(*args,**kwargs):
    '''在执行被装饰函数之前,想写什么代码写什么代码'''
    ret=f(*args,**kwargs)
    '''执行被装饰函数之后的操作'''
    return inner
    return inner
  2. 练习题

    #练习:为函数写一个装饰器,把函数的返回值+100,再返回
    def wrapper(f):
    def inner(*args,**kwargs):
    ret = f(*args, **kwargs)
    return ret+100
    return inner @wrapper
    def func():
    return 7 result=func()
    print(result)
    #练习:为函数写一个装饰器,一次调用执行五次
    def wrapper(f):
    def inner(*args,**kwargs):
    for i in range(5):
    f(*args, **kwargs)
    return inner @wrapper
    def func():
    print('in func')

今日内容

  1. 自定义模块

    • 什么是模块:一个.py就是一个模块,封装语句的最小单位
    • 不宜过大,便于维护
    • 自定义模块:实际上就是在定义.py文件,其中可以包含:for、if、函数定义等,统称模块的成员
  2. 模块的运行方式

    • 脚本方式:直接用解释器执行\pycharm中右键运行
    • 模块方式:被其他的模块导入。为导入它的模块提供资源(函数定义、类定义等)。
    • '__name__'的使用
      • 在脚本方式运行时,'__name__'是固定的字符串
  3. 常用模块:time、datatime、random

  4. 系统导入模块的路径

    • 内存中:如果之前成功导入过某个模块,直接引用已经存在的模块。

    • 内置路径中:lib中

    • sys.path:一个路径的列表,没提供源码,c语言写的直接集成到解释器。

      • #查看sys.path的内容,并追加a.py
        import sys
        print(sys.path)
        sys.path.append(r'E:\Py Project\day15\a')
        print(sys.path)
        #使用相对位置找到aa文件夹
        #__file__:当前文件的绝对路径
        #使用os模块获取一个路径的父路径
        import os
        print(os.path.dirname(__file__)+'/a') #E:/Py Project/day15/a
        sys.path.append(os.path.dirname(__file__)+'/a')
      • 三个路径都找不到,就报错

  5. if __name__ == '__main__':可以快速生成(main+回车)

  6. 导入模块的方式

    • import xxx(必须模块名)
    • from xxx import xxx
    • from xxx import *
  7. 解决名称冲突的问题

    • 用import xxx导入
    • 自己避免使用同名
    • 使用别名alias,import xxx as aaa(改名成了aaa)
  8. 相对导入,两模块在同一个项目里,把一个模块导入另一个。

  9. 常用模块random:

    • 此模块提供了和随机数获取相关的方法

      • random.random():获取[0.0,1.0)内浮点数
      • random.randint(a,b):获取[a,b]范围整数
      • random.uniform(a,b):获取[a,b]范围内浮点数
      • random.shuffle(x):把参数指定的数据中的元素打乱
      • random.sample(x,k):从x中取k个数据组成一个列表
      • ……
  10. 函数总结

    • 什么是函数?减少重复性,增强可读性
    • 函数的结构?def 函数名():
    • 函数的执行调用:函数名()
    • 函数的返回值,没有return返回None,返回多个值元组形式。
    • 参数:
      • 形参(位置参数、默认参数、万能参数、仅限关键字参数)
      • 实参(位置参数、关键字参数、混合参数(位置参数一定在前面,一一对应))
      • *的魔性用法:定义聚合、调用打散
    • 空间角度:内置名称空间、全局、局部
    • 作用域:全局作用域、局部作用域
    • 取值顺序和加载顺序
    • 函数的嵌套
    • global:在局部名称空间声明一个全局变量、在局部修改全局变量
    • nonlocal
    • 函数名的应用:指向的就是个内存地址,是个变量
    • 函数的三大器
      • 迭代器
      • 生成器
      • 装饰器:闭包
    • 内置函数

今日总结

  1. 模块
  2. 函数

代码总行数1951+91=2042行

python15day的更多相关文章

随机推荐

  1. 【LeetCode】20. Valid Parentheses 有效的括号

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:有效,括号,括号匹配,栈,题解,leetcode, 力扣 ...

  2. 【LeetCode】445. Add Two Numbers II 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 先求和再构成列表 使用栈保存节点数字 类似题目 日期 ...

  3. MySQL 尽量避免使用 TIMESTAMP

    MySQL 中常见的时间类型有三种DATE, DATETIME和 TIMESTAMP,其中DATE类型用于表示日期,但是不会包含时间,格式为YYYY-MM-DD,而DATETIME和TIMESTAMP ...

  4. 第十个知识点:RSA和强RSA问题有什么区别?

    第十个知识点:RSA和强RSA问题有什么区别 这个密码学52件事数学知识的第一篇,也是整个系列的第10篇.这篇介绍了RSA问题和Strong-RSA问题,指出了这两种问题的不同之处. 密码学严重依赖于 ...

  5. CS5211替代LT7211 DP转LVDS芯片方案 替代龙迅LT7211方案

    LT7211是一种用于虚拟现实/显示应用的高性能C/DP1.2至LVDS芯片方案.LT7211支持DP1.2输入,LT7211可以配置为1.2.4车道,还支持车道交换功能.自适应均衡使其适用于长电缆应 ...

  6. gojs 如何实现虚线(蚂蚁线)动画?

    在绘制 dag 图时,通过节点和来箭头的连线来表示节点彼此之间的关系.而节点常常又带有状态,为了更好的表示节点之间的流程关系,loading 状态的节点,与后续节点之间,需要用 动画着的虚线 表示,表 ...

  7. Java初学者作业——完成对已定义类(Admin)的对象的创建。并完成属性的赋值和方法的调用。

    返回本章节 返回作业目录 需求说明: 完成对已定义类(Admin)的对象的创建.并完成属性的赋值和方法的调用. 实现思路: 创建 MyTest 类,并添加 main函数. 在 main函数中完成对 A ...

  8. golang mongodb 驱动二次封装

    mongodb 官方的go驱动包 go.mongodb.org/mongo-driver 使用起来比较繁琐,最近对其进行了二次封装 github地址:https://github.com/w3liu/ ...

  9. 【Python+Django+Pytest】数据库异常pymysql.err.InterfaceError: (0, '') 解决方案

    问题背景: 接口自动化测试平台,在执行测试案例之外,还需要做以下五件事情(或步骤): 1.查询用户在数据准备中预置的测试套件层数据初始化相关sql  (setUp_class方法中) 2.查询用户在数 ...

  10. 详解Scrapy的命令行工具

    接触过Scrapy的人都知道,我们很多操作是需要借助命令行来执行的,比如创建项目,运行爬虫等.所以了解和掌握这些命令对于scrapy的学习是很有帮助的! Scrapy 命令 首先,在scrapy命令中 ...