![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
five-four-one
这个作者很懒,什么都没留下…
展开
-
字典的基本使用
为什么需要字典有时候我们需要存储一些相关的数据, 比如一个人的姓名, 年龄等信息, 使用字典的方式存储起来比较方便我们去使用这些数据创建的字典方式一根据{}来创建字典方式二根据dict函数来创建字典字典的基本操作方法字典中的键可以是任意的不可变数据类型, 比如:浮点类型, 整形 长整形 字符串 或者元组len(字典): 返回字典的键值对的长度字典[key]: 获取字典中key对应的值字典[key] = value: 设置键为key的值, 如果字典中不原创 2020-07-15 20:45:51 · 2163 阅读 · 1 评论 -
元组的基本使用
什么是元组元组的使用和列表相似, 不同之处在于元组是不可修改的, 元组使用圆括号, 而列表使用中括号元组的值是不能够修改的, 而列表是可以进行,增删改查等操作的。元组只能够取值和遍历的一些不修改值的操作元组应用的场景元组在字典中可以当做key(字典的键)来使用,而列表是不可以的在函数中,有时候要返回多个值, 一般采用元组的方法在一些不希望用户修改值得场景下使用元组来代替列表定义元组方式一:使用逗号的方式分隔数据类型的方式定义元组方式二:使用括号的形式来定义元组使用tup原创 2020-07-14 21:15:26 · 1824 阅读 · 0 评论 -
列表的常用方法
列表的常用方法append方法: 在列表的末尾添加一个元素count方法: 统计某个元素在列表中出现的次数, 如果没有出现返回0原创 2020-07-14 20:42:26 · 3379 阅读 · 0 评论 -
列表的基本使用
列表的作用列表相当于一个容器, 可以把一系列的值放在这个容器中进行存储, 需要使用的时候,再将其取出来定义列表方式1: 使用"[]"定义列表方式2: 使用 list()类定义一个列表列表的取值通过 列表名[下标值] 的方式进行取值, 下标都是从0开始的列表的遍历使用while循环, for循环都可以进行列表的遍历, python一般使用for循环进行遍历, 比较方便例子1: while循环, while循环是通过循环列表的长度, 通过下标进行取值例子原创 2020-07-13 21:19:50 · 492 阅读 · 0 评论 -
python-字符串的使用
什么是字符串在python中,使用单引号或者双引号包括起来的, 就是字符串字符串也可以使用6个单引号或者6个双引号括起来在python3中, 字符串分为两种类型, 第一种是str, 是unicode字符串, 第二种是bytes类型, 就是经过编码后的字符串, 是一种字节码, 使用与保存在磁盘上或者网络上传输例1例2例3:bytes数据类型字符串的格式化字符串格式化, 就是将一个字符串中某些经常改变的地方, 提取出来, 用一些占位符占位, 通过格式化方式填原创 2020-07-08 21:17:34 · 207 阅读 · 0 评论 -
python-while循环的基础练习
while循环求1-100数字的总和result = 0 # 定义一个变量接收每次循环的数值进行相加number = 1 # 1-100的数值,循环肯定是从数字1开始while number <= 100: # 小于等于100,因为是1-100的数字总和,所以最大的数字就是100 result += number # result是用来每次循环时,都相加的number循环的数字,直到number条件大于100才会停止 number += 1 # 循环的条件,一直每次要发原创 2020-07-06 20:04:51 · 599 阅读 · 0 评论 -
多线程的锁机制
多线程共享全局变量的问题多线程锁机制定义一个线程锁: 线程锁对象 = threading.Lock()线程锁的开启: 线程锁对象.acquire()线程锁的释放: 线程锁对象.release()...原创 2020-02-09 14:17:37 · 159 阅读 · 0 评论 -
使用类的方式定义多线程
继承自threading.Thread类为了让线程代码更好的封装, 可以使用threading模块下的Thread类, 继承自这个类必须重写run方法import threadingimport timeclass Watch(threading.Thread): def run(self): for i in range(3): ...原创 2020-02-09 13:59:38 · 118 阅读 · 0 评论 -
多线程
多线程的介绍多线程: 多线程是为了同步完成多项任务, 通过提高资源使用效率来提高系统的效率,线程是在同一时间需要完成多项任务时候实现的比如: 多线程就像火车的每一节车厢, 而进程则是火车, 车厢离开了火车是无法跑动的, 同理火车可以有多节车厢, 多线程的出现就是为了提高效率threading模块threading模块是python专门提供用来做多线程的, threading模块中最常...原创 2020-02-09 13:53:05 · 76 阅读 · 0 评论 -
进程-Queue消息队列
Queue消息队列进程之间的数据时不共享的, 因此想要在两个进程之间使用相同的数据, 那么需要使用到进程池的通信进程池通信方式有多种, 其中最主要用到是: 管道(Pipe)和队列(Queue)Queue队列常用方法导入方式: from multiprocessing import QueueQueue(n): 初始化一个消息队列, 并指定这个队列中最多能否容纳多少条消息, 例如:q...原创 2020-02-09 13:16:17 · 337 阅读 · 0 评论 -
进程间的数据不共享
进程间数据不共享在程序中创建了子进程, 子进程会完全复制一份主进程的环境(包括变量,函数,类等)所以在子进程中使用变量, 函数等, 其实是使用的子进程中的那一份, 跟主进程没有任何关系子进程会完全复制一份主进程的资源, 创建一个独立的内存空间...原创 2020-02-08 16:39:26 · 594 阅读 · 0 评论 -
进程池
进程池multiprocessing模块中有一个类Pool, 这个类相当于一个池, 专门用来存储进程的Pool类的__init__方法可以传递一个参数, 这个参数指定进程池同一时刻最多只能拥有多少个进程在使用进程池, 父进程不会等待子进程中的子进程执行完毕后退出, 而是父进程的代码执行完毕后立即退出from multiprocessing import Poolimport time...原创 2020-02-08 15:52:30 · 99 阅读 · 0 评论 -
进程1
什么是进程操作系统在运行过程中, 一个程序运行起来就是一个进程在python中, 多进程编程可以让我们程序运行效率更高, 同一时刻可以做很多事情multiprocessing模块multiprocessing模块是python中专门用来创建多进程的, multiprocessing模块提供了Process类来创建进程注意点如果是在Windows操作系统中, 所有和进程创建相关...原创 2020-02-08 15:14:12 · 89 阅读 · 0 评论 -
进程2-使用类的方法创建子进程
使用类的方式创建子进程使用Process作为父类, 重新自定义一个类在自定义类中,必须重写run方法使用自定义的进程类创建子进程时, 不需要传target参数...原创 2020-02-08 15:13:36 · 132 阅读 · 0 评论 -
多任务编程
什么是多任务编程?操作系统可以同时运行多个任务, 比如电脑可以一边听歌一边写代码, 而且操作系统还会默默的运行其他的任务, 这种情况叫做多任务在计算机中多任务如何实现的?计算机中CPU是多核的, CPU一个核同一时刻只能运行一个任务, 多核CPU在同一时刻可以运行多个任务, 如果是单核的CPU,也能运行多个任务, 这跟操作系统中实现的一些调度算法模拟了多任务有关比如计算机中运行...原创 2020-02-08 14:30:12 · 162 阅读 · 0 评论 -
面向对象-魔术方法-pickle
pickle写入对象到磁盘中import pickledata = { "name": [1, 2, 3], "age": 18}with open('abc.txt', 'wb') as fp: pickle.dump(data, fp)pickle读取磁盘中的对象import picklewith open('abc.txt', 'rb') as fp...原创 2020-02-08 13:46:44 · 168 阅读 · 0 评论 -
面向对象-魔术方法-会话管理(with语句)
with语句文件操作使用with语句可以打开和关闭一个文件with open('文件名', 模式) as 别名: 别名......这种代码底层的原理是通过两个魔术方法来实现的, 专业术语叫做会话控制器enter(self)魔术方法使用with语句时,会调用该方法, 这个方法的返回值作为 as xx的值with FileOpen('test.txt', 'w', enco...原创 2020-02-08 13:13:25 · 84 阅读 · 0 评论 -
面向对象-魔术方法- call可调用对象
__call__魔术方法__call__方法: 一个特殊的魔术方法, 可以让类的实例行为表现像函数一样, 将一个函数当做一个参数传到另外一个函数中等等类名() 相当于 类名.__call__()方法, 又名回调函数...原创 2020-02-07 17:53:37 · 152 阅读 · 0 评论 -
面向对象-魔术方法5-属性访问控制魔术方法
属性访问控制的魔术方法__getattr__方法在访问一个对象的某个属性时, 如果该属性不存在, 那么会执行该方法__setattr__魔术方法设置一个对象的属性时, 就会执行该方法, 要注意的是, 使用'self.__dict__[key] = value的形式, 避免产生死循环的递归__getattribute__魔术方法在访问一个对象的属性时, 都会执行的魔术方法,...原创 2020-02-07 16:18:28 · 186 阅读 · 0 评论 -
面向对象-魔术方法4-二元运算符和增量运算符
二元运算符__add__魔术方法: 两个对象相加时会触发__sub__魔术方法: 两个对象相减时会触发该方法__mul__魔术方法: 两个对象相乘时会触发的方法__truediv__魔术方法: 两个对象相乘时会触发的方法__mod__魔术方法: 两个对象取模时触发的方法 %增量运算符__iadd__魔术方法: 在给对象做+=运算时触发的方法__isub__魔术方法:...原创 2020-02-07 15:36:54 · 129 阅读 · 0 评论 -
面向对象=魔术方法3-一元运算符
一元运算符__pos__魔术方法: 如果在对象前面使用'+'号的时候会触发该方法__neg__魔术方法: 在对象前面使用'-'号会触发该方法__abs__魔术方法:在对象前面使用abs(对象)触发该方法__invert__魔术方法: 在对象中使用'~'号会触发该方法注意点– 如果在这些魔术方法中, 使用self对象, 那么会改变对象的本身, 如果是新建对象会创建副...原创 2020-02-07 15:07:51 · 84 阅读 · 0 评论 -
面向对象-魔术方法2-比较魔术方法
__eq__魔术方法比较两个对象的属性是否相等 "=="__ne__魔术方法比较两个对象是否不相等 "!="__lt__魔术方法比较第一个对象是否小于第二个对象 <__gt__魔术方法比较第一个对象是否大于第二个对象 >大于等于和小于等于如果写好了小于和大于 直接调用即可...原创 2020-02-07 14:45:46 · 104 阅读 · 0 评论 -
面向对象-魔术方法1-常用的魔术方法
__init__魔术方法: 对象实例化触发的方法__del__魔术方法: 对象即将被释放时, 会调用该方法注意点: 如果这个对象产生了循环引用, 并且实现了__del__方法, 那么这个对象得不到释放, 从而会产生内存泄漏, 因此慎用该方法__new__魔术方法: 该方法用来创建对象, 创建对象需要重写该方法__class__魔术属性: 返回对象所属的类, 如果是类调用该属...原创 2020-02-07 13:45:43 · 238 阅读 · 0 评论 -
面向对象-动态创建类
动态创建类实例1使用type的方式创建Person = type('Person', (object,), {'name':'zs', 'age':18})p = Person()print(p.age)格式:类名 = type("类名",(object, 父类的继承可以为空), {属性名: 值} )...原创 2020-02-06 16:19:06 · 123 阅读 · 0 评论 -
面向对象-动态添加方法
动态添加方法动态添加方法意思是该方法不是在类中定义的, 而是创建完对象后, 在运行时添加的使用 'types.MethodType'方法添加方法types.MethodType'的使用方式: 要添加的对象.函数= types.MethodType(函数引用地址, 对象引用地址)导入方式import types动态添加类方法动态添加静态方法__slots_...原创 2020-02-06 12:27:21 · 283 阅读 · 0 评论 -
闭包函数
什么是闭包函数如果在一个函数中, 定义了另外一个函数, 并且那个函数使用了外面函数的变量, 返回了里面函数的引用, 那么称为里面函数为闭包例子nonlocal关键字如果想要在闭包种修改外部函数的变量, 需要使用关键字nonlocal,实例代码计算器小案例两位数字的加减乘除def calculator(options): if options == 1...原创 2020-02-01 14:48:21 · 129 阅读 · 0 评论 -
生成器
为什么需要生成器假如要输入1-1亿的数字, 我们采用range的方式生成数据, 那么程序就会崩溃采用生成器的方式可以解决这个问题, 生成器不会一次把所有的数据加载到内存中, 而是在循环时临时生成的, 循环一次生成一次, 所以程序运行期间永远只能生成一个数据, 从而大大的节省了内存解决输入1-1亿数字的问题生成器使用'()'格式调用__next__方法,依次输入生成器中的一个数据li...原创 2020-02-01 13:45:01 · 100 阅读 · 0 评论 -
迭代器
什么是迭代器迭代器可以让我们访问集合时变得非常方便, 通过’for…in…'的方式访问一个集合时, 就是使用迭代器完成的,如果没有迭代器, 那么我们只能通过while循环方式, 每次循环时通过下标访问迭代的作用迭代器是用来返回数据的, 每次循环时都会调用迭代器的'__next__'或者'next'方法, 通过这个方法获取数据迭代器中包括了两个方法'__iter__'和'__next...原创 2020-01-31 21:15:27 · 113 阅读 · 0 评论 -
python虚拟环境
虚拟环境(virtualenv)为什么使用虚拟环境如果使用两个版本的django来开发的程序, 那么会昌产生不兼容, 所以这时候我们就需要用到虚拟环境安装虚拟环境python2安装虚拟环境pip install virtualenvpython3安装虚拟环境pip3 install virtualenv如果电脑只安装了python3解释器, 就直接使用pip insta...原创 2020-01-30 16:34:54 · 94 阅读 · 0 评论 -
pip命令的使用
通过pip命令安装终端输入命令pip install 包名安装指定版本的包pip install 包 == 版本号卸载包pip uninstall 包名升级包pip install -U 包名升级pippip install -U pip查看当前pip版本pip --version显示某个已安装的包信息pip show -f 报名...原创 2020-01-27 13:31:28 · 310 阅读 · 0 评论 -
python-程序异常处理
异常处理有些时候我们的程序开发过程中可能会有意想不到的事情发生, 这种情况叫做异常异常如果处理不好, 可能会导致我们程序退出奔溃, 因此我们要对异常进行处理, 来确保我们的程序能够稳健的运行异常处理方法try: 可能奔溃的代码except 异常名字: try语句出现异常的时候执行的代码else: try语句中没有能出异常时候执行的代码finally: 不管程序有没有抛出...原创 2020-01-24 14:19:45 · 269 阅读 · 0 评论 -
面向对象-单例设计模式
__new__方法__new__方法是比__init__方法先执行的方法如果没有重写并返回父类, 那么该类无法执行__init__方法单例模式单例设计模式: 某个类或者模型在整个程序运行期间最多只能有一个对象被创建调用__new__方法, 判断该类是否创建了, 如果创建返回,否则创建了之后再返回...原创 2020-01-22 16:18:18 · 86 阅读 · 0 评论 -
面向对象-类方法和静态方法
类方法在类中实例方法中添加@classmethod实现了类方法类方法的第一个参数必须为cls, 这个cls代表的是当前这个类静态方法静态方法不需要传递参数, 对象或类静态方法使用场景: 不需要修改类或者对象的属性的是后,并且这个方法放在这个类中可以让代码更加有管理性...原创 2020-01-22 15:58:44 · 176 阅读 · 0 评论 -
面向对象-反射
参考博客链接反射通过字符串的形式操作对象相关的属性, python中一切皆对象(都可以使用反射)四个反射的函数haasttr(对象, '属性') 检测是否含有某个属性, 属性以字符串的形式查找,如果有返回True, 否则Falsegetattr(对象, '属性') 获取属性, 如果没有获取到会报错设置属性 setattr(对象, '属性', 属性值)删除属性 de...原创 2020-01-22 15:24:45 · 131 阅读 · 0 评论 -
面向对象-类属性和实例属性
类属性类属性: 直接定义在class里面的变量,并且不在类方法中的变量称为类属性实例属性原创 2020-01-22 15:09:20 · 290 阅读 · 0 评论 -
面向对象--继承
继承继承了父类的方法和属性, 但是不能继承父类的私有方法和私有属性重写父类方法有时父类的方法不适合子类, 那么需要重写父类的方法super函数的使用: super(子类的类名, self).重写的方法名([参数])多继承如果继承的类中有方法名称一样的, 会根据内置方法 __mro__的查找顺序来定义继承的类一般情况下会继承第一个,也就是左边开始的__mro__方...原创 2020-01-16 15:51:03 · 55 阅读 · 0 评论 -
面向对象- __init__ __del__方法
__init__方法类的初始化方法, 也可称为构造函数, 每次调用类时都会第一执行的方法__del__方法类执行结束时, 最后执行的方法, 也可称为析构方法执行结果**引用计数python中的对象是使用引用计数的方式实现的, 如果没有任何对象引用一块内存, 那么python将会把这块内存回收可以使用sys模块中的getrefcount(object)方法获取一个对象的引用计数...原创 2020-01-16 15:26:43 · 117 阅读 · 0 评论 -
面向对象-私有属性和私有方法
访问限制受保护的属性和方法: 有时候在类中的属性和方法不想被外界调用, 但是还是可以被外界调用, 那么叫做受保护的属性或者方法, 受保护的属性或者方法, 使用一个下划线开头定义私有属性和私有方法在类中的属性和方法不能被外界所调用称为私有属性和私有方法, 使用两个下划线开头私有属性: 只能在类中使用私有方法: 只能在类中使用类的外部访问私有方法,属性(不使用, 只了解)如...原创 2020-01-16 14:01:53 · 326 阅读 · 0 评论 -
文件操作
文件操作的两种方式open: open打开文件需要在最后将其关闭with: with打开文件无须将其关闭, with语句叫做上下文管理器, 上下文管理器是一种支持'__enter__'和'__exit__' 两种方法的对象文件句柄 = open(文件名称, 模式, encoding='utf-8')....文件句柄.close()with open(文件名称, 模式, encod...原创 2020-01-04 16:22:31 · 64 阅读 · 0 评论 -
函数
函数函数定义def 函数名(参数...): .....参数是可选的函数的调用函数名()函数的参数1.形参: 定义函数时指定的参数: 例如 def func(a,b), a和b就是形参2.实参: 调用函数时, 传递的参数, 例如: 函数名(1,2) 1和2就是实参3.位置参数: 按照形参中指定的参数进行传递叫做位置参数关键字参数调用函数时,指定形参的名称进...原创 2020-01-03 17:05:05 · 62 阅读 · 0 评论