网站首页 > 技术文章 正文
1: 简单示例
对于 Python,Guido van Rossum(python语言的创立者) 将语句分组基于缩进。冒号 : 用于声明缩进代码块,如以下示例所示:
class ExampleClass:
# 属于一个类的每个函数都必须同样缩进
def __init__(self):
name = "example"
def someFunction(self, a):
# 注意属于函数的所有内容都必须缩进
if a > 5:
return True
else:
return False
# 如果函数没有缩进到同一级别,则不会被视为父类的一部分
def separateFunction(b):
for i in b:
# 循环也是缩进的,嵌套条件开始新的缩进
if i == 1:
return True
return False
separateFunction([2,3,5,6,1])
制表符和空格?
建议的缩进为 4 个空格,但可以使用制表符或空格,只要它们在整个文件中保持一致即可。不要在一个文件中混合使用制表符和空格,因为这会导致出现错误。
2: 如何解析缩进
缩进产生的空白在解析之前由解析器处理。
解析器使用堆栈来存储缩进级别。开始时,堆栈仅包含值 0,这是最左侧的位置。每当嵌套块开始时,新的缩进级别就会被推送到堆栈上,并且 “INDENT” 标记会被插入并传递给解析器的标记流中。一行中不能有多个 “INDENT” 标记 ,这将产生 IndentationError 的报错。
当遇到具有较小缩进级别的行时,将从堆栈中弹出值,直到顶部有一个值等于新的缩进级别(如果未找到,则会发生语法错误)。对于弹出的每个值,都会生成一个 “DEDENT” 标记。显然,一行中可以有多个 “DEDENT” 标记。
解析器会跳过仅包含空格和可能的注释的空行,并且永远不会为它们生成“INDENT”或“DEDENT”标记。
在源代码的末尾,为堆栈上留下的每个缩进级别生成 “DEDENT” 标记,直到只剩下 0。
例如:
if foo:
if bar:
x = 42
else:
print foo
解析为下面这个样子:
<if> <foo> <:> [0]
<INDENT> <if> <bar> <:> [0, 4]
<INDENT> <x> <=> <42> [0, 4, 8]
<DEDENT> <DEDENT> <else> <:> [0]
<INDENT> <print> <foo> [0, 2]
<DEDENT>
解析器将 “INDENT” 和 “DEDENT” 令牌作为区块分隔符处理。
3: 缩进的错误示范
间距应均匀一致。不正确的缩进可能会导致 IndentationError 或导致程序执行意外操作。以下示例引发 IndentationError:
a = 7
if a > 5:
print "foo"
else:
print "bar"
print "done"
或者,如果冒号后面的行没有缩进,也会引发 IndentationError:
if True:
print "true"
如果你在不属于它的地方添加缩进,同样会引发 IndentationError:
if True:
a = 6
b = 5
如果忘记取消缩进,则功能可能会丢失。在此示例中,返回 None 而不是预期的 False:
def isEven(a):
if a%2 ==0:
return True
# this next line should be even with the if
return False
print isEven(7)
猜你喜欢
- 2025-01-18 如何编写 Python 程序,大佬教你玩转Python。
- 2025-01-18 python基础语法看一篇就够了,全网最全python语法笔记汇总
- 2025-01-18 Python的基础知识
- 2025-01-18 一学就废|Python基础碎片,函数
- 2025-01-18 Python的条件判断
- 2025-01-18 4 Python语句和语法
- 2025-01-18 从零开始学习python(5)——分支与循环结构
- 2025-01-18 教你学习Python基础语法
- 2025-01-18 「Python程序设计」基础语法:程序的注释、行与缩进
- 2025-01-18 python的基本语法
- 258℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 83℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)