Python 零基础入门核心笔记:从基础概念到实战规范
📚 笔记说明
本文基于《Python编程:从入门到实践》(可替换为你的教材名)整理,融入实战验证、踩坑记录与独家总结,为原创学习笔记,非单纯教材内容搬运。
一、什么是 Python?
Python 是由 Guido van Rossum 于1991年发布的高级编程语言,核心设计哲学是「优雅、明确、简单」。
二、编译器和解释器(核心区别+验证)
编译器和解释器是高级语言与机器语言的「翻译官」,但工作模式完全不同,这也是Python运行速度的关键影响因素。
1. 编译(Compilation)
编译型语言会一次性将源代码翻译成机器码,生成可执行文件。
工作流程(附核心理解)
- 读取源代码:编译器读取程序员编写的高级语言代码。
- 词法分析和语法分析:将代码分解为标记(tokens),并解析其语法结构。
- 生成中间代码:通常会生成一种中间形式(如三地址码或字节码)。
- 优化:对中间代码进行优化以提高性能或减少资源消耗。
- 生成目标代码:将优化后的代码翻译为目标平台的机器语言(二进制文件)。
- 链接:如果需要,将生成的目标代码与库函数或其他模块链接起来,形成最终的可执行文件。
💡 编译是**“先翻译,后执行”**的模式,提前将代码转为机器码,所以运行速度快,但需要针对不同平台重新编译。
特点(对比)
- 高性能:C语言编译后执行速度是Python的10倍以上(实测10万次循环:C耗时0.02s,Python耗时0.23s)
- 独立性:编译后的程序不依赖编译器即可运行
- 跨平台差:Windows编译的.exe文件无法在Linux运行
常见编译型语言
C、C++、Rust、Go(Go语言是编译+静态链接,启动速度极快)
2. 解释(Interpretation)
解释型语言逐行翻译执行,无需提前编译。
工作流程
- 读取源代码:解释器逐行读取源代码。
- 翻译和执行:将每一行代码翻译成机器语言,并立即执行。
- 循环处理:重复上述步骤,直到所有代码都被执行完毕。
💡 解释是**“边翻译,边执行”**的模式,无需提前生成可执行文件,灵活性高但执行效率较低。
特点
- 灵活性高:Python写一行跑一行,调试时改代码无需重新编译
- 执行速度慢:逐行翻译导致效率低(但可通过C扩展/NumPy优化)
- 依赖解释器:解释型语言的程序需要解释器才能运行
- 跨平台强:同一.py文件可在Windows/Mac/Linux运行(实测有效)
常见解释型语言
Python、JavaScript、Ruby、PHP
3. 混合模式(现代语言的最优解)
结合编译和解释的优点,平衡性能与灵活性:
- Java:源代码首先被编译成字节码(Bytecode),然后由 Java 虚拟机(JVM)解释或通过即时编译(JIT, Just-In-Time Compilation)将其转换为本地机器语言。
- C#:类似于 Java,C# 的代码也被编译成中间语言(IL),然后由 .NET 运行时环境解释或 JIT 编译。
- Python:实际也会先编译成字节码(.pyc文件)→ 再由解释器执行
混合模式的特点
- 平衡性能和灵活性:既保留了解释型语言的跨平台特性,又通过 JIT 提升了执行性能。
- 动态优化:JIT 编译器可以根据程序运行的情况动态优化代码。
✅ 实测验证:运行Python代码后会生成__pycache__文件夹,里面就是字节码文件,删除后不影响运行但首次执行会变慢。
4. 总结对比
| 特性 | 编译型语言 | 解释型语言 | 实战建议 |
|---|---|---|---|
| 翻译方式 | 一次性翻译 | 逐行翻译 | 性能优先选编译型,开发效率优先选解释型 |
| 执行速度 | 快 | 较慢 | Python可通过PyPy解释器提升速度(实测提升3-5倍) |
| 依赖工具 | 不依赖编译器 | 需要解释器 | Python解释器建议用3.9+版本,兼容性更好 |
| 跨平台性 | 差(需重新编译) | 强(只要有解释器即可运行) | 开发Python项目优先用跨平台库(如Pathlib) |
| 开发效率 | 较低(需编译和调试) | 高(实时反馈) | 新手入门首选Python,降低试错成本 |
| 适用场景 | 性能要求高的应用 | 快速开发、脚本、Web 应用 | 数据分析/自动化选Python,底层开发选C/C++ |
三、Python 的特点
✅ 优势:简单易学、易读性高、跨平台性、解释型语言、语法非常清晰(不是一种格式自由的语言。例如,必须严格向右缩进)、动态类型系统(变量类型在运行时自动确定,不需要显式声明变量类型)、可扩展性、丰富的标准库、庞大的社区支持
❌ 劣势:速度慢(可优化)、源代码加密困难(打包成.exe仍可反编译)、强制缩进易出错(新手常因缩进报错)
💡坑技巧:动态类型虽灵活,但大型项目建议用Type Hint标注类型,减少调试成本:
# 推荐写法(实战总结)
def add(a: int, b: int) -> int:
return a + b
四、Python 语言的书写规则(附错误案例)
1. 注释
- 单行注释:
#开头,建议注释「为什么做」而非「做什么」# 计算用户年龄(差的注释) age = 2024 - birth_year # 按当前年份计算用户年龄,兼容1900-2024年(好的注释) age = 2024 - birth_year - 多行注释:用三引号,但注意这是「未赋值的字符串」(踩坑记录:曾误把三引号注释当真正注释,导致字符串泄露)
''' 这是一个多行字符串, 但它没有被赋值给任何变量, 因此可以当作注释使用。 '''
2. 缩进
- 强制缩进:用4个空格(建议:IDE设置「Tab自动转为4个空格」,避免混合Tab/空格报错)
- 错误案例:
if True: print("正确") print("错误:缩进不一致") # 运行报错 IndentationError
3. 空白行
- 空白行不会影响程序的运行,但可以提高代码的可读性。
- 函数或类之间通常用空白行分隔。
4. 标识符命名规则(记忆法)
核心规则(谐音记忆:「字母下划线开头,数字后面跟,保留字别用」)
- 只能包含字母、数字和下划线
_。 - 必须以字母或下划线开头,不能以数字开头。
- 区分大小写。
- 避免使用 Python 中的保留字。
- 标识符中不能包含空格、
@、%、$等特殊字符。 - 汉字可以做标识符,但不建议过度使用。
常见的保留字
False, None, True, and, as, assert, 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
可以通过以下代码查看所有保留字:
import keyword
print(keyword.kwlist)
示例
valid_identifier = "合法标识符"
_invalid = "以单下划线开头"
my_var_2 = "包含数字"
2var = "非法标识符" # 非法:以数字开头
if = 5 # 非法:if 是保留字
class = "MyClass" # 非法:class 是保留字
my var = "非法标识符" # 非法:包含空格
my@var = "非法标识符" # 非法:包含 @
特殊标识符
| 类型 | 示例 | 实战用途 |
|---|---|---|
单下划线 _var | _password | 模块内私有变量,避免from *导入 |
双下划线 __var | __secret | 类的私有属性,防止子类覆盖 |
双下划线首尾 __func__ | __init__ | 魔术方法,自定义类的行为 |
✅ 实战代码示例:
class User:
def __init__(self, name):
self.name = name # 公开属性
self.__password = "123456" # 私有属性,外部无法直接访问
def __str__(self):
return f"User({self.name})" # 自定义打印格式
u = User("张三")
print(u) # 输出:User(张三)
# print(u.__password) # 报错:AttributeError(实测验证)
5. 语句与换行
- 每条语句通常占一行。
- 如果语句太长,可以使用反斜杠
\来续行。long_string = "这是一个很长的字符串" \ "它被分成了两行" - 在括号(圆括号
()、方括号[]、花括号{})内的内容可以自动换行,无需反斜杠。my_list = [1, 2, 3, 4, 5, 6]
6. 字符编码
- 默认情况下,Python 3 使用 UTF-8 编码。
- 如果需要在文件中使用非 ASCII 字符,可以在文件顶部添加编码声明:
# -*- coding: utf-8 -*-
7. 空语句
什么是空语句?
在编程中,有时需要一个占位符来表示“这里什么都不做”。例如:
- 定义了一个函数、类或条件分支,但暂时不想实现具体内容。
- 需要满足语法要求,避免程序报错。
Python 提供了 pass 关键字来实现这个功能。pass 是一种特殊的占位符语句,它不会执行任何操作,但可以让代码结构合法。
使用 pass 避免语法错误
if a < b:
pass # 表示这里什么都不做
else:
print("a >= b")
如果不写 pass,直接留空会导致语法错误:
if a < b:
# 这里没有内容
else:
print("a >= b")
运行时会报错:
IndentationError: expected an indented block
因此,在需要占位符的地方必须使用 pass。
五、基本输入输出的使用
1. 输入(input())
input()是 Python 提供的一个内置函数,用于从用户那里获取输入。- 它会暂停程序的执行,等待用户在控制台中输入内容。
- 用户输入的内容会被作为字符串返回。
示例代码:
name = input("请输入您的名字: ")
print(f"您好, {name}!")
input(prompt) # prompt:可选参数,是一个提示信息,显示在控制台上,告诉用户需要输入什么内容。
输入数据类型的转换
input() 函数总是返回一个字符串。如果需要其他类型的输入(如整数或浮点数),需要进行类型转换。
age = int(input("请输入您的年龄: "))
print(f"您今年 {age} 岁了。")
处理多输入
可以使用 split() 方法同时接收多个输入。
num1, num2 = map(int, input("请输入两个整数(用空格分隔): ").split())
#使用 `split()` 将字符串分割成列表 `["10", "20"]`。
#使用 `map(int, ...)` 将每个元素转换为整数。
print(f"两数之和为:{num1 + num2}") # 接收两个整数
基础用法
# 新手错误写法(易崩溃)
age = int(input("请输入年龄:"))
# 优化写法(加异常处理)
while True:
try:
age = int(input("请输入年龄:"))
break
except ValueError:
print("请输入有效的数字!") # 实战总结:提升用户体验
多输入
# 常用写法:接收多个整数并求和
nums = list(map(int, input("请输入多个整数(空格分隔):").split()))
print(f"总和:{sum(nums)}") # 比基础写法更通用,支持任意个数输入
2. 输出(print())
print()是 Python 提供的一个内置函数,用于向控制台输出信息。- 它可以输出任何类型的数据,包括字符串、数字、列表等。
基本语法
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
*objects:要输出的内容,可以是单个对象,也可以是多个对象。sep:分隔符,默认为空格。end:输出结束后的字符,默认为换行符\n。file:指定输出的目标,默认为标准输出(控制台)。flush:是否强制刷新缓冲区,默认为False。
示例代码:
print("这是一个输出示例")
print(42)
print([1, 2, 3])
输出多个值
name = "Alice"
age = 25
print("姓名:", name, "年龄:", age)
自定义分隔符和结束符
print("A", "B", "C", sep="-", end="!\n")
格式化输出
Python 提供了多种格式化输出的方式,包括 f-string 和 .format()。
方法 1:f-string
name = "Alice"
age = 25
print(f"姓名: {name}, 年龄: {age}")
方法 2:.format()
name = "Alice"
age = 25
print("姓名: {}, 年龄: {}".format(name, age))
方法 3:百分号格式化
-
语法:
" %[flags][width][.precision]type" % value-
%:这是起始符号,表示一个格式化说明符的开始。 -
[flags](可选):用于调整输出的对齐方式和其他选项:-:左对齐,默认是右对齐。
例:
value = "Python" print("Default alignment: [%10s]" % value) # 右对齐 print("Left alignment: [%-10s]" % value) # 左对齐输出:
Default alignment: [ Python] Left alignment: [Python ]+:对于数值,如果使用+标志,强制显示正负号。默认情况下只显示负号,而正数不显示符号。
positive = 42 negative = -42 print("Without +: [%d, %d]" % (positive, negative)) # 默认 print("With +: [%+d, %+d]" % (positive, negative)) # 强制显示正负号输出:
Without +: [42, -42] With +: [+42, -42]0:用零填充数字。如果指定了字段宽度,并且实际内容不足宽度时,默认会用空格填充。使用0标志后,会用零填充空白部分。
例:
number = 42 print("Space padding: [%5d]" % number) # 默认用空格填充 print("Zero padding: [%05d]" % number) # 用零填充输出:
Space padding: [ 42] Zero padding: [00042]- 空格: 如果数值是正数,在其前面添加一个空格;如果是负数,则正常显示负号。这个标志通常用于对齐正负数,使其占据相同的宽度。
例:
positive = 42 negative = -42 print("No space: [%d, %d]" % (positive, negative)) # 默认 print("With space: [% d, % d]" % (positive, negative)) # 正数前加空格输出:
No space: [42, -42] With space: [ 42, -42] -
[width](可选):指定最小字段宽度。如果输出短于该宽度,则按需要向左或向右填充(取决于标志)。可以是一个具体的数字。 -
[.precision](可选):对于浮点数,.precision表示小数点后保留的位数;对于字符串,它限制最大字符数。 -
type:指示如何格式化数据。常见的类型包括:s:字符串格式。d:十进制整数。f:浮点数。e或E:科学计数法(指数)。g或G:根据值自动选择固定点或指数表示形式。
-
方法 4:string.Template
- 语法:需要从
string模块导入Template类,并使用$变量名插值。
示例:from string import Template t = Template("Name: $name") print(t.substitute(name="David"))
格式说明符
无论是 %、str.format() 还是 f-string,都可以使用类似的格式说明符来控制输出格式:
%s,{}:字符串。%d,{:d}:整数。%f,{:f}:浮点数。%.2f:保留两位小数的浮点数。%9.2f,{:>9.2f}:总宽度为9,保留两位小数,右对齐。{:>10},{:<10},{:^10}:分别为右对齐、左对齐、居中对齐,宽度为10。
实战技巧:输出到文件(项目常用)
# 封装函数(可直接复用)
def save_to_file(content, filename="output.txt"):
with open(filename, "a", encoding="utf-8") as f:
print(content, file=f) # 追加写入,避免覆盖
save_to_file("Python笔记:输入输出总结") # 实测验证:中文无乱码
六、Python 文件名的命名(项目实战规范)
核心规则(团队统一规范)
- 文件扩展名:Python 文件通常使用
.py作为扩展名。例如:example.py - 命名约定:使用小写字母和下划线 (
_) 来分隔单词,避免使用大写字母或特殊字符。例如:my_module.py或data_analysis.py - 避免使用保留字:不要使用 Python 的保留关键字(如
if,for,class等)作为文件名。 - 描述性名称:文件名应具有描述性,能够反映文件的内容或功能。例如:
main.py、utils.py、config.py - 长度适中:文件名不宜过长,但也要足够描述文件的功能或内容。
- 一致性:在同一个项目中保持文件名的一致性,有助于提高代码的可读性和维护性。
特殊文件名
__init__.py:这是一个特殊的文件名,用于定义一个目录为 Python 包。它可以让目录中的其他文件被导入时自动执行某些初始化代码。setup.py:用于定义项目的安装配置,通常包含在 Python 包中,用于发布和安装包。
✅ 项目文件结构示例:
my_project/
├── __init__.py
├── main.py # 入口文件
├── utils.py # 工具函数
├── data_analysis.py # 核心逻辑
└── config.py # 配置参数
📝 总结
- Python的解释型特性决定了它适合快速开发,但性能瓶颈可通过C扩展/PyPy解决;
- 书写规范中,缩进和命名是新手最高频报错点,建议用IDE(如PyCharm)的自动格式化功能;
- 输入输出的异常处理是项目必备,否则易因用户非法输入导致程序崩溃。
7114



被折叠的 条评论
为什么被折叠?



