Python都有哪些黑魔法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python都有哪些黑魔法?相关的知识,希望对你有一定的参考价值。

当然,Python的黑魔法是所有的内省和动态绑定。


例如,Python可以重新绑定解释器的异常,以便在程序异常结束时可以进行一些自定义处理。

一旦你重置了异常钩子,一旦你的代码抛出一个异常,整个解释器的环境将被ipdb接管,然后被用作交互模式。通常,我将检查堆栈并pickle必要的对象,因此稍后再犯错误更容易。

由于IPython是一个非gui程序,所以即使在SSH中也可以使用它,这是SSH缺少IDE的完美解决方案。

动态绑定的另一个用途是,当程序依赖于修改后的库时,可以将修改后的部分剥离,并在运行时动态绑定到相应的库。

内省中,Python可以通过dir()和help()函数获取列表并帮助对象的成员,当您找不到库文档时,这些函数非常有用。只要开发人员在函数下面写注释,您就可以在帮助中看到它。

除了上面提到的特性之外,python还有一些小技巧,还有一些其他的答案。尽管它们中的许多都是语法上的糖,但它们可以使程序更有python:使用槽使成员静态,您可以节省大量的内存。装饰器,常用的功能,例如函数计时,也可以用来生成新的函数签名。函数签名可以影响传递检查和ide完成,这对于具有不确定的长参数的函数非常有用。许多库使用这种方法来处理不同版本的API。生成器,它可以为仅仅遍历数据保存大量的内存。参数也展开了。

典型的例子是zip(listx)和链(listx),它们分别对应于转置和连接。如果name==“main”:检查主程序是否被调用,主程序必须与多处理并行使用这个框。例如,枚举将列表转换为list2index可以用于((x,I)for I,枚举列表中的x(listx))namedtuple,生成类似于C语言的结构,并支持所有元组的语法。不初始化该词的defaultdictionary可以使用lambda来实现嵌套结构默认的结构的嵌套结构(lambda:defaultdictionary(int)),或者甚至是递归字典树=lambda:defaultdictionary(树)

参考技术A

Python是我们程序猿特别喜欢用的一种编程语言,在使用的时候有些功能有种黑魔法的感觉,我就列举几个我个人感觉还不错的用法。


调试Linux API的交互式运行环境

REPL的优点是不言而喻的,它可以大大提高开发和调试的效率。特别是当您需要快速验证API时。我第一次使用GDB来做一些与REPL有关的事情,但是在所有操作都很复杂的时候,交互的功能是有限的。有了ctypes,更容易,ctypes提取函数,可以直接在Python的级别上使用一个小包装,这个的使用是不需要编译或者连接的,只要保持他正常的运行状态,结果就会直接出现。

ctypes作为胶水

在这里Ctypes起了很大的作用,很多人都会利用这一点,它不仅增强了python的语言能力,而且从过程调用和统一协议级别的脱水到脱水的二进制级别。这样,c++对于C就不那么重要了。这是很明显的一个作用,很多人都看到这一点选择了这种语言编程。

ctypes与系统编程

我们从Ctypes与系统编程的方面来看,它对于python还有很多其他的作用,它使这种语言的系统编程的能力增强了很多。从那以后,系统编程的代码也变得更加优雅。SDN / VPC解决方案需要做出更多调整内核协议栈。从管理层面来说,网络配置是集中控制和分布式的。因此,主机有一个程序可以起到保护作用,也给他们之间的通讯提供了保障。

以上是关于Python都有哪些黑魔法?的主要内容,如果未能解决你的问题,请参考以下文章

Python黑魔法

实战丨Python黑魔法之描述符

python Metaclass黑魔法

Python __super 黑魔法失败了

Python的黑魔法@property装饰器的使用技巧

Python黑魔法 --- 异步IO( asyncio) 协程