大家好,又见面了,我是你们的朋友全栈君。
defcalc(numbers):
sum=0for n innumbers:
sum= sum + n *nreturnsumprint (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更容易理解
defcalc(numbers):
sum=0for n innumbers:
sum= sum + n *nprint(sum)print (calc([1,2,4]))
21None>>>
而缩进print
defcalc(numbers):
sum=0for n innumbers:
sum= sum + n *nprint(sum)print (calc([1,2,4]))
1
5
21None>>>
由于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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127910.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...