总结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 11 Python
Python复制目录结构脚本代码分享
Mar 06 Python
Python3.x版本中新的字符串格式化方法
Apr 24 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
django的登录注册系统的示例代码
May 14 Python
详解重置Django migration的常见方式
Feb 15 Python
Django 请求Request的具体使用方法
Nov 11 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
python绘制彩虹图
Dec 16 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
利用Python+OpenCV三步去除水印
May 28 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编程最快明白》第三讲:php数组
2010/11/01 PHP
php-fpm配置详解
2014/02/12 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
python实现汉诺塔方法汇总
2016/07/25 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python装饰器简单用法实例小结
2018/12/03 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
Python 绘制可视化折线图
2020/07/22 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
小学毕业感言300字
2014/02/19 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
企业委托书范本
2014/09/13 职场文书
贪污检举信范文
2015/03/02 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
龙猫观后感
2015/06/09 职场文书
暑假打工感想
2015/08/07 职场文书
四群教育工作总结
2015/08/10 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript