Skip to content

Python

js和Python的在语法的异同点

相同点(相似语法/功能)

功能JavaScript 示例Python 示例
变量定义(动态类型)let x = 5;x = 5
条件判断if (x > 0) {}if x > 0:
循环结构for (let i of arr)for i in arr:
函数定义function foo(a) {}def foo(a):
异常处理try { ... } catch(e) {}try: ... except e:
数组/列表支持[1, 2, 3][1, 2, 3]
字典/对象{ key: value }{ 'key': value }
高阶函数(如 map/filter)arr.map(fn)map(fn, arr)

不同点(语法风格/结构差异)

特性JavaScriptPython
变量声明方式var, let, const无需关键字,直接赋值
代码块使用 {} 包裹使用缩进(强制)
行末分号可选但推荐 ;不使用分号
匿名函数() => {}(箭头函数)lambda x: x + 1
字符串格式化`Hello ${name}`(模板字符串)f"Hello {name}"
类型转换Number("1"), String(123)int("1"), str(123)
类定义与继承class A extends B {}class A(B):
私有属性无原生支持(常用 _name#name___ 前缀标示私有
异步编程async/await 支持原生 Promiseasync def, await,基于协程(asyncio
null 与 undefinednullundefined 两种统一使用 None
真值判断false, 0, "", null, undefined, NaN 为假False, 0, "", None, [], {} 为假

使用案例对比

遍历列表/数组

js
const arr = [1, 2, 3];
for (let i of arr) {
  console.log(i);
}
py
arr = [1, 2, 3]
for i in arr:
    print(i)

函数定义和调用

js
function add(a, b) {
  return a + b;
}
add(1, 2);
py
def add(a, b):
    return a + b
add(1, 2)

异步编程对比

特性JavaScriptPython
异步语法async function, awaitasync def, await
核心机制基于事件循环 + Promise基于协程(asyncio
内置 Promise 支持有原生 Promise 类型通过 asyncio.Future 等实现
并发库Promise, setTimeout, fetch, RxJSasyncio, concurrent.futures, threading
js
// JavaScript
async function fetchData() {
  const res = await fetch('https://api.example.com');
  const data = await res.json();
  console.log(data);
}
py
# Python
import aiohttp
import asyncio

async def fetch_data():
    async with aiohttp.ClientSession() as session:
        async with session.get('https://api.example.com') as resp:
            data = await resp.json()
            print(data)

# asyncio.run(fetch_data())

模块系统对比

特性JavaScriptPython
导入语法import { func } from './module.js'from module import func
默认导出export default无默认导出概念
包管理工具npm, yarn, pnpmpip, poetry, pipenv
模块类型CommonJS (require), ESModules (import).py 文件就是模块,支持包结构(__init__.py

类与对象对比

特性JavaScriptPython
类定义语法class A {}class A:
构造函数constructor()__init__()
继承class B extends A {}class B(A):
私有属性#name(ES2022+)或 _name(习惯)_name(保护)、__name(私有)
方法绑定需要手动绑定 this(或使用箭头函数)self 自动传递
js
// JavaScript
class Person {
  constructor(name) {
    this.name = name;
  }
  greet() {
    console.log(`Hello, ${this.name}`);
  }
}
py
# Python
class Person:
    def __init__(self, name):
        self.name = name
    def greet(self):
        print(f"Hello, {self.name}")

其他语言特性对比

特性JavaScriptPython
函数是一等公民
正则表达式内置支持是(通过 re 模块)
JSON 处理JSON.stringify / JSON.parsejson.dumps / json.loads
默认参数function fn(a = 1)def fn(a=1)
函数重载不支持(需手动处理参数)不支持传统重载,可用装饰器模拟
枚举需手动实现或用 TSEnum 模块原生支持