📖 博主新书已上线,请多多支持:《Yocto项目实战教程:高效定制嵌入式Linux系统》。
🎥 更多学习视频,请关注博主 B 站:嵌入式Jerry。
一文读懂 Python 基础语法 —— C/C++ 工程师转 Python 最佳入门指南
作者:嵌入式 Jerry
前言
Python 以其简洁、优雅、强大的表达能力,成为当今最流行的编程语言之一。对于有 C/C++ 基础的工程师来说,转学 Python 并不难,但想要用好 Python,需要理解其背后的语法风格与“设计哲学”。本文将以实例和类比的方式,系统梳理 Python 核心语法规律,帮助你快速掌握这门高效的语言。
1. 基本语法结构
1.1 注释与缩进
Python 注释
- 单行注释:
# 注释内容
- 多行注释:通常用三个单引号或三个双引号包裹
# 这是单行注释
'''
这是
多行注释
'''
缩进控制语句块
- Python 用缩进(通常4个空格)来标识代码块,而不是像 C/C++ 那样用
{}
。 - 缩进是语法的一部分,必须严格统一!
if True:
print("Hello") # 这里的缩进代表 if 体
else:
print("World")
对比C/C++:
C/C++ 用大括号{}
,Python 用缩进,且强制。
1.2 变量声明与类型
变量声明
- 无需声明类型,变量在第一次赋值时自动创建。
x = 10 # 整数
name = "Tom" # 字符串
pi = 3.14 # 浮点数
动态类型
- Python 是动态类型语言,变量类型随赋值而变化。
a = 10
a = "now I'm a string"
对比C/C++:
C/C++ 变量需声明类型,类型错误编译报错;Python 运行时才确定类型。
1.3 数据类型与常用内置类型
常用类型
- 数字型:
int
、float
、complex
- 字符串:
str
- 布尔型:
bool
- 列表:
list
- 元组:
tuple
- 字典:
dict
- 集合:
set
实例
num = 42 # int
f = 3.14 # float
flag = True # bool
s = "hello" # str
lst = [1, 2, 3] # list
t = (1, 2, 3) # tuple
d = {'a': 1, 'b': 2} # dict
s = set([1, 2, 3]) # set
对比C/C++:
Python 内置多种高级数据结构,字符串不可变,列表相当于 C++ 的 vector。
2. 运算符和表达式
2.1 算术运算符
a = 7 + 3 # 加法
b = 7 - 3 # 减法
c = 7 * 3 # 乘法
d = 7 / 3 # 浮点除法(结果为 float)
e = 7 // 3 # 整数除法(取整)
f = 7 % 3 # 取余
g = 7 ** 2 # 幂运算
2.2 比较和逻辑运算符
a = 5 > 3 # True
b = 5 == 5 # True
c = 5 != 4 # True
d = (3 < 5) and (5 < 10)
e = (3 < 2) or (4 > 1)
f = not (3 == 3)
3. 控制结构
3.1 条件语句 if/elif/else
x = 10
if x > 0:
print("正数")
elif x == 0:
print("零")
else:
print("负数")
注意:
elif
是“else if”的简写。
3.2 循环结构
for 循环
# 遍历列表
for i in [1, 2, 3]:
print(i)
# 遍历区间
for i in range(5): # 0, 1, 2, 3, 4
print(i)
while 循环
i = 0
while i < 5:
print(i)
i += 1
break / continue
for i in range(10):
if i == 5:
break # 提前跳出循环
if i % 2 == 0:
continue # 跳过偶数
print(i) # 输出 1,3
4. 函数与参数
4.1 基本定义
def add(a, b):
return a + b
4.2 默认参数、可变参数
def say(msg="Hello"):
print(msg)
say() # 输出 Hello
say("Hi") # 输出 Hi
def my_sum(*args): # 可变参数,打包成元组
return sum(args)
print(my_sum(1,2,3,4))
4.3 关键字参数
def person(name, age=18, **kwargs):
print(name, age, kwargs)
person("Tom", city="Shenzhen", job="Engineer")
4.4 Lambda(匿名函数)
f = lambda x, y: x + y
print(f(2, 3)) # 5
5. 常用内置数据结构
5.1 列表(list)
lst = [1, 2, 3]
lst.append(4)
lst.pop()
lst[0] = 10
print(lst)
- 切片(Slice)
print(lst[1:3]) # 取索引1和2的元素
print(lst[::-1]) # 倒序
5.2 字典(dict)
d = {"name": "Tom", "age": 20}
print(d["name"])
d["city"] = "Shenzhen"
print(d)
for key, value in d.items():
print(key, value)
5.3 元组(tuple)
t = (1, 2, 3)
print(t[0])
元组不可变,类似 C++ 的
const std::vector
。
5.4 集合(set)
s = set([1, 2, 2, 3])
s.add(4)
s.remove(2)
print(s)
6. 字符串处理
6.1 基本操作
s = "hello world"
print(s.upper())
print(s.replace("hello", "hi"))
print(s[0:5])
print(len(s))
6.2 格式化字符串
- f-string(推荐,Python 3.6+)
name = "Tom"
age = 18
print(f"My name is {name}, age {age}")
- % 格式化
print("Name: %s, Age: %d" % (name, age))
7. 列表推导式/生成式
Python 有非常简洁强大的列表生成语法。
squares = [x * x for x in range(10)]
evens = [x for x in range(10) if x % 2 == 0]
对比C++11:
C++11也支持类似的 lambda 和 std::transform,但语法远不如 Python 简洁。
8. 异常处理
try:
result = 10 / 0
except ZeroDivisionError as e:
print("除零错误:", e)
finally:
print("无论如何都会执行")
9. 模块与包
9.1 导入模块
import math
print(math.sqrt(9))
from math import sin, pi
print(sin(pi/2))
9.2 自定义模块
- 保存为
my_module.py
:
def say_hello():
print("Hello from module")
- 在其他文件引用:
import my_module
my_module.say_hello()
10. 面向对象编程(OOP)
10.1 类与对象
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} makes a sound.")
dog = Animal("Dog")
dog.speak()
10.2 继承
class Dog(Animal):
def speak(self):
print(f"{self.name} says: Wang Wang!")
d = Dog("Buddy")
d.speak()
10.3 数据类(dataclass)
Python 3.7+ 提供了 @dataclass
,简化数据结构定义:
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(3, 4)
print(p)
11. 文件操作
# 写文件
with open("test.txt", "w") as f:
f.write("hello python\n")
# 读文件
with open("test.txt", "r") as f:
content = f.read()
print(content)
12. 标准库与第三方库
12.1 常用标准库
os
:文件和目录操作sys
:系统参数time
、datetime
:时间处理re
:正则表达式json
:JSON 解析csv
:CSV 文件读写
import os
print(os.listdir("."))
12.2 pip 安装第三方库
pip install requests
import requests
r = requests.get("https://www.example.com")
print(r.text)
13. 常见语法糖与“Pythonic”写法
13.1 enumerate
lst = ['a', 'b', 'c']
for idx, value in enumerate(lst):
print(idx, value)
13.2 zip
names = ['Tom', 'Jerry']
scores = [90, 95]
for name, score in zip(names, scores):
print(name, score)
13.3 生成器(Generator)
def fib(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
for x in fib(5):
print(x)
14. Python 与 C/C++ 的差异和规律总结
14.1 语法简洁,格式自由但需缩进
- Python 用缩进代替大括号
{}
。 - 无须写类型声明,变量直接用。
14.2 数据结构更高效
- 内置 list/dict/tuple/set,操作灵活强大。
- 字符串不可变。
14.3 for 循环更强大
- 可直接遍历任意序列。
- 支持 enumerate、zip,循环更直观。
14.4 支持函数式编程
- 支持 map、filter、lambda、推导式。
- 代码高度抽象,简洁表达复杂逻辑。
14.5 面向对象灵活
- 类成员定义简单,构造函数为
__init__
。 - 支持多重继承,支持装饰器和数据类。
14.6 模块化与包管理更易用
import
语法加载模块pip
管理第三方库
14.7 异常处理更安全
try/except/finally
,无需声明异常类型。
15. Python 编程的最佳实践与建议
- 养成良好的缩进习惯,推荐 4 个空格。
- 用好内置数据结构,提升代码效率。
- 多用列表推导式、枚举、zip,写出 Pythonic 代码。
- 掌握异常处理,保证健壮性。
- 多看标准库文档,官方文档极为详细。
- 不要死记语法,动手多练习,理解语义。
16. 典型实用代码示例
16.1 快速统计单词出现次数
s = "to be or not to be"
words = s.split()
count = {}
for w in words:
count[w] = count.get(w, 0) + 1
print(count)
16.2 简易命令行参数解析
import sys
if len(sys.argv) > 1:
print("参数:", sys.argv[1:])
else:
print("无参数")
16.3 用 dict 实现 switch-case 效果
def foo():
print("foo")
def bar():
print("bar")
action = "foo"
actions = {"foo": foo, "bar": bar}
actions.get(action, lambda: print("default"))()
17. 附录:常用 Python 语法速查表
C/C++ 关键字 | Python 等价 |
---|---|
int, float | 直接赋值,无需类型声明 |
#include | import |
printf | |
if/else | if/elif/else |
for/while | for/while |
{} | 缩进 |
;(分号结尾) | 无需分号 |
struct/class | class/@dataclass |
switch-case | if-elif / dict 映射 |
指针引用 | 一切为对象/引用语义 |
malloc/free | 自动内存管理 |
结语
Python 用最小的语法负担、最大化表达能力,让程序员专注于业务本身。只要理解其基本规律,多加练习、拥抱其简洁的语法,你一定能成为高效的 Python 工程师。
📖 博主新书已上线,请多多支持:《Yocto项目实战教程:高效定制嵌入式Linux系统》。
🎥 更多学习视频,请关注博主 B 站:嵌入式Jerry。