-
们也很难把原函数的所有必要属性都一个一个复制到新函数上,所以Python内置的functools可以用来自动化完成这个“复制”的任务查看全部
-
要实现带参数的@performance,就需要实现: my_func = performance('ms')(my_func) 需要3层嵌套的decorator来实现。查看全部
-
* 用来传递任意个无名字参数,这些参数会一个Tuple的形式访问;**用来处理传递任意个有名字的参数,这些参数用dict来访问。查看全部
-
一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。查看全部
-
def __call__(self, num): a, b, L = 0, 1, [] for n in range(num): L.append(a) a, b = b, a + b return L查看全部
-
__slots__是指一个类允许的属性列表查看全部
-
即使__init__.py是空文件,也必须要存在查看全部
-
def ignore_case(x, y): return cmp(x.lower(), y.lower()) sorted_ignore_case = functools.partial(sorted, cmp=ignore_case) 经实验,如果把functools.partial(sorted, cmp=ignore_case)中的cmp换成其他名字,会报错,这证明这个参数名字需要特定的名称,也即是原函数中规定的参数名字(本例中原函数名是sorted(iterable, cmp=None, key=None, reverse=False))查看全部
-
functools.partial就是帮助我们创建一个偏函数.所谓偏函数是指通过固定参数来使用某函数的部分功能. 如: 进制转换函数int(x, y),将x转为y进制数 若固定想转换为2进制,每次传入y=2太过繁琐,重新定义函数 def int2(x): return int(x, base=2) 也有些麻烦,所以使用functools.partial,不需要我们自己定义int2() >>> import functools >>> int2 = functools.partial(int, base=2) >>> int2('1000000') 64 >>> int2('1010101') 85查看全部
-
@property def grade(self): if self.__score >= 80: return 'A' elif self.__score >= 60: return 'B' else: return 'C'查看全部
-
装饰器函数,可以用装饰器函数把 get/set 方法“装饰”成属性调用:查看全部
-
在Python 3.x中,字符串统一为unicode,不需要加前缀 u,而以字节存储的str则必须加前缀 b。查看全部
-
由于decorator返回的新函数函数名已经不是'f2',而是@log内部定义的'wrapper'。这对于那些依赖函数名的代码就会失效。decorator还改变了函数的__doc__等其它属性。如果要让调用者看不出一个函数经过了@decorator的“改造”,就需要把原函数的一些属性复制到新函数中 Python内置的functools可以用来自动化完成这个“复制”的任务,注意@functools.wraps应该作用在返回的新函数上 import functools def log(f): @functools.wraps(f) def wrapper(*args, **kw): print 'call...' return f(*args, **kw) return wrapper查看全部
-
利用import ... as ...,还可以动态导入不同名称的模块。 try: import json except ImportError: import simplejson as json print json.dumps({'python':2.7})查看全部
-
try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。查看全部
举报
0/150
提交
取消