python学习
2020-09-16 09:41:51 55 举报
AI智能生成
python基础
作者其他创作
大纲/内容
函数
高级函数
函数参数
位置参数
默认参数
可变参数
关键字参数
递归函数和尾递归优化
函数
python是部分函数式编程
高阶函数
函数可以作为参数
函数可以作为返回
函数可以认为是变量
匿名函数
装饰器
@fun1然后def fun2 相当于fun2 = fun1(fun2)
偏函数
import functools/functools.partial
闭包
闭包就是某函数能够利用其它函数的变量,这个我有过实践
python机制
运行机制
java和python运行机制对比
1.java源码编译为.class字节码
2.java虚拟机将.class字节码进行解释执行
2.java虚拟机将.class字节码进行解释执行
1.python解释器将源码转换为字节码即pycodeobject,
写入内存中,供cpu读取
2.python解释器执行字节码
写入内存中,供cpu读取
2.python解释器执行字节码
__pycache_文件夹
里面存放的是.pyc文件或.pyo文件,python解释器每次执行完时,
会将pycodeobject写会硬盘。下次执行时,如果没有修改过
源代码,则会直接执行pyc,缩短时间。
(主要判断源文件时间是否在字节码修改时间之前)
会将pycodeobject写会硬盘。下次执行时,如果没有修改过
源代码,则会直接执行pyc,缩短时间。
(主要判断源文件时间是否在字节码修改时间之前)
内存管理
垃圾回收
作用域
可变变量和不可变变量
变量作用范围
多进程与多线程
多进程
需要注意的点
在windows平台上,执行子进程的语句必须
要被if __name__==‘__main__’保护起来,原
因是win创建子进程时为了刷新变量,会自动import
子进程所在的module,会导致无限创建子进程,引发
语法错误。
要被if __name__==‘__main__’保护起来,原
因是win创建子进程时为了刷新变量,会自动import
子进程所在的module,会导致无限创建子进程,引发
语法错误。
https://blog.csdn.net/weixin_33736832/article/details/93298848
多线程
python多线程中碍于全局解释锁的存在,
实际上效果不好;如果是计算密集型的任务,
相当于单线程处理,并且还会增加多线程的切换
时间;如果是i/o密集类的任务则会有所提升
实际上效果不好;如果是计算密集型的任务,
相当于单线程处理,并且还会增加多线程的切换
时间;如果是i/o密集类的任务则会有所提升
多进程适用于计算密集型
多线程适用于I/O密集型
python基础
数据类型
number(不可变对象)
int
float
bool
str(不可变对象)
None(不可变对象)
数据结构
str(不可变对象)
tuple(不可变对象)
dict
set
list
高级数据结构(collections)
namedtuple
counter
defaultdict
orderDict
deque
numpy
ndarray
dataframe
sereies
高级特性
切片
迭代
迭代的含义就是for循环,换个词叫做遍历
列表推导式
带if else
带多个变量的
生成器
通过next方法获取下一个值
用for循环可以避免报错
如果函数中包含yield关键字也是生成器
每次遇到yield返回,再次执行时从yield处继续执行
迭代器
可迭代对象(能够用for循环遍历的)
str
tuple
dict
set
...
生成器都是迭代器
python包的管理
文件夹下含有__init__.py的就是一个包,可以嵌套(包是package)
模块是一个py文件,是module,module是包中的py文件
python的内置函数只有63个,其他的函数都是第三方package提供的
import module时,如果module中包含有可执行语句,将会被执行。而且
被导入时,被导的module的__name__属性由于module执行会被更新为
被导入的module的名字。所以只要在被导入的module的名字前加上if __name__==
'__main__':后面跟上可执行语句可以避免import包的时候,module的内容被执行。
但是只要import module,实际上被导入的module的__name__还是会更新。
被导入时,被导的module的__name__属性由于module执行会被更新为
被导入的module的名字。所以只要在被导入的module的名字前加上if __name__==
'__main__':后面跟上可执行语句可以避免import包的时候,module的内容被执行。
但是只要import module,实际上被导入的module的__name__还是会更新。
模块代码的第一个字符串会被认为是模块的文档注释
sys.path下是module的搜索路径,可以增加自定义的搜索路径,比如sys.path.append()
编程思想和风格
思想对比
面向过程
将计算机程序视为一系列的命令集合,
即函数的顺序执行,因此一般是将解决问题
分为不同步骤,然后逐步将这些步骤实现即可
即函数的顺序执行,因此一般是将解决问题
分为不同步骤,然后逐步将这些步骤实现即可
优点:高性能
缺点:不易维护
面向对象
面向对象就是构成问题事务分解成各个对象,
建立对象的目的不是为了完成一个步骤,
而是为了描叙某个事物在整个解决问题的步骤中的行为。
建立对象的目的不是为了完成一个步骤,
而是为了描叙某个事物在整个解决问题的步骤中的行为。
优点:易于维护、低耦合
缺点:性能低
特点:封装、继承、多态
类中self的重要性
思想:类变量是可以被所有实例共享的变量(属性
不共享,但是方法共享),
也就是说,调用类方法时需要标记是哪个实例。
不共享,但是方法共享),
也就是说,调用类方法时需要标记是哪个实例。
另一方便理解,a = A(),python解释器会处理为:
A.__init__(a),a是标识自身的参数
A.__init__(a),a是标识自身的参数
继承
pep-8
0 条评论
下一页