分类 Python·语法 下的文章

Python中的abc模块


前言

《抽象基类(ABC)》中,基于C++讲述抽象基类。尽管Python设计上以鸭子类型为主,但仍有抽象基类(ABC)的一席之地,它被封装在了abc模块中供程序员使用。

abc模块有以下两个主要功能:

  • 某种情况下,判定某个对象的类型,如:isinstance(a, Sized)
  • 强制子类必须实现某些方法,即ABC类的派生类


Python传参陷阱


前言

简单的传参背后却藏匿着粗心就会完蛋的大坑。

默认传参

设计一个Python函数时,免不了用到默认传参;默认传参时,又免不了用到列表类型。如下面这样:

def add_elem_to_list(something, list_=[]):
    for i in something:
        list_.append(i)


两个不经意间的报错


前言

“你应该常回头看看,才不至于迷失。”——这是我近些日子工作中总结出的句子。

我在Python中总爱追求那些高大上的东西,什么元编程,什么异步,什么描述符……其实自己连最基本的语法也遗忘了。

说来惭愧!若不是组内测试人员的“胡搅蛮缠”,我可能会永远困顿在自己的骄傲自满里。好在终究在别人的敲击下清醒过来。下面有两个极小问题引发的报错,书此以谨记之!


yield的一些探索


开头

这篇内容看起来混乱,但其实是在为一个知识点服务:如何实现协程?

在有了明确的目标之后,就可以发现“混乱”都环绕在一个点上:如何手动切换函数的同时,捎上数据。

因能力有限,错漏处望各友不吝赐教。


类属性与实例属性


类属性

同一个类的多个实例共用一个类属性。

import random

class MyClass(object):
    # 类属性
    num = random.randrange(10000)

if __name__ == "__main__":
    myObjOne = MyClass()
    myObjTwo = MyClass()

    print(myObjOne.num == myObjTwo.num)

可以看到输出结果恒为True。