一、for...in迴圈
例:自定義一個函式 ,最後返回傳入值的平方相加
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum print (calc([1,2,4]))
上面的程式碼返回了正常在值:21
接下來把程式碼稍微改一下
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum print (calc([1,2,4]))
現在返回的值又是什麼呢:結果返回1
為什麼會返回1,仔細分析一下,程式碼我將return進行了縮排,這時return是基於for的每一個迴圈返回一個值,並且return當第一個條件滿足時就不在往下執行了,所以當傳入第一個1時,sum=0+1*1=1,return 1就不再進行後面的迴圈了。而return不縮排那麼return和for是同一級,當所有的for執行完後才執行return然後返回最終的結果
用將return替換成print更容易理解
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n print (sum) print (calc([1,2,4]))
21
None
>>>
而縮排print
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n print (sum) print (calc([1,2,4]))
1
5
21
None
>>>
由於prInt不像return不會滿足條件就不往下執行,所以列印出了每一次迴圈的值。
二、if..else
在if..else條件判斷中,一個塊裡面的語句都要保持縮排
def my_abs(x): if x>=0: x=x-1 return (x) else: x=x+1
在這裡return就必須縮排,如果和if保持一樣的話會導致後面的else定義失敗,因為if...elif..else需要保持一致縮排。
如果這樣寫就錯了:
def my_abs(x): if x>=0: x=x-1 return (x) else: x=x+1
由於return和if..else處於一樣的縮排,導致else關聯不上if
總結
使用縮排要明白每一行縮排的意義,否則返回的結果可能不是正確的結果
備註: 作者:pursuer.chen 部落格:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。 《歡迎交流討論》 |