随笔分类 -  Python

摘要:profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述。Python中含有3个模块提供这样的功能,分别是cProfile, profile和pstats。这些分析器提供的是对Python程序的确定性分析。同时也提供一系列的报表生成工具,允许用户快速地检查分析结果。 阅读全文
posted @ 2017-04-20 20:52 sysnap 阅读(2276) 评论(0) 推荐(0)
摘要:用pdb调试有多种方式可选:1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前python -m pdb myscript.py 2 在程序中间插入一段程序,相对于在一般IDE里面打上断点然后启动debug,不过这种方式是hardcode的 imp 阅读全文
posted @ 2017-04-20 20:17 sysnap 阅读(255) 评论(0) 推荐(0)
摘要:1 注册回调函数 下面这个示例展示了通过URL的路由来调用相关注册的函数示例: class MyApp(): def __init__(self): self.func_map = {} def register(self, name): def func_wrapper(func): self.f 阅读全文
posted @ 2017-03-23 10:46 sysnap 阅读(261) 评论(0) 推荐(0)
摘要:1 装饰器无参数 class tracer: def __init__(self,func): self.calls = 0 self.func = func def __call__(self,*args): self.calls += 1 print('call %s to %s' %(self 阅读全文
posted @ 2017-03-22 15:55 sysnap 阅读(3341) 评论(0) 推荐(0)
摘要:1 装饰器参数 1.1 装饰器和被装饰函数都不带参数 """ 装饰器装饰一个函数时,究竟发生了什么 """ def decorator_hello(func): print("decorator_hello called") return func @decorator_hello def hell 阅读全文
posted @ 2017-03-22 11:59 sysnap 阅读(174) 评论(0) 推荐(0)
摘要:import可以导入俩种类型的文件 1 module通常模块为一个文件,直接使用import来导入就好了。可以作为module的文件类型有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。2 package通常包总是一个目录,可以使用import导入包,或者from + 阅读全文
posted @ 2017-03-21 14:10 sysnap 阅读(425) 评论(0) 推荐(0)
摘要:魔法方法 含义 基本的魔法方法 __new__(cls[, ...]) 1. __new__ 是在一个对象实例化的时候所调用的第一个方法2. 它的第一个参数是这个类,其他的参数是用来直接传递给 __init__ 方法3. __new__ 决定是否要使用该 __init__ 方法,因为 __new__ 阅读全文
posted @ 2017-03-21 14:04 sysnap 阅读(508) 评论(0) 推荐(0)
摘要:1 __dict__ 设想这样一个场景。有一个字典,从某个地方获取的,比如http请求发过来的,比如从redis中hgetall出来的。我要根据这个字典来构建一个对象。 比如类 class Person: def __init__(self,_obj): self.name = _obj['name 阅读全文
posted @ 2017-03-21 13:01 sysnap 阅读(1264) 评论(0) 推荐(0)
摘要:1 filter filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型) 比如 def f(x): return x % 2 ! 阅读全文
posted @ 2017-03-21 12:43 sysnap 阅读(207) 评论(0) 推荐(0)
摘要:lambda表达式在“:”后只能有一个表达式。也就是说,在def中,用return可以返回的也可以放在lambda后面,不能用return返回的也不能定义在python lambda后面。因此,像if或for或print这种语句就不能用于lambda中,lambda一般只用来定义简单的函数 Pyth 阅读全文
posted @ 2017-03-21 12:16 sysnap 阅读(1028) 评论(0) 推荐(0)
摘要:1 背景 C#中提供了属性Property这个概念,让我们在对私有成员赋值、获取时更加方便,而不用像C++分别定义set*和get*两个函数,在使用时也就像直接使用变量一样 class C(object): def __init__(self): self._x = None def getx(se 阅读全文
posted @ 2017-03-21 11:46 sysnap 阅读(196) 评论(0) 推荐(0)
摘要:1 staticmethod 在类里面把某个函数定义为静态函数,这样对该函数的调用不需要实例化后才能访问,也可以通过 类名.静态函数(args)来调用,比如 class Person: @staticmethod def static_method(): print("static_method c 阅读全文
posted @ 2017-03-20 19:53 sysnap 阅读(155) 评论(0) 推荐(0)
摘要:yield是个表达式而不仅仅是个语句,所以可以使用x = yield r 这样的语法, yield表达式可以接收send()发出的参数,yield表达式是跟send方法一起配合使用 send方法 next()和send()在一定意义上作用是相似的,区别是send()可以传递yield表达式的值进去, 阅读全文
posted @ 2017-03-20 18:40 sysnap 阅读(653) 评论(0) 推荐(0)
摘要:生成器基本概念 1 生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束 2 生成器表达式能做的事情列表解析基本都能处理,只不过在需要处理的序列比较大时,列表解析比较费内存,所以生成器可以用在需要节省内存的场景 3 生成器函数 阅读全文
posted @ 2017-03-20 16:25 sysnap 阅读(250) 评论(0) 推荐(0)
摘要:推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 列表推导式(list comprehension)最擅长的方式就是对整个列表分别做相同的操作,并且返回得到一个新的列表 如果只想打印出那些能被3整除的平方数,只需要通过添加一个if部分在推导式中就可以完成: 也可以增 阅读全文
posted @ 2017-03-20 15:40 sysnap 阅读(294) 评论(0) 推荐(0)
摘要:#py中,有些名称前后都会加上俩个下划线,是有特殊含义的#在Py中,由这些名字组成的集合所包含的方法称为 “魔法方法”。如果在你的对象中#实现了这些方法的其中某一个,那这些方法会被py自动调用,几乎没有必要自己调用。比如#构造方法,在类中定义 __init__就可以。class FooBar: va 阅读全文
posted @ 2013-11-25 20:52 sysnap 阅读(209) 评论(0) 推荐(0)