总结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实现的重启关机程序实例
Aug 21 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
pycharm中连接mysql数据库的步骤详解
May 02 Python
详解appium+python 启动一个app步骤
Dec 20 Python
Python实现OpenCV的安装与使用示例
Mar 30 Python
python 实现对文件夹中的图像连续重命名方法
Oct 25 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 Python
Python实现定时监测网站运行状态的示例代码
Sep 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的FTP学习(三)
2006/10/09 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
php cookie 详解使用实例
2016/11/03 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
javascript 图片裁剪技巧解读
2012/11/15 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python 爬虫请求模块requests详解
2020/12/04 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
幼儿园大班毕业感言
2014/02/06 职场文书
初级党校心得体会
2014/09/11 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
房产公证书样本
2015/01/23 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
公司职员入党自传书
2015/06/26 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
详解 TypeScript 枚举类型
2021/11/02 Javascript
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers