python魔法函数
(译)Python魔法方法指南
原文
Python进阶:实例讲解Python中的魔法函数(Magic Methods)
魔法函数
所谓魔法函数(Magic Methods),是Python的一种高级语法,允许你在类中自定义函数(函数名格式一般为__xx__),并绑定到类的特殊方法中。比如在类A中自定义__str__()函数,则在调用str(A())时,会自动调用__str__()函数,并返回相应的结果。在我们平时的使用中,可能经常使用__init__函数和__del\函数,其实这也是魔法函数的一种。
魔术方法(magic method)是特殊方法的昵称。特殊方法也叫双下方法
通过实现特殊方法来利用 Python 数据模型的两个好处。
作为你的类的用户,他们不必去记住标准操作的各式名称(“怎么得到元素的总数?是 .size() 还是 .length() 还是别的什么?”)。
可以更加方便地利用 Python 的标准库,比如 random.choice 函数,从而不用重新发明轮子。
特殊方法的存在是为了被 Python 解释器调用的,你自己并不需要调用它们。
除非有大量的元编程存 ...
python装饰器
函数基础函数定义
在 Python 中,函数是一等对象,编程语言理论家把“一等对象”定义为满足下述条件的程序实体:
在运行时创建
能赋值给变量或数据结构中的元素
能作为参数传给函数
能作为函数的返回结果
有了一等函数,就可以使用函数式风格编程。
函数式编程的特点之一是使用高阶函数——接受函数为参数,或者把函数作为结果返回的函数是高阶函数(higher-order function)。
在函数式编程范式中,最为人熟知的高阶函数有 map、filter、reduce 和 apply。
在 Python 3 中,map 和 filter 还是内置函数,但是由于引入了列表推导和生成器表达式,它们变得没那么重要了。
sum 和 reduce 的通用思想是把某个操作连续应用到序列的元素上,累计之前的结果,把一系列值归约成一个值。
all 和 any 也是内置的归约函数。
all(iterable): 如果 iterable 的每个元素都是真值,返回 True;all([]) 返回 True。
any(iterable): 只要 iterable 中有元素是真值,就返回 True;any([] ...
数据库相关操作
Elasticsearch数据库环境配置
安装环境
pip install elasticsearch==7.6.0
EsDao包装类12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918 ...
python基础知识
python基础知识python解释器
CPython
这个解释器是用C语言开发的,所以叫 CPython,在命名行下运行python,就是启动CPython解释器CPython是使用最广的Python解释器
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强
PyPy
PyPy是另一个Python解释器,它的目标是执行速度PyPy采用JIT技术,对Python代进行动态编译,所以可以显著提高Python代码的执行速度
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器可以直接把Python代码编译成.Net的字节码。
字符集和字符编码
十分钟搞清字符集和字符编码
程序员必备:彻底弄懂常见的7种中文字符编码
计算机屏幕上看到实体化的文字,在计算机存储介质中存放的实际是二进制的比特流两者之间的 ...
python元编程
动态属性在 Python 中,数据的属性和处理数据的方法统称属性(attribute)。其实,方法只是可调用的属性。
属性描述符(get/set/delete)
python 使用特性管理实例属性
(转)Python描述符(descriptor)解密
python理解描述符(descriptor)
python 描述符总结
Python描述符 (descriptor) 详解
在不可散列的类中使用描述符-python
python高级编程——描述符Descriptor详解(下篇)
基本概念描述符是对多个属性运用相同存取逻辑的一种方式。例如,Django ORM 和 SQL Alchemy 等 ORM 中的字段类型是描述符,把数据库记录中字段里的数据与 Python 对象的属性对应起来。
为什么需要描述符:对property来说,最大的缺点就是它们不能重复使用。虽然property可以让类从外部看起来接口整洁漂亮,但是却做不到内部同样整洁漂亮。
描述符是property的升级版,允许你为重复的property逻辑编写单独的类来处理。
基本要求:描述符是实现了特定协议的类,这个协议包 ...
多线程_基础篇
基础篇1231. Java多线程系列目录(共43篇)-转 https://www.jianshu.com/p/dca27f047923https://www.cnblogs.com/skywang12345/p/java_threads_category.html
线程共包括以下5种状态:
新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。
就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。
运行状态(Running): 线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。
阻塞状态(Blocked) : 阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:(01) 等待阻塞 — 通过调用线程的wait()方法,让线程等待某工作的完成。(02) 同步阻塞 ...
设计模式
设计模式的概念设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结
使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性
设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样
设计模式的组成和分类
根据其目的(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种:
• 创建型模式主要用于创建对象• 结构型模式主要用于处理类或对象的组合• 行为型模式主要用于描述对类或对象怎样交互和怎样分配职责
根据范围(模式主要是用于处理类之间关系还是处理对象之间的关系)可分为类模式和对象模式两种:
• 类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态 ...
python协程
python迭代对象
Coroutines Are Faster To Start Than Threads in Python
扫描内存中放不下的数据集时,我们要找到一种惰性获取数据项的方式,即按需一次获取一个数据项
这就是迭代器模式(Iterator pattern),迭代是数据处理的基石
Python 2.2(2001 年)加入了 yield 关键字,这个关键字用于构建生成器(generator),其作用与迭代器一样
所有生成器都是迭代器,因为生成器完全实现了迭代器接口
迭代器用于从集合中取出元素;而生成器用于”凭空”生成元素
Python 社区中,大多数时候都把迭代器和生成器视作同一概念
内置的 range() 函数也返回一个类似生成器的对象,而以前则返回完整的列表
如果一定要让 range() 函数返回列表,那么必须明确指明(例如,list(range(100)))
序列可以迭代的原因:iter函数
解释器需要迭代对象 x 时,会自动调用 iter(x)
内置的 iter 函数有以下作用
检查对象是否实现了 __iter__ 方法,如果实现了就调用它,获 ...
多线程_JUC锁集合
JUC锁集合同步锁: 即通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁。Java 1.0版本中就已经支持同步锁了。对于每一个对象,有且仅有一个同步锁;不同的线程能共同访问该同步锁。但是,在同一个时间点,该同步锁能且只能被一个线程获取到。这样,获取到同步锁的线程就能进行CPU调度,从而在CPU上执行;而没有获取到同步锁的线程,必须进行等待,直到获取到同步锁之后才能继续运行。这就是,多线程通过同步锁进行同步的原理!
JUC包中的锁 : 相比同步锁,JUC包中的锁的功能更加强大,它为锁提供了一个框架,该框架允许更灵活地使用锁,只是它的用法更难罢了。
JUC包中的锁,包括:Lock接口,ReadWriteLock接口,LockSupport阻塞原语,Condition条件,AbstractOwnableSynchronizer/AbstractQueuedSynchronizer/AbstractQueuedLongSynchronizer三个抽象类,ReentrantLock独占锁,ReentrantReadWriteLock读写锁。由于CountDown ...
python异步编程
基础概念
python3 asyncio官方文档中文版
asyncio —- 异步 I/O
2小时学会python asyncio【花39大洋买的课程】
Python进程、线程和协程实战指归
异步编程基本概念
python—-异步IO(asyncio)协程
Python黑魔法 —- 异步IO(asyncio)协程
python协程系列(六)——asyncio的EventLoop以及Future详解
python协程系列(七)——asyncio结合多线程解决阻塞问题以及timer模拟
asyncio —— 异步I/O、事件循环、协程和任务
python协程与异步协程
[进阶]-Python3 异步编程详解(史上最全篇)
python多线程、多进程、协程的使用
Python异步IO之协程(一): 从yield from到async的使用
python异步编程模块asyncio学习(一)
python异步编程模块asyncio学习(二)
Python中协程异步IO(asyncio)详解
理解 Python 中的异步编程
Python异步编程模块asyncio学习 !此模块非常之重要!
带你 ...