JavaScript转Python”的速查表

1. 基础语法对照 (The Basics)

javascript 复制代码
| 特性 | JavaScript (Node.js) | Python | 关键差异点 |
| :--- | :--- | :--- | : |
| 代码块 | { ... } (大括号) | 缩进 (通常4个空格) | 最重要! Python 靠缩进决定层级,没有分号 ;。 |
| 变量声明 | let x = 10;
const y = "hi"; | x = 10
y = "hi" | 不需要关键字,直接赋值。动态类型。 |
| 空值 | null, undefined | None | Python 只有 None,对应 JS 的 null/undefined。 |
| 布尔值 | true, false | True, False | 首字母大写。 |
| 逻辑运算 | &&, ||, ! | and, or, not | 使用英文单词,更可读。 |
| 相等判断 | ===, == | == (值相等) | Python 默认就是值比较,没有 ===。 |
| 注释 | // 单行
/* 多行 */ | # 单行
""" 多行 """ | 多行注释通常用三引号字符串。 |
| 打印输出 | console.log("Hi") | print("Hi") | 最简单直接的函数。 |

2. 数据结构映射 (Data Structures)

A. 列表 (List) vs 数组 (Array)
javascript 复制代码
| 操作 | JavaScript | Python | 备注 |
| :--- | :--- | :--- | :--- |
| 定义 | `const arr = [1, 2, 3];` | `arr = [1, 2, 3]` | |
| 访问 | `arr[0]` | `arr[0]` | 一样。 |
| 切片 | `arr.slice(1, 3)` | `arr[1:3]` | Python 切片是神技,`start:end` (不含end)。 |
| 长度 | `arr.length` | `len(arr)` | 所有容器长度都用 `len()`。 |
| 追加 | `arr.push(4)` | `arr.append(4)` | |
| 包含 | `arr.includes(2)` | `2 in arr` | 语法糖:`if 2 in arr:`。 |
| 遍历 | `arr.forEach(x => ...)` | `for x in arr:` | Python 的 for 循环直接遍历元素。 |
| 映射 | `arr.map(x => x*2)` | `[x*2 for x in arr]` | 列表推导式 (见下文)。 |
| 过滤 | `arr.filter(x => x>1)` | `[x for x in arr if x>1]` | |
B. 字典 (Dict) vs 对象 (Object)
javascript 复制代码
| 操作 | JavaScript | Python | 备注 |
| :--- | :--- | :--- | :--- |
| 定义 | `const obj = {a: 1};` | `obj = {"a": 1}` | Key 必须是字符串 (除非特意用其他类型)。 |
| 访问 | `obj.a` 或 `obj["a"]` | `obj["a"]` | Python 不能用 `obj.a` 访问字典键(那是属性)。 |
| 安全访问| `obj.b ?? 0` | `obj.get("b", 0)` | `get` 方法防止报错,可设默认值。 |
| 所有键 | `Object.keys(obj)` | `obj.keys()` | 返回一个迭代器,需转列表 `list(obj.keys())`。 |
| 所有值 | `Object.values(obj)` | `obj.values()` | |
| 遍历 | `for(let k in obj)...` | `for k, v in obj.items():` | 必背:`.items()` 同时拿键值。 |
| 解析JSON| `JSON.parse(str)` | `json.loads(str)` | 注意 `s` (string)。 |
| 转JSON | `JSON.stringify(obj)` | `json.dumps(obj)` | 注意 `d` (dump)。 |

3. 函数与异步 (Functions & Async)

javascript 复制代码
// 函数定义
# JS: function add(a, b) { return a + b; }
# JS: const add = (a, b) => a + b;

# Python:
def add(a, b):
    return a + b  # 必须有 return,否则返回 None

// 默认参数
# JS: function greet(name = "Guest") { ... }
# Python:
def greet(name="Guest"):
    pass

// 异步 (Async/Await)
# JS: async function fetch() { const res = await api(); }
# Python:
import asyncio

async def fetch():
    res = await api()
    return res

# 运行入口
# asyncio.run(fetch()) 
// 注意:在 FastAPI 或 LangChain 中,框架通常会帮你处理事件循环,你只需在函数前加 async 和使用 await 即可,写法几乎一样。

4. 杀手锏:列表推导式 (List Comprehensions)

javascript 复制代码
// javascript
const result = nums
  .map(n => n * n)
  .filter(n => n > 10);


// python
# 读法:[结果 for 变量 in 列表 if 条件]
result = [n * n for n in nums if n > 10]

5. 常用库映射 (Ecosystem Mapping)

javascript 复制代码
| 领域 | JavaScript (NPM) | Python (PIP) | 说明 |
| :--- | :--- | :--- | :--- |
| HTTP 请求 | `axios`, `fetch` | `requests`, `httpx` | `requests` 是同步的神,`httpx` 支持异步。 |
| Web 框架 | `Express`, `Koa` | `FastAPI`, `Flask` | 强烈推荐 FastAPI,自动生成交互文档,支持 Async,体验极佳。 |
| 数据处理 | `lodash`, 原生数组 | `pandas`, `numpy` | Pandas 是数据科学的核心,类似 Excel + SQL + JS 数组的超级结合体。 |
| JSON 处理 | 原生 `JSON` | 原生 `json` | 内置在标准库。 |
| 环境变量 | `dotenv` | `python-dotenv` | 用法几乎一样。 |
| AI/LLM | `langchain-js` | `langchain`, `llama-index` | Python 版功能最全、更新最快,JS 版常有滞后。 |

6. 实战代码片段对比

场景:读取 JSON 文件,过滤数据,调用 API,保存结果

JavaScript (Node.js):

javascript 复制代码
const fs = require('fs');
const axios = require('axios');

async function processData() {
  const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));
  
  // 过滤
  const filtered = data.filter(item => item.active === true);
  
  const results = [];
  for (const item of filtered) {
    try {
      const res = await axios.post('https://api.example.com/analyze', { text: item.content });
      results.push({ id: item.id, analysis: res.data.result });
    } catch (e) {
      console.error(`Error on ${item.id}`, e);
    }
  }
  
  fs.writeFileSync('output.json', JSON.stringify(results, null, 2));
}

processData();

Python (等价逻辑):

javascript 复制代码
import json
import requests  # 同步写法,更直观;若需异步可用 httpx + asyncio

def process_data():
    # 1. 读取 (with 语句自动管理文件关闭,类似 try-finally)
    with open('data.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    # 2. 过滤 (列表推导式)
    filtered = [item for item in data if item.get('active') is True]
    
    results = []
    for item in filtered:
        try:
            # 3. 请求 (requests 极其简洁)
            res = requests.post('https://api.example.com/analyze', json={"text": item['content']})
            res.raise_for_status() # 检查错误
            results.append({"id": item['id'], "analysis": res.json()['result']})
        except Exception as e:
            print(f"Error on {item['id']}: {e}")
    
    # 4. 保存
    with open('output.json', 'w', encoding='utf-8') as f:
        json.dump(results, f, ensure_ascii=False, indent=2) # ensure_ascii=False 支持中文

if __name__ == "__main__":
    process_data()

给前端的特别提示 (Mindset Shift)

  1. 缩进即正义:复制粘贴代码时,务必检查缩进是否对齐。IDE (VS Code) 通常会帮你,但要留意。

  2. 没有 this 地狱 :Python 类的方法第一个参数必须是 self,调用时不用传,但定义时要写

    javascript 复制代码
    class MyClass:
        def my_method(self): # 必须有 self
            print(self.value)
  1. 包管理
    • JS: package.json + node_modules
    • Python: requirements.txt (或 pyproject.toml) + venv (虚拟环境)。
    • 建议 :每个项目都创建一个虚拟环境 (python -m venv venv),避免包冲突。
  2. 类型提示 (Type Hinting)
    • 现代 Python (3.6+) 支持类似 TS 的类型提示,虽然不是强制的,但在大型项目中很常见:

      javascript 复制代码
      def greet(name: str) -> str:
          return f"Hello, {name}"
相关推荐
Elaine3362 小时前
【通过 Vue 实例劫持突破 Web 编辑器的粘贴限制】
前端·javascript·vue.js·chrome devtools·前端逆向
老友@2 小时前
云计算的统一心智模型
开发语言·ci/cd·docker·云计算·k8s·perl
zhensherlock2 小时前
Protocol Launcher 系列:一键唤起 Windsurf 智能 IDE
javascript·ide·vscode·ai·typescript·github·ai编程
十步杀一人_千里不留行2 小时前
TypeScript 里的 Type Guard 是什么
javascript·ubuntu·typescript
Elnaij2 小时前
从C++开始的编程生活(19)——set和map
开发语言·c++
杰杰7982 小时前
深入理解 Django REST Framework 的 Serializer(上)
后端·python·django
进击切图仔2 小时前
生成 .so 和使用 .so
java·javascript·算法
程序员敲代码吗2 小时前
探索数字转换与计算机存储基础
前端·python
SuperEugene2 小时前
Vant 4 实战教程:Vue3 移动端后台管理系统从选型到开发|Vue生态精选篇
前端·javascript·vue.js·前端框架·vant