本文主要是介绍Python3学习进度,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简介:Python3学习-由工作中遇到Android/iOS自动化测试调研使用(网易Airtest) 引入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端口可以各自绑定。
- 电子邮件
- 访问数据库
- 使用SQLite
- 使用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的设计。
- 定制类
- 使用枚举
- 使用元类
-
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解释器(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学习进度的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!