Python入门教程-03 缩进、if-else,及函数定义
来源:互联网 发布:sqlite 数据库锁定 编辑:程序博客网 时间:2024/05/22 10:56
1. 目的
本文讲解Python特有的、与代码组织相关的缩进规则,并以结构化条件语句进行示例。
因为对于初次接触Python的人员来讲,在阅读Python代码的时候,存在一个问题,即代码应该怎么看、一个Class的定义是到哪里结束的、一个函数到哪里结束的。如果这个问题不解答,就不能很好地在doing-by-learning中掌握Python。基于这个困惑,我们提前讲解Python的缩紧语法。
为了说明缩紧,本文结合讲解Python的条件语句。为了保持连贯性,接下来的几篇文章就把结构化或称模块化编程相关的语法快速过一边。之后,我们再详细介绍Python中大量使用的几种数据结构:字符串、列表、集合、字典等。
2. 语句块
通常大家学习的第一种编程语言就是C语言,接下来可能是C++或Java。在这几种语言中,已经了解了语句块的概念。举个例子:
#include <stdio.h>unsigned int Fibonacci(unsigned int n) { if (n == 0) return 0; if (n == 1) return 1; return Fibonacci(n - 1) + Fibonacci(n - 2);}int main() { printf("Fibonacci(10) = %d\n", Fibonacci(10)); return 0;}
上面代码中return 0;是当n取值0时的执行语句,其他值则不执行该语句;其他几个return语句也是如此。对于这种满足某种条件时要执行的一条或多条语句,我们就称为语句块。所有结构化的代码中均涉及这种语法。
因为上面的语句块是一条语句,如果是多条语句,则需要用一对花括号括起来。
那么在Python中,表示方法比较特殊,是用相同缩进的一条或多条语句来表示的。
3. if语句
3.1 布尔表达式
在 Python入门教程-02 变量 一文简单提到了布尔类型的变量。那么在Python,到底哪些值表示“布尔假”呢?这包括:
- 布尔逻辑假)False
- None
- (数字)0
- (空字符串)""
- (空集合)()
- (空列表)[]
- (空字典){}
除此之外都表示“布尔真”。这里就不再具体一一说明,在接下来的诸多例子中会大量涉及条件判断,大家逐步也就清楚Python的布尔逻辑了。
注1:关于以上取值,请参考Python官网的说明,地址:https://docs.python.org/3/reference/expressions.html#boolean-operations。摘录如下:
In the context of Boolean operations, and also when expressions are used by control flow statements, the following values are interpreted as false: False, None, numeric zero of all types, and empty strings and containers (including strings, tuples, lists, dictionaries, sets and frozensets). All other values are interpreted as true. User-defined objects can customize their truth value by providing a __bool__() method.
注2:False 与 None
以上的解读,并不意味着False=None。只是说明Python取"布尔假"的情况包括False, None等几种取值。在Python中,布尔取值为false,并不意味着该值就是False。进一步地,可以分析出现代码:
>>> type(False)<type 'bool'>>>> type(None)<type 'NoneType'>>>>
3.2 函数
因为前面的示例C代码中,用到了函数Fibonacci,为了对比,我们现在也开始介绍Python的这个功能,而且函数的定义正要用到Python的缩紧语法。——但更详细的函数语法放在下一篇文章中。
Python中,函数是以def作为关键字,后面跟函数的名称,接下来是一对圆括号;括号中是传递的各个参数;接下来是冒号。示例:
#!/usr/bin/env pythondef Fibonacci(n): if n == 0: return 0 if n == 1: return 1 return Fibonacci(n - 1) + Fibonacci(n - 2)print "Fibonacci(10) = %d\n", Fibonacci(10)
运行结果:
flying-bird@flyingbird:~/examples/python$ ./fibonacci.py Fibonacci(10) = %d55flying-bird@flyingbird:~/examples/python$
说明几点:
- 在Python中,不需要为变量指定数据类型,因此函数Fibonacci中的参数直接写变量n即可;
- 在Python中没有函数声明与定义分离的语法,如同这里,直接给出了函数的定义;
- def一行包括了函数名称、参数名称,最后以冒号:结束;
- 接下来就是函数体部分,这时就用到缩进语法了。缩进对应其他编程语言中的一对花括号;
- 缩紧并没有规定具体的缩紧量,即1个空格、2个空格,或者4个空格。Python并不要求具体的值,只需要在代码中保持一直即可;
- 用tab键进行缩紧也是可以的,但确实不推荐的。因为不同的文本编辑器下面tab占用的空格数不一定相同,有些编辑器自动把tab转换成空格,由此导致缩紧的值不受控制;
- 作为习惯,都是用空格进行缩紧;
- 通常使用2个空格或4个空格进行缩紧;——注意,仅仅是一种习惯;具体要和已有代码、当前团队的风格保持一致。
缩紧的几种情况:
- 函数的函数体部分需要缩进;
- if、elif、else,以及后面会提到的各种结构化控制(do-while, while-do, for等)需要缩进;
- class的各个成员函数;
3.3 if语句
在上面这个例子中,已经用到了if语句,对照示例也清楚了if的语法。简单来讲,
- if是关键字;
- 后面是条件表达式;——条件表达式有很多种,一一列举显然很枯燥;
- 接下来是冒号;
- 然后另起一行缩紧
除了if关键字,还有:
- elif:是else if的简写,但Python中不能用else if的写法;
- else
为了演示这几种用法,我们对上面的代码进行重构:
#!/usr/bin/env pythondef Fibonacci(n): if n == 0: return 0 elif n == 1: return 1 else: return Fibonacci(n - 1) + Fibonacci(n - 2)print "Fibonacci(10) = %d\n", Fibonacci(10)
4. 小结
- 在Python中,通过缩紧来表示语句块;
- 习惯上,使用2个或4个空格进行缩进。
- Python入门教程-03 缩进、if-else,及函数定义
- Python中if/else结构的缩进
- 2.8 python中的if...elif...else语句 [python入门教程]
- C#系列教程——if-else定义及使用
- python if-else
- python if else单行
- python学习:if...else
- Python中的if-else
- python简单学习 if else
- Python if elif else语句
- 3.1 Python if else语句
- Python之初识if:else:
- 【Python-2.7】if-elif-else
- python条件判断 if else
- if else及嵌套循环
- Python中的条件分支语句,if , else , else if
- if, else if, else
- if else if else
- 关于抽象
- Google CodeJam Qualification Round 2014
- python产生随机数,随机字符串
- 堆、栈、自由存储区、全局/静态存储区和常量存储区
- 摆扫式(whisk broom)和推扫式(push broom)卫星传感器
- Python入门教程-03 缩进、if-else,及函数定义
- spring框架的XML扩展特性:让spring加载和解析你自定义的XML文件
- 微信第三方开发中LBS回复提示申请的ak一直报开发者禁用了该ak的jsapi服务权限的错误
- 2014-4-13 今日随笔,忧伤写博客,高兴写播客。
- Android框架学习-——Action Bar
- android后台任务处理
- Cisco路由器启动过程
- Java hashCode() 和 equals()的若干问题解答
- 二零一四年,我又开始博客了