Python Tricks 若干

來源:互聯網
上載者:User

標籤:

趙斌 — APRIL 29, 2015
在 python 代碼中可以看到一些常見的 trick,在這裡做一個簡單的小結。

json 字串格式化

在開發 web 應用的時候經常會用到 json 字串,但是一段比較長的 json 字串是可讀性較差的,不容易看出來裡面結構的。 這時候就可以用 python 來把 json 字串漂亮的列印出來。

[email protected]:/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"]}}}}[email protected]:/tmp# [email protected]:/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"                ]            }        }    }}[email protected]:/tmp# 
else 的妙用

在某些情境下我們需要判斷我們是否是從一個 for 迴圈中 break 跳出來的,並且只針對 break 跳出的情況做相應的處理。這時候我們通常的做法是使用一個 flag 變數來標識是否是從 for 迴圈中跳出的。 如下面的這個例子,查看在 60 到 80 之間是否存在 17 的倍數。

flag = Falsefor item in xrange(60, 80):    if item % 17 == 0:        flag = True        breakif 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        breakelse:    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 collectionsdyna_routes = collections.defaultdict(list)...dyna_routes[method].append(whole_rule)

本文作者系OneAPM工程師趙斌 ,想閱讀更多好的技術文章,請訪問OneAPM官方技術部落格。

Python Tricks 若干

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.