Python Tricks 若干】的更多相关文章

赵斌 - APRIL 29, 2015 在 python 代码中可以看到一些常见的 trick,在这里做一个简单的小结. json 字符串格式化 在开发 web 应用的时候经常会用到 json 字符串,但是一段比较长的 json 字符串是可读性较差的,不容易看出来里面结构的. 这时候就可以用 python 来把 json 字符串漂亮的打印出来. root@Exp-1:/tmp# cat json.txt {"menu": {"breakfast": {"E…
今天在运行的django的时候一直提示”系统错误“,如下 except Exception, ex: logger.error(printException()) return render_string("系统错误!") 便想当然的加入 except Exception, ex: logger.error(printException()) print ex return render_string("系统错误!") 可是一直没有输出错误原因,反复多次,竟然出现a…
1. cities = ['Marseille', 'Amsterdam', 'New York', 'Londom'] # the good way for i, city in enumerate(cities): print(i, city) 2. x_list = [1, 2, 3] y_list = [2, 4, 6] # the good way for x, y in zip(x_list, y_list): print (x, y) 3. x = 10 y = -10 # the…
__slots__是在python 2.2开始引入的一个新特性, 我们来看一下官方给出的解释. This class variable can be assigned a string, iterable, or sequence of strings with variable names used by instances. If defined in a new-style class, __slots__ reserves space for the declared variables…
python作为一个动态语言, 本身学习曲线比较平滑, 效率相比起来会比c++和java低一些. 脚本语言都是运行时编译的, 这个对于效率的影响是非常大的. 我借用参考1的代码, 加了点代码import time import time class Timer(object): def __init__(self): pass def __enter__(self): self.start = time.time() def __exit__(self, exception_type, exce…
我们都知道, python是一个强类型的语言, 也是一个动态类型的语言. 但是在python2.X系列中, 这个强类型是需要打折扣的, 是非常接近强类型. 我们来看下面的代码片段 In [1]: 'a' < 1000 Out[1]: False 字符串和整型居然可以比较, 这个是个非常奇怪的行为. 强类型的语言是不应该允许有这种类型间的隐式转换的, 所以这种比较应该是报错的才对. Java就是这样的一个语言. 不过强类型的语言中, 是可以各种数字类型之间存在隐式转换的. python的这个字符串…
简介 with是从2.5版本引入的一个语法. 这个语法本身是为了解决try..finally繁琐的释放各类资源(文件句柄, Lock等)的问题. 如果想在旧版本中使用这个功能, 直接引入future模块就可以. from __future__ import with_statement 举例简单说明一下没有with和有with的代码区别 try: dict_file = open("dict_file_path") for line in dict_file: print line,…
每个人在使用python的过程中都会遍历list和dict. List遍历 最常用最简单的遍历list的方法 a = ["a", "b", "c", "d"] # simple iterate for i in a: print i 但是, 如果我需要拿到list的index, 很多人可能会这样写 a = ["a", "b", "c", "d"]…
Python的method可以设置默认参数, 默认参数如果是可变的类型, 比如list, map等, 将会影响所有的该方法调用. 下面是一个简单的例子 def f(a=None, l=[]): if not a: return l l.append(a) return l if __name__ == "__main__": print f("a") print f("b") print f("b") print f(l=[]…
python是动态语言, 无需声明变量即可使用. 传递一个tuple, list或者dict等等方式, 有时候这种方式的使用不是很好. 对于tuple和list来说都是用下标的访问方式(即使用[]), 这种方式显得不够自然, 阅读代码的时候需要知道index对应的变量含义. 其实, 在python中有很多方式可以动态定义一个新变量, 让代码更具可读性. 动态定义一个新变量, 最简单的方式是使用locals()或者globals(), 两个方法的返回值是dict, 可以通过修改dict来增加新变量…