python 缩进问题
2016-07-20 23:55
357 查看
[b]介绍[/b]
在python中认为规定4个空格缩进,缩进的代码可以理解成一个块,但是使用缩进也需要注意有时不一样的缩进产生的结果会不一样,接下来就来看一个列子一、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
[b]总结[/b]
使用缩进要明白每一行缩进的意义,否则返回的结果可能不是正确的结果备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |
相关文章推荐
- Python性能优化
- 用python编写的简易端口扫描器
- Python学习挖坑
- python dict{}和set([])
- 桶排序,冒泡排序,快速排序算法Python实现
- Python 学习之路-基本的概念(三)
- python mvc框架django搭建项目
- python
- Learning Python 010 函数 2
- Learning Python 010 函数 2
- Python下的LibSVM的使用
- Python学习-2天--字符串操作
- python3提示sqlite3模块不存在解决方法
- python发送get/post/put/delete请求
- 使用sklearn实现朴素贝叶斯文本分类
- python核心编程学习笔记-2016-07-20-02-整型对象缓存
- python range()和arange()
- python 循环
- Python-print函数用法
- python文件结构