一、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 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須注明文章來源,且在文章開頭明顯處給明鏈接。 《歡迎交流討論》 |