ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 2.5. 代码缩进 Python 函数没有明显的 `begin` 和 `end`,没有标明函数的开始和结束的花括号。唯一的分隔符是一个冒号 (`:`),接着代码本身是缩进的。 ## 例 2.5. 缩进 `buildConnectionString` 函数 ``` def buildConnectionString(params): """Build a connection string from a dictionary of parameters. Returns string.""" return ";".join(["%s=%s" % (k, v) for k, v in params.items()]) ``` 代码块是通过它们的缩进来定义的。我所说的“代码块”是指:函数、`if` 语句、`for` 循环、`while` 循环,等等。开始缩进表示块的开始,取消缩进表示块的结束。不存在明显的括号,大括号或关键字。这就意味着空白是重要的,并且要一致。在这个例子中,函数代码 (包括 `doc string`) 缩进了 4 个空格。不一定非要是 4 个,只要一致就可以了。没有缩进的第一行则被视为在函数体之外。 [例 2.6 “if 语句”](indenting_code.html#odbchelper.indenting.if "例 2.6. if 语句") 展示了一个 `if` 语句缩进的例子。 ## 例 2.6. `if` 语句 ``` def fib(n): print 'n =', n if n > 1: return n * fib(n - 1) else: print 'end of the line' return 1 ``` | | | | --- | --- | | \[1\] | 这是一个名为 `fib` 的函数,有一个参数 `n`。在函数内的所有代码都是缩进的。 | | \[2\] | 在 Python 中向屏幕输出内容非常容易,只要使用 `print` 即可。`print` 语句可以接受任何数据类型,包括字符串、整数和其它类型,如字典和列表 (我们将在下一章学习)。甚至可以混在一起输出,只需用逗号隔开。所有值都输出到同一行,用空格隔开 (逗号并不打印出来)。所以当用 `5` 来调用 `fib` 时,将输出“n = 5”。 | | \[3\] | `if` 语句是一种的代码块。如果 `if` 表达式计算为 true,紧跟着的缩进块会被执行,否则进入 `else` 块执行。 | | \[4\] | 当然 `if` 和 `else` 块可以包含许多行,只要它们都同样缩进。这个 `else` 块中有两行代码。对于多行代码块没有其它特殊的语法,只要缩进就行了。 | 在经过一些最初的抗议和几个与 Fortran 的嘲讽的类比之后,您会心平气和地对待代码缩进,并且开始看到它的好处。一个主要的好处就是所有的 Python 程序看上去都差不多,因为缩进是一种语言的要求而不是一种风格。这样就使得阅读和理解他人的 Python 代码容易得多。 > 注意 > Python 使用硬回车来分割语句,冒号和缩进来分割代码块。C++ 和 Java 使用分号来分割语句,花括号来分割代码块。 ## 进一步阅读 * _Python Reference Manual_ 讨论了交叉缩进问题,并且[演示了各种各样的缩进错误](http://www.python.org/doc/current/ref/indentation.html)。 * _Python Style Guide_ 讨论了良好的缩进风格。