1. 标识符(Identifiers)
标识符是Python中用来命名变量、函数、类、模块等的名称。它是编程的基本构建块,必须遵守特定的规则,以确保代码的可读性和正确性。
规则
-
组成:标识符可以由字母(a-z、A-Z)、数字(0-9)和下划线(_)组成,但不能以数字开头。
-
大小写敏感:Python区分大小写,例如
myVar
和MyVar
是不同的标识符。 -
长度:没有严格限制,但建议保持简洁(PEP 8风格指南推荐)。
-
保留字:不能使用Python的关键字作为标识符(详见下一节)。
-
最佳实践:使用描述性名称,如
user_age
而不是a
,以提高代码可读性。避免使用特殊字符或空格。
示例
# 有效标识符
my_variable = 10
_userName = "Alice"
PI = 3.14159 # 常量通常全大写
# 无效标识符(会引发SyntaxError)
2nd_place = "Silver" # 以数字开头无效
my-var = 5 # 连字符无效
潜在陷阱
-
如果标识符与内置函数重名(如
list = [1,2,3]
),它会覆盖内置函数,导致后续代码出错。解决方法:使用del list
删除或避免重名。
标识符是Python中“命名一切”的基础,掌握它能让你写出更清晰的代码。
2. 关键字(Keywords)
关键字是Python语言预定义的保留字,具有特殊含义,不能用作标识符。它们定义了语言的核心结构,如控制流、数据类型等。
完整列表(Python 3.x)
Python的关键字包括:False
, None
, True
, and
, as
, assert
, async
, await
, break
, class
, continue
, def
, del
, elif
, else
, except
, finally
, for
, from
, global
, if
, import
, in
, is
, lambda
, nonlocal
, not
, or
, pass
, raise
, return
, try
, while
, with
, yield
。
如何查看
你可以使用keyword
模块来列出所有关键字:
import keyword
print(keyword.kwlist)
示例与用法
-
if
用于条件判断:if x > 0: print("Positive")
-
def
定义函数:def greet(): print("Hello")
潜在陷阱
-
尝试将关键字用作变量名会引发
SyntaxError
,如if = 5
。始终检查拼写,并使用工具如Pylint来避免。
关键字是Python的“词汇表”,理解它们能帮助你阅读和编写更复杂的代码。
3. 注释(Comments)
注释是代码中不被解释器执行的部分,用于解释代码逻辑、添加TODO或禁用代码。它们提升代码的可维护性,尤其在团队协作中。
类型
-
单行注释:以
#
开头,直到行尾。 -
多行注释:没有官方多行注释,但可以使用三引号字符串(
"""
或'''
)作为文档字符串,如果不赋值给变量,它不会执行。 -
文档字符串:函数或类开头的三引号字符串,用于生成文档。
示例
# 这是一个单行注释
x = 10 # 行尾注释
"""
这是一个多行注释。
它可以跨越多行。
"""
def my_function():
"""这是一个文档字符串,用于描述函数。"""
pass
最佳实践
-
注释应该解释“为什么”而不是“做什么”(代码本身已经说明了“做什么”)。
-
保持注释简洁,避免冗余。
-
潜在陷阱:过多注释会使代码杂乱;确保注释与代码同步更新。
注释是“代码的自述书”,养成写注释的习惯会让你成为更好的程序员。
4. 行与缩进(Lines and Indentation)
Python使用缩进来定义代码块,而不是大括号。这使得代码更具可读性,但也要求严格的缩进规则。
规则
-
缩进:使用4个空格(PEP 8推荐)或制表符(Tab),但不要混用。每个缩进级别表示一个代码块。
-
行:Python语句通常一行一个,但可以跨多行。
-
空行:用于分隔逻辑部分(详见第8节)。
示例
if True:
print("This is indented") # 4 spaces indent
if False:
print("Nested indent") # Another 4 spaces
# 不正确的缩进会引发IndentationError
if True:
print("No indent") # Error!
潜在陷阱
-
混用空格和Tab会导致
TabError
。使用编辑器的自动缩进功能。 -
最佳实践:始终使用空格缩进,以确保跨平台一致性。
缩进是Python的独特之处,它强制代码整洁。
5. 多行语句(Multi-Line Statements)
Python允许语句跨越多行,使用反斜杠\
或括号来连接。
示例
# 使用反斜杠
total = 1 + \
2 + \
3
# 使用括号(推荐,无需反斜杠)
total = (1 +
2 +
3)
最佳实践
-
对于长列表或表达式,使用括号更可读。
-
潜在陷阱:忘记反斜杠会导致
SyntaxError
。
这允许编写更长的表达式而不牺牲可读性。
6. 数字类型(Number Types)
Python支持多种数字类型,用于存储整数、浮点数和复数。
类型
-
int:任意大小整数(如
10
)。 -
float:浮点数(如
3.14
)。 -
complex:复数(如
1 + 2j
)。
示例
integer = 42
floating = 3.14159
complex_num = 1 + 2j
print(type(integer)) # <class 'int'>
print(type(floating)) # <class 'float'>
操作与转换
-
支持加减乘除、取模(%)、幂(**)。
-
转换:
int(3.14)
-> 3;float(42)
-> 42.0。 -
潜在陷阱:浮点精度问题,如
0.1 + 0.2 == 0.3
为False(使用decimal
模块解决)。
数字是数据的基础,理解类型转换很重要。
7. 字符串(Strings)
字符串是文本序列,使用单引号'
、双引号"
或三引号表示。
规则
-
不可变:字符串一旦创建,不能修改。
-
转义:使用
\
转义特殊字符,如\'
。 -
格式化:使用f-strings(Python 3.6+)或
format()
。
示例
single = 'Hello'
double = "World"
multi = """Multi
line"""
# 拼接
greeting = single + " " + double
# 格式化
name = "Alice"
print(f"Hello, {name}!") # Hello, Alice!
操作
-
切片:
s[0:5]
。 -
方法:
upper()
、lower()
、split()
。 -
潜在陷阱:字符串是不可变的,所以
s = s + "new"
创建新字符串(效率低时用join()
)。
字符串处理是Python的强项,尤其在文本操作中。
8. 空行(Blank Lines)
空行用于分隔代码的逻辑部分,提高可读性。Python解释器忽略空行。
规则(PEP 8)
-
函数或类之间用两个空行。
-
函数内部逻辑块之间用一个空行。
-
模块顶部和底部无空行。
示例
def function1():
pass
# 两个空行分隔函数
def function2():
pass
最佳实践
-
不要滥用空行,以免代码显得稀疏。
-
潜在陷阱:过多空行不影响执行,但影响可读性。
空行就像段落分隔符,让代码“呼吸”。
9. 等待用户输入(Waiting for User Input)
使用input()
函数从用户获取输入,阻塞执行直到输入。
示例
name = input("Enter your name: ")
print(f"Hello, {name}!")
细节
-
input()
返回字符串;需转换类型,如age = int(input("Age: "))
。 -
Python 2.x用
raw_input()
,但我们聚焦Python 3。 -
潜在陷阱:无效输入导致
ValueError
(用try-except处理)。
这常用于交互式脚本。
10. 同一行显示多条语句(Multiple Statements on a Single Line)
使用分号;
在同一行放置多条语句,但不推荐,因为降低可读性。
示例
x = 5; y = 10; print(x + y) # 15
最佳实践
-
仅用于简单情况;否则每行一条语句。
-
潜在陷阱:调试困难。
保持代码简洁,但优先可读性。
11. 多个语句构成代码组(Code Blocks)
代码组是由缩进定义的一组语句,如if、for、def中的块。
示例
if x > 0:
print("Positive") # 代码组开始
print("End") # 代码组结束
细节
-
所有语句必须相同缩进。
-
空块用
pass
占位。 -
潜在陷阱:缩进不一致导致错误。
这是Python结构的核心。
12. print 输出(Print Output)
print()
函数输出到控制台,支持多个参数和格式化。
示例
print("Hello", "World") # Hello World
print("Value:", 42, sep=" - ") # Value: - 42
print("No newline", end=" ") # No newline
选项
-
sep
:参数分隔符(默认空格)。 -
end
:结束符(默认换行)。 -
潜在陷阱:Python 2.x的
print
无括号。
print
是调试和输出的基本工具。
13. import 与 from...import(Importing Modules)
模块是Python文件,import用于引入功能。
示例
import math
print(math.pi) # 3.141592653589793
from math import pi, sqrt
print(pi) # 3.141592653589793
print(sqrt(16)) # 4.0
区别
-
import module
:使用module.func()
。 -
from module import func
:直接使用func()
。 -
import as
:别名,如import numpy as np
。 -
潜在陷阱:循环导入或名称冲突(用
if __name__ == "__main__":
避免)。
模块化是Python强大之源。
14. 命令行参数(Command-Line Arguments)
使用sys.argv
访问脚本的命令行参数。
示例
# 文件: script.py
import sys
print("Script name:", sys.argv[0])
print("Arguments:", sys.argv[1:])
运行:python script.py arg1 arg2
输出脚本名和参数。
高级
-
使用
argparse
模块解析复杂参数。 -
潜在陷阱:
sys.argv[0]
总是脚本名;索引越界需检查。
这使脚本更灵活。