总结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中的一些类型转换函数小结
Feb 10 Python
python通过floor函数舍弃小数位的方法
Mar 17 Python
python获取从命令行输入数字的方法
Apr 29 Python
八大排序算法的Python实现
Jan 28 Python
Python解惑之True和False详解
Apr 24 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
Python爬虫与反爬虫大战
Jul 30 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 Class 文章
2007/04/04 PHP
ajax php 实现写入数据库
2009/09/02 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
Laravel实现表单提交
2017/05/07 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
javascript 继承实现方法
2009/08/26 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
给Python入门者的一些编程建议
2015/06/15 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python 字典中的所有方法及用法
2020/06/10 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
如何通过jdbc调用存储过程
2012/04/19 面试题
小区门卫管理制度
2014/01/29 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
股东授权委托书范文
2014/09/13 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
会议室管理制度范本
2015/08/06 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
SQL Server中使用表变量和临时表
2022/05/20 SQL Server