在 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 = Truebreakif flag:print "Exists at least one number can be divided by 17"

其实这时候可以使用 else 在不引入新变量的情况下达到同样的效果

for item in xrange(60, 80):if item % 17 == 0:flag = Truebreak
else:print "exist"

setdefault 方法

dictionarypython一个很强大的内置数据结构,但是使用起来还是有不方便的地方,比如在多层嵌套的时候我们通常会这么写

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)

本文作者系OneAPM 工程师赵斌 ,想技术文章,请访问 OneAPM 官方技术博客。

Python Tricks 若干相关推荐

  1. python中若干关于类的问题

    文章目录 前言 类的构造 类的方法 前言 本文介绍python中若干关于类的难题,这些问题或者概念竟然让人无法理解或者混淆.因而记录下来,若想到新的会继续更新. 类的构造 我们只知道__init__( ...

  2. Python Tricks : Function Argument Unpacking

    Python Tricks: Function Argument Unpacking A really cool but slightly arcane feature is the ability ...

  3. Python Tricks:Python‘s Functions Are First-Class

    Python Tricks:Python's Functions Are First-Class Python's functions are first-class objects. You can ...

  4. python输入若干个整数试找出其中的最大数和最小数_Python编程的若干个经典小技巧...

    1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:x,y= 10,20 print(x,y) x,y= y,x print(x,y) #1 ...

  5. Python Tricks(十九)—— switch 的实现

    python 原生语法不支持 switch,体现了 Python 大道至简的设计思路,有时为了避免啰嗦的 if elif等判断语句,我们可以用字典来代替 switch 的各分支,也即建立表达式和操作的 ...

  6. Python Tricks —— 使用 pywinrm 远程控制 Windows 主机

    启用 WinRM 远程服务: winrm quickconfig 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人, ...

  7. Python Tricks(二十)—— 阶乘的极简实现

    使用 reduce # 比如计算 9 的阶乘 >> reduce(lambda x, y: x*y, range(1, 9+1)) 362880 当然这里的 reduce 直接返回具体的数 ...

  8. python绘制若干颜色的菱形_Python turtle库绘制菱形的3种方式小结

    Python turtle库绘制菱形的3种方式小结 绘制一个菱形四边形,边长为 200 像素.方法1和2绘制了内角为60和120度的菱形,方法3绘制了内角为90度的菱形. 方法1‪‬‪‬‪‬‪‬‪‬‮ ...

  9. python动态规划若干问题

    转载自点此这个人的系列文章.动态规划和分治算法有点类似,分治一般用于子问题互相独立的情况,动态规划一般用于子问题重叠的情况. 首先上个简单的斐波那契数列,如果用递归: def digui(n):if ...

最新文章

  1. Jenkins常见问题解决(持续更新)
  2. 再见乱码:5分钟读懂MySQL字符集设置
  3. 中学计算机老师 当领导可能性,求分享,当中学计算机老师带信息学奥赛是怎样的感受 - 信息科学技术学院(EECS)版 - 北大未名BBS...
  4. Hibernate中通过annotaion配置SQLServer的存储过程
  5. ORIG1和ORIG2的运用
  6. 超全!嵌入式必懂的CAN总线一文讲通了
  7. 结构性约束事件聚合下的在线多目标跟踪方法
  8. zkcli远程连接_ZooKeeper客户端 zkCli.sh 节点的增删改查
  9. 企业SpringBoot 教程(五)springboot整合beatlsql
  10. leetcode 20. 有效的括号
  11. elixir官方入门教程 递归
  12. ASA 防火墙 工作原理与配置实例
  13. ASCII 码表对照 2
  14. beetl html模板,Spring Boot 2 中使用 beetl 模板引擎
  15. 随机梯度下降SGD算法原理和实现
  16. [rhel6.5]DHCP分配IP地址以及保留地址
  17. 1%大气密度也能飞?NASA把无人机送上火星,最具野心探测计划启动
  18. Flixel横板游戏制作教程(五)— Enemies
  19. STARK Low Degree Testing——FRI
  20. 什么是 5G CPE

热门文章

  1. 女性走夜路不安全?英国奇葩新招:无人机护航,关键时刻用光吓退张三
  2. 使用NeMo快速完成NLP中的信息抽取任务,英伟达专家实战讲解,内附代码
  3. 微软看了下“打工人”的脑电波,难怪视频会议总犯困!斯坦福:女性尤甚
  4. 用“大白话”精准搜图,OpenAI的CLIP惊艳了所有人 | 在线可玩
  5. python的__new__方法和__del__方法
  6. Typescript在Vue项目中的使用
  7. 常用的正则表达式分享
  8. javascript跨域解决方案
  9. kinect c++
  10. ASPJPEG图片处理组件安装和使用问题