Python 语句的表达式与缩进详解
本文深入解析Python语句的核心概念,涵盖表达式与赋值语句的区别、增强赋值语法、多行语句的显式与隐式续行方式,以及Python独特的缩进规则。重点讲解内存管理机制、Interning策略及PEP 8规范,帮助开发者编写规范高效的Python代码。
一、Python 中的语句
1.1什么是声明?
Python 解释器执行的逻辑指令称为语句。在Python 语言中,语句主要分为表达式和赋值语句两类。
赋值语句构成了Python 程序逻辑的基础,它定义了如何创建表达式并将结果保存到对象中。
1.2什么是表达式
表达式是中的一种语句类型,由数字、字符串、对象和运算符按逻辑顺序组合而成。常量值本身以及变量名都是有效的表达式。
通过表达式,可以执行加法、减法、字符串连接等运算,也可以调用函数并获取评估后的结果。
例子:
# 使用算术表达式 >>> ((10 + 2) * 100 / 5 - 200) 40.0 # 在表达式中使用函数 >>> pow(2, 10) 1024 # 在表达式中使用 eval >>> eval( "2.5+2.5" ) 5.0
1.3简单的赋值语句
简单的赋值操作涉及创建新变量、赋予初始值或修改变量值。该语句包含一个表达式和一个用于标识保存结果的变量名。
# Syntax variable = expression # LHS <=> RHS
接下来详细分析Python 中的三种典型赋值语句,以理解其内部机制。
案例 1:右侧 (RHS) 仅包含基于值的表达式。
首先考察中最基础的赋值形式。
>>> test = "Learn Python"
Python会在内存中创建字符串“Learn Python”,并将其绑定到名称“test”。可以使用内置函数 id() 来查看该对象在内存中的地址。
>>> test = "Learn Python" >>> id(test) 6589040
该地址标识了数据在内存中的具体位置。这里有两个值得注意的关键点。
- 如果创建另一个具有相同值的字符串,Python通常会创建一个新对象并分配至内存中的不同位置。此规则适用于大多数情况。
>>> test1 = "Learn Python" >>> id(test1) 6589104 >>> test2 = "Learn Python" >>> id(test2) 6589488
- 然而,在以下两种特定场景中,Python会复用相同的内存地址。
字符串不包含空格且字符数少于 20 个。
整数数值位于 -5 到 +255 的范围内。
这一机制被称为Interning。Python 通过这种方式优化内存使用。
案例 2:右侧 (RHS) 为现有的变量。
讨论另一种赋值类型,其中RHS 指向当前Python 变量。
>>> another_test = test
上述语句不会在内存中触发新的对象分配,两个变量名指向相同的内存地址。这相当于为现有对象创建别名。可以使用 id() 函数验证这一现象。
>>> test = "Learn Python" >>> id(test) 6589424 >>> another_test = test >>> id(another_test) 6589424
案例 3:右侧 (RHS) 包含运算操作。
在此类语句中,赋值结果取决于运算的最终输出。通过以下示例进行分析。
>>> test = 2 * 5 / 10 >>> print(test) 1.0 >>> type(test) <class 'float'>
在上面的例子中,赋值操作会创建一个“float”类型的变量。
>>> test = 2 * 5 >>> print(test) 10 >>> type(test) <class 'int'>
在这个例子中,赋值操作将创建一个“int”类型的变量。
1.4增强赋值语句
可以在赋值操作中结合算术运算符,形成增强赋值语句。
查看以下示例以了解增强赋值语句的具体用法。
x += y
上述语句是下方简单语句的简写形式。
x = x + y
下一个示例展示了向元组添加新元素的过程。
>>> my_tuple = (10, 20, 30) >>> my_tuple += (40, 50,) >>> print(my_tuple) (10, 20, 30, 40, 50)
再一个示例使用元音列表,演示如何将缺失的元音添加到列表中。
>>> list_vowels = ['a','e','i'] >>> list_vowels += ['o', 'u',] >>> print(list_vowels) ['a', 'e', 'i', 'o', 'u']
二、Python 中的多行语句
通常,每个Python 语句以换行符结束。但我们可以使用行继续符 () 将其扩展至多行。
Python 提供了两种在程序中启用多行语句的方法。
2.1显式续行
当立即使用行继续符 () 将语句拆分为多行时。
例子:
# 使用多行语句初始化列表 >>> my_list = [1, \ ... 2, 3\ ... ,4,5 \ ... ] >>> print(my_list) [1, 2, 3, 4, 5] # 使用多行语句计算表达式 >>> eval ( \ ... " 2.5 \ ... + \ ... 3.5") 6.0
2.2隐式续行
隐式续行是指利用括号 ( )、方括号 [ ] 或大括号 { } 中的任一种来拆分语句。需要将目标语句包裹在提到的构造中。
例子:
>>> result = (10 + 100 ... * 5 - 5 ... / 100 + 10 ... ) >>> print(result) 519.95
另一个例子:
>>> subjects = [ ... 'Maths', ... 'English', ... 'Science' ... ] >>> print(subjects) ['Maths', 'English', 'Science'] >>> type(subjects) <class 'list'>
三、Python 缩进
许多高级编程语言(如 C、C++、C#)使用大括号 { } 来标记代码块。Python则通过缩进来实现代码块的界定。
表示函数体或循环体的代码块以缩进开始,以第一个未缩进的行结束。
3.1Python中的缩进有多少个空格?
Python 样式指南 (PEP 8) 规定缩进大小应保持为 4。然而,谷歌有其独特的风格指南,限制缩进最多两个空格。因此你也可以选择其他风格,但我们建议遵循 PEP8 标准。
3.2为什么缩进很重要?
大多数编程语言提供缩进功能以实现更好的代码格式,且通常不强制要求使用缩进。
但是在Python 中,必须严格遵守缩进规则。通常,我们将代码块中的每一行缩进四个空格(或保持一致的数量)。
在前几节的示例中,您可能已经看到我们编写了没有缩进的简单表达式语句。
然而,为了创建复合语句,缩进将是必不可少的。
例子:
def demo_routine(num):
print('I am a demo function')
if num % 2 == 0:
return True
else:
return False
num = int(input('Enter a number:'))
if demo_routine(num) is True:
print(num, 'is an even number')
else:
print(num, 'is an odd number')
现在,还可以观察到不恰当的缩进导致错误的场景。因此,让我们尝试对一个简单的表达式语句进行缩进。
>>> 6*5-10 File "<stdin>", line 1 6*5-10 ^ IndentationError: unexpected indent
到此这篇关于Python 语句的表达式和缩进的文章就介绍到这了,更多相关Python 表达式和缩进内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













