总结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中的多重继承实例讲解
Sep 28 Python
Python3使用requests发闪存的方法
May 11 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
快速查询Python文档方法分享
Dec 27 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
Python读取mat文件,并转为csv文件的实例
Jul 04 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
python 实现有道翻译功能
Feb 26 Python
详解Python类和对象内容
Jun 22 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 Python
pandas中对文本类型数据的处理小结
Nov 01 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
JAVA/JSP学习系列之二
2006/10/09 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
php判断访问IP的方法
2015/06/19 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
python中__call__内置函数用法实例
2015/06/04 Python
带你了解python装饰器
2017/06/15 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
python读写LMDB文件的方法
2018/07/02 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
python实现猜拳游戏
2020/03/04 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
2014迎国庆演讲稿
2014/09/19 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
十八大观后感
2015/06/12 职场文书
班主任工作总结范文
2015/08/13 职场文书
详解php中流行的rpc框架
2021/05/29 PHP