会骑自行车学电瓶车,事半功倍!
所以需要注意------迁移,因为知识不是孤岛,多对比,更容易触类旁通。
注意:
在 AI 时代,语法易忘且随时可查,唯有思路永存
列这个表,不是为了背,浏览了好有个映像。[表也是ai写的_(ง ˙o˙)ว]
项目驱动,当个字典用,就像罗塞塔石碑
一、前端 → Python 知识对照
| 层级 | JavaScript / TypeScript | Python | 💡 核心思维转换 (One-Liner) |
|---|---|---|---|
| 基础语法 | let x = 1; (需声明) |
x = 1 (直接赋值) |
去声明化:变量只是标签,贴在对象上,无需定义类型。 |
; (分号结尾) |
无分号 (换行即结束) | 视觉减负:缩进决定代码块,分号是多余的噪音。 | |
=== (严格相等) |
== (值相等) |
默认严格 :Python 的 == 就是 JS 的 ===;is 才是比地址 (===)。 |
|
null / undefined |
None |
唯一空值 :不再纠结是"没定义"还是"空对象",只有 None。 |
|
Hello ${name} |
f"Hello {name}" |
几乎一致 :前缀 f 代表 format,花括号内直接写表达式。 |
|
| 函数逻辑 | function foo() {} |
def foo(): |
冒号哲学:函数头末尾加冒号,下一行必须缩进。 |
() => {} (箭头函数) |
lambda x: x |
轻量级 :lambda 仅限单行表达式,复杂逻辑请用 def。 |
|
arguments 对象 |
*args, **kwargs |
显式解包:不再隐式获取参数,而是显式声明接收剩余参数。 | |
| 数据结构 | [] (Array) |
[] (List) |
动态数组 :Python List 可混存不同类型,方法名略有不同 (push→append)。 |
new Set() |
set() |
去重集合 :支持数学集合运算 (交集 &, 并集 ` |
|
{} (Object/Map) |
{} (Dict) |
哈希映射:Key 必须是不可变类型 (字符串/数字/元组),不能是对象/列表。 | |
obj.key / obj['key'] |
dict['key'] |
访问差异 :字典只能用 [] 访问;若想用 . 访问需用 dataclass 或对象。 |
|
tuple (无原生,靠约定) |
() (Tuple) |
不可变列表:常用作字典的 Key 或函数返回多值。 | |
| 面向对象 | class A extends B |
class A(B): |
括号继承:继承写在类名后的括号里,同样支持多继承。 |
constructor() |
__init__(self) |
构造初始化 :self 必须显式作为第一个参数传入(这是最大的习惯障碍)。 |
|
this |
self |
显式自我 :没有隐含的 this,每个实例方法都要明确写 self。 |
|
get/set accessor |
@property |
装饰器属性 :用 @property 把方法伪装成属性调用,优雅且符合 Pythonic。 |
|
| 模块系统 | import ... from ... |
import ... / from ... import ... |
文件即模块 :一个 .py 文件就是一个模块,文件夹是包 (需 __init__.py)。 |
module.exports |
__all__ (可选) |
默认全公开 :默认所有定义都可被导入,想用 * 导入需配置 __all__。 |
|
| 异步编程 | async/await + EventLoop |
async/await + asyncio |
语法同,内核异:JS 是单线程非阻塞;Python 有 GIL,异步主要用于 IO 密集型。 |
Promise.all() |
asyncio.gather() |
并发执行:概念完全对应,用于同时发起多个异步任务。 | |
| 高阶特性 | @decorator (Babel/TS) |
@decorator (原生支持) |
一等公民:装饰器是 Python 的核心特性,用于日志、权限、缓存等横切关注点。 |
Proxy / Reflect |
__getattr__, __setattr__ |
魔术方法:通过双下划线方法拦截属性访问,实现动态行为(元编程)。 | |
原型链 (__proto__) |
MRO (C3 线性化) | 继承顺序:多继承时,Python 有明确的解析顺序算法,比 JS 原型链更可控。 | |
| 运行环境 | V8 JIT (多线程真并行) | GIL (全局解释器锁) | 并发陷阱 :CPU 密集型任务多线程无效,需用 multiprocessing (多进程)。 |
npm / yarn |
pip / poetry |
包管理 :requirements.txt 类似 package.json,虚拟环境 (venv) 类似 node_modules 隔离。 |
二、3个核心
1. 缩进即正义
-
JS用{}区分代码块,Python用4空格缩进
-
建议:编辑器装 indent-rainbow 插件,视觉上区分缩进层级(pycharm-设置-插件库里搜的到)

2. Self 显式化
-
Python类方法第一个参数必须是self(显式传)
-
调用时不用写:obj.method() 自动把obj传给self
python
# ❌ 错误
def eat(self): pass
# ✅ 正确
def eat(self):
print(f"{self.name} is eating")
python
# Python
class Car:
def drive(self, speed): # ← 定义时:self 必须显式写
print(f"{self.name} 车速 {speed}")
my_car = Car("宝马")
my_car.drive(60) # ← 调用时:只传 speed,self 自动传
# 实际等价于:Car.drive(my_car, 60)
javascript
// JavaScript
class Car {
drive(speed) { // ← 没有 this 参数
console.log(this.name);
}
}
myCar.drive(60); // ← this 隐式绑定,但容易丢
3. 内置强大
- JS : 想要处理日期?装
dayjs。想要发请求?装axios。想要操作文件?找第三方库。 - Python : 标准库极其强大 。
- 处理日期时间 →
datetime(内置) - 发 HTTP 请求 →
urllib(内置,虽然大家爱用requests) - 操作 JSON →
json(内置) - 正则表达式 →
re(内置) - 文件系统 →
os,pathlib(内置)
- 处理日期时间 →
- 策略: 遇到问题先想"标准库有没有",再想"pip install 什么"。