Python3学习进度

2021/6/1 20:23:02

本文主要是介绍Python3学习进度,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

简介:Python3学习-由工作中遇到Android/iOS自动化测试调研使用(网易Airtest) 引入Python学习
  • 2021年01月25日
    AirTest脚本编写需要Python支撑-so 学吧!

  • 2021年01月26日
    廖雪峰的Python新手教程

学习路径

  • 2021年02月04日

    • web开发(了解)
      • HTTP协议简介
      • HTML简介
      • WSGI接口
      • 使用Web框架
      • 使用模板
    • 异步IO(暂未深入)
      • 协程
      • asyncio
      • async/wait
      • aiohttp
    • 使用MicroPython(了解)
      • 搭建开发环境
      • 控制小车
      • 遥控小车
      • 遥控转向
    • 实战-web实战-待实践。。。
  • 2021年02月03日

    • 正则表达式
    • 常用内建模块
      • datetime
      • collections
      • base64
      • struct
      • hashlib
      • hmac
      • itertools
      • contextlib
      • urllib
      • XML
      • HTMLParser
    • 常用第三方模块
      • Pillow
      • requests
      • chardet
      • psutil
    • virtualenv
    • 图形界面
      • 海龟绘图
    • 网络编程
      • TCP/IP简介
      • TCP编程
      • UDP编程
      • 小结:UDP的使用与TCP类似,但是不需要建立连接。此外,服务器绑定UDP端口和TCP端口互不冲突,也就是说,UDP的9999端口与TCP的9999端口可以各自绑定。
    • 电子邮件
      • SMTP发送邮件
      • POP3收取邮件
    • 访问数据库
      • 使用SQLite
      • 使用MySQL
        • pymysql连接docker里mysql
      • 使用SQLAlchemy
        • 用tuple表示一行很难看出表的结构。如果把一个tuple用class实例来表示,就可以更容易地看出表的结构来:
        • 这就是传说中的ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上。是不是很简单?
        • 但是由谁来做这个转换呢?所以ORM框架应运而生。
        • 在Python中,最有名的ORM框架是SQLAlchemy。我们来看看SQLAlchemy的用法。
  • 2021年02月02日

    • 进程和线程
      • 多进程
      • 多线程
      • ThreadLocal
      • 进程 VS. 线程
      • 分布式进程
    • IO编程
      • 文件读写
      • StringIO 和 BytesIO
      • 操作文件和目录
      • 序列化
    • 错误、调试和测试
      • 错误处理
      • 调试
      • 单元测试
      • 文档测试
  • 2021年02月02日

    昨天看到W3CSchool的教程也还可以-这个可以复习使用

    • 面向对象高级编程
      • 使用__slots__
        • 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class:
        • 尝试给实例绑定一个属性
        • 尝试给实例绑定一个方法
          • 注:给一个实例绑定的方法,对另外一个实例是不起作用的
        • 为了给所有实例都绑定方法,可以给class绑定方法:
        • 给class绑定方法后,所有实例均可调用:
        • 通常情况下,上面的set_score方法可以直接定义在class中,但动态绑定允许我们在程序运行的过程中动态给class加上功能,这在静态语言中很难实现。
      • 使用@property
      • 多重继承
        • 由于Python允许使用多重继承,因此,MixIn就是一种常见的设计。
        • 只允许单一继承的语言(如Java)不能使用MixIn的设计。
      • 定制类
      • 使用枚举
      • 使用元类
        • 类比Object-C动态方法交换
  • 2021年02月01日

    • 面向对象编程
      • (***)面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
      • 类和实例
      • 访问限制
      • 继承和多态
      • 获取对象信息
      • 实例属性和类属性
        • 小结:
          • 实例属性属于各个实例所有,互不干扰;
          • 类属性属于类所有,所有实例共享一个属性;
          • 不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。
  • 2021年02月01日

    • 模块
      • 模块是一组Python代码的集合,可以使用其他模块,也可以被其他模块使用。
      • 创建自己的模块时,要注意:
        • 模块名要遵循Python变量命名规范,不要使用中文、特殊字符;
        • 模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。
      • 使用模块
      • 使用第三方模块
        • 在Python中,安装第三方模块,是通过包管理工具pip完成的。
        •  
  • 2021年02月01日

    • 工作日志模板-生成工具-PyCharm打包应用(/Users/nixinsheng/Documents/python3/PyCharm_HelloWorld/Demo20210201)
    • pycharm打包.py程序为可执行文件exe-MacOS/Linux平台对应有解释
  • 2021年01月29日

    • 函数式编程
      • 高阶函数
        • map/reduce
          • map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:
          • 注:map转为tuple或list只能转一次如果转后再转其他类型会异常

          • map()传入的第一个参数是f,即函数对象本身。由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。
          • 再看reduce的用法。reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
        • filter
          • filter()的作用是从一个序列中筛出符合条件的元素。由于filter()使用了惰性计算,所以只有在取filter()结果的时候,才会真正筛选并每次返回下一个筛出的元素。
        • sorted
          • sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。
      • 返回函数
        • 闭包
      • 匿名函数
        • 关键字lambda表示匿名函数,冒号前面的x表示函数参数(匿名函数lambda x: x * x)
        • 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
      • 装饰器
        • 现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
      • 偏函数
        • Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。
        • 所以,简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
        • 小结:当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
# 测试filter
def is_odd(n):
    return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]
# 测试map/reduce
def f(x):
    return x * x

L = [1, 2, 3, 4, 5, 6, 7, 8, 9]
r = map(Function.f, L)
print(f'map打印:{r}')

# 注:map转为tuple或list只能转一次如果转后再转其他类型会异常
L = tuple(r)
print(f'map转为元组{L}')
for i, item in enumerate(L):
    print(f'tuple - [i,item]=[{i},{item}]')

# L = list(r)
# print(f'map转为list{L}')
# for i, item in enumerate(L):
#     print(f'list - [i,item]=[{i},{item}]')
2021年01月29日
  • 针对昨天学习记录复习总结
  • Python教程
    • Python简介
  • 安装Python
    • Python解释器(VSCode/PyCharm-可以断点调试)
  • 第一个Python程序
    • 使用文本编辑器
    • Python代码运行助手
    • 输入和输出
  • Python基础
    • 数据类型和变量
    • 字符串和编码
    • 使用list和tuple
    • 条件和判断
    • 循环
    • 使用dic和set
  • 函数
    • 调用函数
    • 自/定义函数
    • 函数的参数
      • 参数组合:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
    • 递归函数
  • 高级特性
    • 切片
      • 对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。注意:list和tuple均可以做切片操作!
    • 迭代
      • 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。

      • 在Python中,迭代是通过for ... in来完成的,而很多语言比如C语言,迭代list是通过下标完成的,比如Java代码:

      • 因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

      • 默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。

      • 如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断

      • 如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身

    • 列表生成式
      • 如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数:eg:L = list(range(0, 5))
      • 而列表生成式则可以用一行语句代替循环生成上面的list:
        • eg:L = [x * x for x in range(1, 11)]
        • eg:L = [x * x for x in range(1, 11) if x % 2 == 0]
        • eg:[m + n for m in 'ABC' for n in 'XYZ']
        • eg:d = {'x': 'A', 'y': 'B', 'z': 'C' },d = [k + '=' + v for k, v in d.items()]
        • eg:L = ['Hello', 'World', 'IBM', 'Apple'],L = [s.lower() for s in L]
      • if...else
        • eg:>>> [x for x in range(1, 11) if x % 2 == 0]
        • eg:>>> [x if x % 2 == 0 else -x for x in range(1, 11)]
        • eg:>>> # if条件表达式里内容不做处理 else里是另外一种情况要做处理事 LN = [x if isinstance(x, str) != True else x.lower() for x in L]
    • 生成器
      • 「如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。」***在Python中,这种一边循环一边计算的机制,称为生成器:generator。
      • 斐波拉契数列
      • 要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:
      • 同样的,把函数改成generator后,我们基本上从来不会用next()来获取下一个返回值,而是直接使用for循环来迭代:eg:for n in fib(6):print(n)
    • 迭代器
      • 可迭代对象-可以直接作用于for循环的对象统称为可迭代对象:Iterable。可以使用isinstance()判断一个对象是否是Iterable对象:

      • 生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。

      • 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

      • 可以使用isinstance()判断一个对象是否是Iterator对象:

  • 2021年01月28日
    • PyCharm简单使用(Mac-支持断点调试):创建一个 HelloWord
  • 2021年01月27日
    • docker/portainer-chinese/jenkins的安装->本人有道云笔记:账号/密码 目录里 有详细记录
  • 2021年01月26日
    • 菜鸟教程-Python GUI编程(Tkinter)

 



这篇关于Python3学习进度的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程