Python Tricks 若干
在 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 方法
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)
本文作者系OneAPM 工程师赵斌 ,想技术文章,请访问 OneAPM 官方技术博客。
Python Tricks 若干相关推荐
- python中若干关于类的问题
文章目录 前言 类的构造 类的方法 前言 本文介绍python中若干关于类的难题,这些问题或者概念竟然让人无法理解或者混淆.因而记录下来,若想到新的会继续更新. 类的构造 我们只知道__init__( ...
- Python Tricks : Function Argument Unpacking
Python Tricks: Function Argument Unpacking A really cool but slightly arcane feature is the ability ...
- 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 ...
- python输入若干个整数试找出其中的最大数和最小数_Python编程的若干个经典小技巧...
1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:x,y= 10,20 print(x,y) x,y= y,x print(x,y) #1 ...
- Python Tricks(十九)—— switch 的实现
python 原生语法不支持 switch,体现了 Python 大道至简的设计思路,有时为了避免啰嗦的 if elif等判断语句,我们可以用字典来代替 switch 的各分支,也即建立表达式和操作的 ...
- Python Tricks —— 使用 pywinrm 远程控制 Windows 主机
启用 WinRM 远程服务: winrm quickconfig 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人, ...
- Python Tricks(二十)—— 阶乘的极简实现
使用 reduce # 比如计算 9 的阶乘 >> reduce(lambda x, y: x*y, range(1, 9+1)) 362880 当然这里的 reduce 直接返回具体的数 ...
- python绘制若干颜色的菱形_Python turtle库绘制菱形的3种方式小结
Python turtle库绘制菱形的3种方式小结 绘制一个菱形四边形,边长为 200 像素.方法1和2绘制了内角为60和120度的菱形,方法3绘制了内角为90度的菱形. 方法1 ...
- python动态规划若干问题
转载自点此这个人的系列文章.动态规划和分治算法有点类似,分治一般用于子问题互相独立的情况,动态规划一般用于子问题重叠的情况. 首先上个简单的斐波那契数列,如果用递归: def digui(n):if ...
最新文章
- Jenkins常见问题解决(持续更新)
- 再见乱码:5分钟读懂MySQL字符集设置
- 中学计算机老师 当领导可能性,求分享,当中学计算机老师带信息学奥赛是怎样的感受 - 信息科学技术学院(EECS)版 - 北大未名BBS...
- Hibernate中通过annotaion配置SQLServer的存储过程
- ORIG1和ORIG2的运用
- 超全!嵌入式必懂的CAN总线一文讲通了
- 结构性约束事件聚合下的在线多目标跟踪方法
- zkcli远程连接_ZooKeeper客户端 zkCli.sh 节点的增删改查
- 企业SpringBoot 教程(五)springboot整合beatlsql
- leetcode 20. 有效的括号
- elixir官方入门教程 递归
- ASA 防火墙 工作原理与配置实例
- ASCII 码表对照 2
- beetl html模板,Spring Boot 2 中使用 beetl 模板引擎
- 随机梯度下降SGD算法原理和实现
- [rhel6.5]DHCP分配IP地址以及保留地址
- 1%大气密度也能飞?NASA把无人机送上火星,最具野心探测计划启动
- Flixel横板游戏制作教程(五)— Enemies
- STARK Low Degree Testing——FRI
- 什么是 5G CPE
热门文章
- 女性走夜路不安全?英国奇葩新招:无人机护航,关键时刻用光吓退张三
- 使用NeMo快速完成NLP中的信息抽取任务,英伟达专家实战讲解,内附代码
- 微软看了下“打工人”的脑电波,难怪视频会议总犯困!斯坦福:女性尤甚
- 用“大白话”精准搜图,OpenAI的CLIP惊艳了所有人 | 在线可玩
- python的__new__方法和__del__方法
- Typescript在Vue项目中的使用
- 常用的正则表达式分享
- javascript跨域解决方案
- kinect c++
- ASPJPEG图片处理组件安装和使用问题