总结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标准库inspect的具体使用方法
Dec 06 Python
Python元组常见操作示例
Feb 19 Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
Aug 27 Python
Python的互斥锁与信号量详解
Sep 12 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
Python文件操作方法详解
Feb 09 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 Python
基于Python实现将列表数据生成折线图
Mar 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与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
py中的目录与文件判别代码
2008/07/16 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
python的dict判断key是否存在的方法
2020/12/09 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
python 递归相关知识总结
2021/03/03 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
会计实习期自我鉴定
2013/10/06 职场文书
自荐书格式
2013/12/01 职场文书
美术教师自我鉴定
2014/02/12 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
承诺书怎么写
2014/03/26 职场文书
励志演讲稿500字
2014/08/21 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL