总结Python编程中三条常用的技巧


Posted in Python onMay 11, 2015

在 python 代码中可以看到一些常见的 trick,在这里做一个简单的小结。
json 字符串格式化

在开发 web 应用的时候经常会用到 json 字符串,但是一段比较长的 json 字符串是可读性较差的,不容易看出来里面结构的。 这时候就可以用 python 来把 json 字符串漂亮的打印出来。

root@Exp-1:/tmp# cat json.txt 
{"menu": {"breakfast": {"English Muffin": {"price": 7.5}, "Bread Basket": {"price": 20, "desc": "Assortment of fresh baked fruit breads and muffins"}, "Fruit Breads": {"price": 8}}, "drink": {"Hot Tea": {"price": 5}, "Juice": {"price": 10, "type": ["apple", "watermelon", "orange"]}}}}
root@Exp-1:/tmp# 
root@Exp-1:/tmp# cat json.txt | python -m json.tool
{
  "menu": {
    "breakfast": {
      "Bread Basket": {
        "desc": "Assortment of fresh baked fruit breads and muffins",
        "price": 20
      },
      "English Muffin": {
        "price": 7.5
      },
      "Fruit Breads": {
        "price": 8
      }
    },
    "drink": {
      "Hot Tea": {
        "price": 5
      },
      "Juice": {
        "price": 10,
        "type": [
          "apple",
          "watermelon",
          "orange"
        ]
      }
    }
  }
}
root@Exp-1:/tmp#

else 的妙用

在某些场景下我们需要判断我们是否是从一个 for 循环中 break 跳出来的,并且只针对 break 跳出的情况做相应的处理。这时候我们通常的做法是使用一个 flag 变量来标识是否是从 for 循环中跳出的。 如下面的这个例子,查看在 60 到 80 之间是否存在 17 的倍数。

flag = False
for item in xrange(60, 80):
  if item % 17 == 0:
    flag = True
    break

if flag:
  print "Exists at least one number can be divided by 17"

其实这时候可以使用 else 在不引入新变量的情况下达到同样的效果

for item in xrange(60, 80):
  if item % 17 == 0:
    flag = True
    break
else:
  print "exist"

setdefault 方法

dictionary 是 python 一个很强大的内置数据结构,但是使用起来还是有不方便的地方,比如在多层嵌套的时候我们通常会这么写

dyna_routes = {}
method = 'GET'
whole_rule = None
# 一些其他的逻辑处理
...
if method in dyna_routes:
  dyna_routes[method].append(whole_rule)
else:
  dyna_routes[method] = [whole_rule]

其实还有一种更简单的写法可以达到同样的效果

self.dyna_routes.setdefault(method, []).append(whole_rule)

或者可以使用 collections.defaultdict 模块

import collections
dyna_routes = collections.defaultdict(list)
...
dyna_routes[method].append(whole_rule)

Python 相关文章推荐
Python使用minidom读写xml的方法
Jun 03 Python
Python的Django框架中设置日期和字段可选的方法
Jul 17 Python
利用python将图片转换成excel文档格式
Dec 30 Python
一道python走迷宫算法题
Jan 22 Python
python使用Matplotlib画条形图
Mar 25 Python
带你认识Django
Jan 15 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
mac使用python识别图形验证码功能
Jan 10 Python
基于python实现对文件进行切分行
Apr 26 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
python实现二分查找算法
Sep 18 Python
python求解水仙花数的方法
May 11 #Python
pymongo为mongodb数据库添加索引的方法
May 11 #Python
python判断windows系统是32位还是64位的方法
May 11 #Python
Python中使用装饰器时需要注意的一些问题
May 11 #Python
python在linux系统下获取系统内存使用情况的方法
May 11 #Python
Python实现登录人人网并抓取新鲜事的方法
May 11 #Python
python实现中文输出的两种方法
May 09 #Python
You might like
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
ThinkPHP模板中数组循环实例
2014/10/30 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
python文件和目录操作函数小结
2014/07/11 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
员工入职担保书范文
2014/04/01 职场文书
幼儿园开学寄语
2014/04/03 职场文书
中专生自荐信
2014/06/25 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书