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
本文通过具体的Python函数示例,详细解释了代码缩进对于函数内部流程控制的重要性,特别是return语句的位置如何影响函数的执行结果。同时探讨了if...else条件判断中的缩进规则。
7501

被折叠的 条评论
为什么被折叠?



