自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

转载 Python3 nonlocal

在Python 2.x中,闭包只能读外部函数的变量,而不能改写它。举例来说,这样是合法的:def a(): x = 0 def b(): print locals() y = x + 1 print locals() print x, y return ba()()而这样是非法的:def a(): x = 0 def b():

2016-04-28 20:04:58 1613

转载 Python 闭包

首先还得从基本概念说起,什么是闭包呢?来看下维基上的解释:有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。....上面提到了两个关键的地方:自由变量 和 函数, 这两个关键稍后再说。还是得在赘述下“闭包”的意思,望文知意,可以形象的把它理解为一个封闭的包裹,这个包裹就是一个函数,当然还有函数内部对应的逻辑,包裹里面的东西就是自由变量,自由变量可以在随着包裹

2016-04-28 19:57:00 265

原创 Python 没有多态

C++的多态表示: 基类指针指向派生类对象。 Python变量无类型,自然也就不存在多态。python是一种动态语言,参数在传入之前是无法确定参数类型的class A: def prt(self): print "A" class B(A): def prt(self): print "B"

2016-04-26 19:43:01 1023

转载 为什么 Python 不支持函数重载?

这个问题,最近在 cpyug 上面讨论得很火热。我简要概括一下。为了考虑为什么 python 不提供函数重载,首先我们要研究为什么需要提供函数重载。函数重载主要是为了解决两个问题。1。可变参数类型。2。可变参数个数。另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当

2016-04-26 19:31:52 1422

转载 Python @classmethod和@staticmethod区别

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别

2016-04-20 20:04:27 606

转载 Python 类成员函数第一个参数self

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObj

2016-04-20 19:44:58 6416

转载 Python Decorator 3: 嵌套

@decorator_one@decorator_twodef func(): pass等价于func = decorator_one(decorator_two(func))@decorator(arg1, arg2)def func(): pass等价于func = decorator(arg1,arg2)(func)带参数及多

2016-04-18 19:44:32 728

原创 Python decorator 2: 类

class myDecorator(object): def __init__(self, fn): print "inside myDecorator.__init__()" self.fn = fn def __call__(self): self.fn() print "inside myDecorato

2016-04-14 19:13:08 299

转载 Python decorator 1: 函数

A.把要装饰的方法作为输入参数,B.在函数体内可以进行任意的操作(可以想象其中蕴含的威力强大,会有很多应用场景),C.只要确保最后返回一个可执行的函数即可(可以是原来的输入参数函数, 或者是一个新函数)如果只需要在被包装函数执行前插入代码,decorator可以加上插入代码后返回原函数 (例1,3)如果需要在包装函数执行之前和之后都插入代码,decorator需要另加一个函

2016-04-13 19:51:04 310

转载 Python args kwargs

先来看个例子:def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '---------------------------------------'if __name__ == '__main__': foo(1,2,3,4) foo(a=1,

2016-04-11 19:47:33 375

转载 Python的getattr(),setattr(),delattr(),hasattr()

1. getattr()函数是Python自省的核心函数,具体使用大体如下:class A: def __init__(self): self.name = 'zhangjing'    #self.age='24' def method(self): print"method print" Instance =

2016-04-07 20:05:57 499

转载 Python public private

1. object # public2. __object__ # special, python system use, user should not define like it3. __object # private (name mangling during runtime)4. _object # obey python coding convention, consid

2016-04-06 19:55:07 1457

原创 Mix-in 类

为了解决多重继承的问题,Java引入了接口 (interface)技术,Lisp、Ruby引入了 Mix-in 技术。Mix-in 技术按一下规则来限制多重继承:继承用但一继承;第二个及两个以上的父类必须是 Mix-in 的抽象类。Mix-in 类是具有以下特征的抽象类:不能单独生成实例;不能继承普通类。class TagMixin(object):

2016-04-05 20:14:51 1680

转载 理解 Python super mro

今天在知乎回答了一个问题,居然一个赞都没有,也是神奇,毕竟这算是我非常认真答的题之一。既然如此就贴过来好了,有些内容之后再补充。原问题Python中既然可以直接通过父类名调用父类方法为什么还会存在super函数?比如class Child(Parent):    def __init__(self):    Parent.__init__(self)这种方式

2016-04-04 20:38:22 1665 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除