总结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中的try和finally和with方法
May 05 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
python 调用win32pai 操作cmd的方法
May 28 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
20个常用Python运维库和模块
Feb 12 Python
浅谈flask源码之请求过程
Jul 26 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 Python
Python try except异常捕获机制原理解析
Apr 18 Python
使用python如何删除同一文件夹下相似的图片
May 07 Python
python办公自动化之excel的操作
May 23 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
一棵php的类树(支持无限分类)
2006/10/09 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
JavaScript函数详解
2014/11/17 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
详解 vue.js用法和特性
2017/10/15 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
体育教师工作总结的自我评价
2013/10/10 职场文书
直接有效的自我评价
2014/01/11 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
小程序实现侧滑删除功能
2022/06/25 Javascript