-
isinstance(object, classinfo)
其中,object 是变量,classinfo 是类型即 (tuple,dict,int,float,list,bool等) 和 class类。
若参数 object 是 classinfo 类的实例,或者 object 是 classinfo 类的子类的一个实例, 返回 True。
若 object 不是一个给定类型的的对象, 则返回结果总是False。查看全部 -
对于decorator的使用的总结:
作用:decorator,就跟它的名称一样:修饰,包装。简单说就是给原来的函数添加一些新功能。这种可以是批量级的处理,能减少我们的工作量。
无参数的decorator:在里面封装一个函数即可;
如def performance(): 内部定义一个,一个,一个函数就可以了
有参数的decorator():在里面封装两个函数!!
import time
def performance(unit): #用来接收装饰函数的参数 unit
def performance_decorator(f): #接收需要装饰的函数 f
def wrapper(*args, **kw): #接收实际函数所需要的参数 (*args, **kw)
t1 = time.time()
f(*args, **kw) #运行实际的函数 f
查看全部 -
估计很多人没懂这个吧(self.p * r.q + self.q * r.p, self.q * r.q)
在这里p是分子,q是分母
(self.p * r.q + self.q * r.p)这是有理化计算后的分子
(self.q * r.q)这是有理化计算后的分母
r.q是令一个加数的分子,r.p是另一个加数的分母
例如:1/3+3/2 第一个分数的分子乘第二个分数的分母+第一个分数的分母乘第二个分数的分子(也就是交叉相乘再相加)最后得11(这是经过计算后得到的结果的分子)
第一个分数的分母乘第二个分数的分母( self.q * r.q)得到结果是6
-------摘自评论区某位大神的平路,醍醐灌顶查看全部 -
def calc_prod(lst): def lazy_calc(): prod=1.0 for i in lst: prod*=i return prod return lazy_calc f = calc_prod([1, 2, 3, 4]) print f()查看全部
-
kw.iteritems() 是Python2的写法,Python3不支持
Python3的写法为 kw.items(),两个版本互不支持
setattr(x,y,z) 意思是:x.y = z
查看全部 -
1.面向对象编程
是一种程序设计范式
把程序看做不同对象的相互调用
对现实世界建立对象模型
基本思想:
类:用于定义抽象类型
实例:根据类的定义被创建出来
2.
在Python中,类通过 class 关键字定义
Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的
xiaoming = Person()
sorted(L1,lambda p1,p2:cmp(p1.name,p2.name))排序
self.__dict__.update(kw) 任意关键字参数
def __init__(self, name):
self.name = name
self._title = 'Mr'
self.__job = 'Student'
只有以双下划线开头的"__job"不能直接被外部访问。但是,如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多
预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。
以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。
3.
类是模板,而实例则是根据类创建的对象
实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。
类属性是直接绑定在类上的,所以,访问类属性不需要创建实例,就可以直接访问:
print Person.address 可以修改
当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。
实例的方法就是在类中定义的函数,它的第一个参数永远是 self
方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法
p1.get_grade = types.MethodType(fn_get_grade, p1, Person)
@classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls
因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用
查看全部 -
capitalize() 首字母大写,其余全部小写
upper() 全转换成大写
lower() 全转换成小写
title() 标题首字大写,如"i love python".title() "I love python"查看全部 -
装饰器学习:
http://blog.csdn.net/xiangxianghehe/article/details/77170585###;
http://python.jobbole.com/82344/查看全部 -
Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。 如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性。 以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。查看全部
-
* 用来传递任意个无名字参数,这些参数会一个Tuple的形式访问;**用来处理传递任意个有名字的参数,这些参数用dict来访问。查看全部
-
定义decorator def log(f): #定义装饰器高阶函数,以要装饰的函数f作为参数 def fn(x): #内部相当于重构要装饰的函数f,重命名为fn print 'call ' + f.__name__ + '()...' #加特技print return f(x) #为了不重写原来的函数f的代码,所以用return f(x)代替原来的代码。 return fn 将被装饰过的新的函数fn返查看全部
-
python3 sorted取消了对cmp的支持。 python3 帮助文档: sorted(iterable,key=None,reverse=False) key接受一个函数,这个函数只接受一个元素,默认为None reverse是一个布尔值。如果设置为True,列表元素将被倒序排列,默认为False 着重介绍key的作用原理: key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None 。查看全部
-
Python设计语言中的pass语句是一种占位语句,不做任何作用,主要用来保持代码格式的完整性。查看全部
-
带参数的decorator需要三层嵌套,是因为: 最里一层,必然是一个参数列表为(*args,**kw)的wrapper,执行自身逻辑与运行目标函数,返回的是目标函数的执行结果; 倒数第二层,必然是一个参数列表为(f)的函数,用来接受目标函数,以供wrapper调用(闭包),并返回wrapper; 如果是无参数decorator,这时已经够了,python解释器会自动把@decorator转换成 f=decorator(f); 但如果是有参数decorator,还需要最后一层,因为还有一个decorator自身的参数要传递以供内部闭包使用。因此,最外一层就是decorator,参数列表为decorator自身需要的参数列表,返回的其实还是内部的wrapper。(因为外两层只为传递参数,并没有自身逻辑实现)查看全部
-
区分包和普通目录:包下面必须有一__init.__.py文件,即使它是个空文件查看全部
举报