随笔分类 -  python

摘要:PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。 打印PYTHONPATH: 注意:sys.path 也可以用 os.sys.path 替换,两个应该是同一个命令,推荐使用sys.path, 因为 os.sys.path 在python do 阅读全文
posted @ 2018-10-14 00:47 扫驴 阅读(14497) 评论(0) 推荐(0)
摘要:打印结果: hello world! 1 2 3 hello again! 说明:1.yield from后面必须跟可迭代对象 2.yield from会把from后面的迭代器带入当前迭代器中进行迭代 3.,为了更好的理解yield from的作用,以下用一个等效于上述代码执行流程的代码加以解释,上 阅读全文
posted @ 2018-08-31 17:57 扫驴 阅读(216) 评论(0) 推荐(0)
摘要:在py2中,比较函数是cmp,而在py3,cmp已经不存在了,Py3启用了新的比较方法 原来在py2中,a>b就会调用a对象中的__cmp__函数,而现在a>b会调用a对象中的__lt__函数。 阅读全文
posted @ 2018-08-17 18:19 扫驴 阅读(5633) 评论(0) 推荐(0)
摘要:a=1 print hasattr(a.__dict__) print hasattr(a.__class__.__dict__) 阅读全文
posted @ 2018-07-20 12:59 扫驴 阅读(379) 评论(0) 推荐(0)
摘要:getattr是返回对象属性value的函数,用法:getattr(object,attribute_name[,default]) 如果对象拥有属性,则返回属性value,如果对象没有该属性并且也没有定义__getattr__方法的时候,则要么抛出异常要么有default参数返回default值。 阅读全文
posted @ 2018-07-17 17:33 扫驴 阅读(296) 评论(0) 推荐(0)
摘要:cobtextlib模块用于简化上下文管理器,其内置装饰漆@contextmanager,我们通过编写一个被contextmanager装饰的generator来简化上下文管理。 阅读全文
posted @ 2018-07-17 14:34 扫驴 阅读(198) 评论(0) 推荐(0)
摘要:前言 携程与线程相比,携程省去了切换线程引起的开销,携程的切换都是我们指定的。正因为携程间的切换是由我们控制的,所以携程是没有锁的概念的,省去了解锁的麻烦 有人会问了,切换线程有什么开销啊?因为,线程是抢占式多任务,比如a线程执行的好好的,没遇到sleep叶没出现io,突然b线程抢走了执行权,这个时 阅读全文
posted @ 2018-07-13 12:45 扫驴 阅读(138) 评论(0) 推荐(0)
摘要:以上能揭示由asyncio模块创建的携程的运行过程 用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型 以上代码,首先aa执行,打印1,执行到yield from x,打印2,暂停,而这时,已经没有可执行的携程了,而程序并不会永远暂停下 阅读全文
posted @ 2018-07-12 23:12 扫驴 阅读(190) 评论(0) 推荐(0)
摘要:并且byte是无法修改的 而函数bytes()就是将参数转化为byte的函数 1当参数为数字时: >>> bytes(2) b'\x00\x00' >>> bytes(1) b'\x00' 2当参数为序列时,序列元素必须是0 <= x < 256,原因是一个字节占8位,8位二进制数的范围就是0到25 阅读全文
posted @ 2018-06-24 22:40 扫驴 阅读(874) 评论(0) 推荐(0)
摘要:运行结果: <_sre.SRE_Match object; span=(0, 5), match='dfgt5'> <_sre.SRE_Match object; span=(0, 2), match='t5'> 4 dfffgg ['5', '4', '5'] ['dgg', '', 't'] 注 阅读全文
posted @ 2018-06-19 18:35 扫驴 阅读(170) 评论(0) 推荐(0)
摘要:执行到os.fork()时,发起fork系统调用,操作系统复制父进程得到子进程。fork系统调用完毕,返回给父进程子进程的id号,返回给子进程0,然后父子进城开始执行。我们可以看到haha被打印了两次,更加说明了子进程是复制父进程得来的 再举个例子,说明子金成是复制父进程: 子进程正常打印了ppp的 阅读全文
posted @ 2018-06-02 23:12 扫驴 阅读(419) 评论(0) 推荐(0)
摘要:以上两个函数报的错误全是,本地变量在未分配前引用了 调用这个函数时,Python解释器会先生成命名空间。当发现有条语句对a进行了赋值操作,pytgon就认为这个a是局部变量,就会把a这个变量添加到自己的局部命名空间。任何变量,都要先赋值然后才能引用,否则报错。就像下面这个 当然了,可以事先加glob 阅读全文
posted @ 2018-05-04 07:53 扫驴 阅读(1830) 评论(0) 推荐(1)
摘要:转载自https://www.cnblogs.com/MnCu8261/p/6365665.html 实际上,实例化类时调用的第一个方法并不是__init__,而是__new__,其作用正是创建并返回我们要创建的类的对象,然后才是执行__init__方法(如果类中有定义的话) 好了,接下来是重点: 阅读全文
posted @ 2018-05-02 18:17 扫驴 阅读(174) 评论(0) 推荐(0)
摘要:转载自大神http://www.cnblogs.com/vipchenwei/p/7121720.html 简单来说就是一个类只能创建唯一的实例 4.应用场景 需要频繁实例化然后销毁的对象。 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。 有状态的工具类对象。 频繁访问数据库或文件的对象。 阅读全文
posted @ 2018-05-02 17:55 扫驴 阅读(143) 评论(0) 推荐(0)
摘要:在许多语言当中,类似于a.b()这样的调用方法是一个整体,但在Python中,它其实是两部分:获取属性a.b,调用()。所以也可以写成: c = a.b c() 2.关于继承 class a: num=5 class b(a): pass print (b.num)#b类继承了num属性,结果是不仅 阅读全文
posted @ 2018-05-01 14:06 扫驴 阅读(165) 评论(0) 推荐(0)
摘要:这是第一种情况,就是在没加装饰器的情况下,实例调用的方法就称之为绑定方法,类调用的方法就是非绑定方法。实例调用绑定方法时总是会给方法传递他自己本身作为第一个参数。无论是在py2还是在py3下。而对于非绑定方法,py2要求必须给方法传递类的对象作为第一个参数。所以在定义方法的时候参数不能为空,否则报错 阅读全文
posted @ 2018-05-01 13:58 扫驴 阅读(243) 评论(0) 推荐(0)
摘要:备注:O==object 2.python-C3算法解析: #C3 定义引用开始 C3 算法:MRO是一个有序列表L,在类被创建时就计算出来。 L(Child(Base1,Base2)) = [ Child + merge( L(Base1) , L(Base2) , Base1Base2 )] L 阅读全文
posted @ 2018-04-28 07:01 扫驴 阅读(203) 评论(1) 推荐(0)
摘要:http://funhacks.net/2016/11/09/super/ super仅被用于新式类 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来实现,比如: 在上面,Animal 是 阅读全文
posted @ 2018-04-28 06:57 扫驴 阅读(181) 评论(0) 推荐(0)
摘要:以下只针对新式类,旧式类则无下列限制 多继承不可重复继承(或者说既当孙子又当儿子或者从孙子等等) class A: pass class B(A): pass class C(A,B): pass test=C() #重复继承 ,c继承了A表明他是a的儿子,但又继承了b表明他是a的孙子,那他到底是孙 阅读全文
posted @ 2018-04-27 10:46 扫驴 阅读(143) 评论(0) 推荐(0)
摘要:枚举有一个便捷的定义方式 上述例子,定义一个枚举类型 WeekEnd,并指定这个枚举类型的类标识也是'WeekEnd'(保持一致)(第二个WeekEnd为类标识。)。默认枚举成员的整数值member.value从1开始(如果不指定的话)。 枚举一旦创建好了,成员的name和value就都不可变更了 阅读全文
posted @ 2018-04-08 01:03 扫驴 阅读(181) 评论(0) 推荐(0)