以下文字摘自:笨方法學python41
這裡是我們要討論的**:
cities['_find']=
find_city
city_found
=cities
['_find'
](cities
,state
)
你要記住乙個函式也可以作為乙個變數,``def find_city`` 比如這一句建立了乙個你可以在任何地方都能使用的變數。在這段**裡,我們首先把函式find_city
放到叫做 cities
的字典中,並將其標記為 '_find'
。這和我們將州和市關聯起來的**做的事情一樣,只不過我們在這裡放了乙個函式的名稱。
好了,所以一旦我們知道 find_city
是在字典中 _find
的位置,這就意味著我們可以去呼叫它。第二行**可以分解成如下步驟:
python 看到 city_found
= 於是知道了需要建立乙個變數。
然後它讀到 cities
,然後知道了它是乙個字典
然後看到了 ['_find']
,於是 python 就從索引找到了字典 cities
中對應的位置,並且獲取了該位置的內容。
['_find']
這個位置的內容是我們的函式 find_city
,所以 python就知道了這裡表示乙個函式,於是當它碰到 (
就開始了函式呼叫。
cities,
state
這兩個引數將被傳遞到函式 find_city
中,然後這個函式就被執行了。
find_city
接著從 cities
中尋找 states
,並且返回它找到的內容,如果什麼都沒找到,就返回乙個資訊說它什麼都沒找到。
python find_city
接受返回的資訊,最後將該資訊賦值給一開始的city_found
這個變數。
state
和 city
是...
作為引數傳遞給...
乙個函式,位置在...
'_find'
然後尋找,目的地為...
cities
這個位置...
最後賦值給 city_found.
還有一種方法讀它,這回是「由里向外」。
找到表示式的中心位置,此次為 ['_find']
.逆時針追溯,首先看到的是乙個叫 cities
的字典,這樣就知道了 cities 中的_find
元素。上一步得到乙個函式。繼續逆時針尋找,看到的是引數。
引數傳遞給函式後,函式會返回乙個值。然後再逆時針尋找。
最後,我們到了 city_found
= 的賦值位置,並且得到了最終結果。
數十年的程式設計下來,我在讀**的過程中已經用不到上面的三種方法了。我只要瞟一眼就知道它的意思了。甚至給我一整頁的**,我可以一眼瞄出裡邊的 bug 和錯誤。這樣的技能是花了超乎常人的時間和精力才鍛鍊得來的。在磨練的過程中,我學會了下面三種讀**的方法,它們是使用者幾乎所有的程式語言:
從前向後。
從後向前。
逆時針方向。
在閱讀《c語言程式設計》時候,也有降到怎麼處理複雜表示式的方法,在《the c programming language》中建議的是此處的第3中方法,不過叫的名字是「由里向外---一左一右」的方法
《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...
原始碼閱讀 Glide原始碼閱讀之with方法(一)
前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...
原始碼閱讀 Glide原始碼閱讀之load方法(二)
原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...