Python与JavaScript核心差异速查表
本文为JS开发者提供Python快速入门指南,通过对比表格呈现两种语言的核心差异:
- 基础语法:Python无分号,靠缩进定义代码块;JS需分号和大括号
- 变量与常量:Python直接赋值,JS需声明;常量约定不同
- 数据类型:Python有list/tuple/dict,JS对应array/object
- 控制结构:Python用elif,JS用else if;逻辑运算符不同
- 函数与类:Python显式self参数,JS用this关键字
- 模块系统:import语法差异显著
常见错误提醒:
- 忘记冒号和缩进
- 混淆True/False大小写
- 错误使用循环语法
- 保留字差异(如let)
建议初学者重点关注缩进规则、大小写约定和循环语法转换,适应后会发现Python语法更简洁规范。
初学Python不适应,使用表格总结对比:Python和JavaScript(我熟悉)
我们要求用表格总结对比Python和JavaScript,帮助用户从熟悉的JS过渡到Python。需要涵盖语法、数据类型、函数、面向对象、常用操作等。注意用户是初学者,对比要清晰。表格可以分多个方面。
没问题,从你最熟悉的 JavaScript 出发,用表格对照学习 Python,会快很多。下面我把核心差异和最容易踩的坑都列出来。
Python vs JavaScript 速查表
| 对比维度 | Python (你正在学) | JavaScript (你熟悉的) |
|---|---|---|
| 版本/运行环境 | 解释器 + 虚拟环境 (venv) | 浏览器 + Node.js |
| 语句结束符 | 换行即结束(不用分号) | 分号;(可省略但建议加) |
| 代码块 | 缩进决定(4个空格) | { }花括号 |
| 变量声明 | 直接赋值x = 10无 var/let/const | let,const,var |
| 常量 | PI = 3.14(约定大写,但可改) | const PI = 3.14(不可改) |
| 注释 | # 单行"""多行""" | // 单行/* 多行 */ |
| 数据类型 | int,float,str,bool,list,tuple,dict,set,None | number,string,boolean,object,array,null,undefined |
| 数字 | 整数无上限,除法/得浮点数//得整数 | 整数有Number.MAX_SAFE_INTEGER,除法都得浮点数 |
| 字符串 | 单引号'双引号"一样三引号支持换行 | 单/双引号一样,模板字符串用`| |
| 字符串拼接 | "a" + "b"或f"a{b}" | "a" + "b"或`a${b}` |
| 布尔值 | True,False(首字母大写) | true,false(全小写) |
| 空值 | None | null+undefined |
| 数组 vs 列表 | my_list = [1, 2, 3](可混合类型) | const arr = [1, 2, 3](通常同类型) |
| 对象 vs 字典 | my_dict = {"name": "Tom", "age": 20} | const obj = {name: "Tom", age: 20} |
| 访问属性 | my_dict["name"]或my_dict.get("name") | obj.name或obj["name"] |
| 条件判断 | if,elif,else | if,else if,else |
| 逻辑运算符 | and,or,not | &&,||,! |
| 相等比较 | ==(值相等)is(对象同一性) | ==(会类型转换)===(严格相等) |
| 循环 | for item in list:while condition: | for (let i=0; i<arr.length; i++)for (const item of arr)while |
| 函数定义 | def my_func(param1, param2): | function myFunc(param1, param2) { }或箭头函数 |
| 返回值 | 默认返回None | 默认返回undefined |
| 匿名函数 | lambda x: x*2 | (x) => x*2 |
| 作用域 | 函数作用域 + LEGB规则 | 函数作用域 + 块级作用域 (let/const) |
| 类与对象 | class MyClass:def __init__(self): | class MyClass {constructor() { }} |
| 方法调用 | 第一个参数必须是self(实例自身) | this关键字(动态绑定) |
| 模块导入 | import mathfrom math import sqrt | const math = require('math')(Node.js)或 import { sqrt } from 'math' |
| 异常处理 | try: ... except Error as e: ... | try { ... } catch(e) { ... } |
| 代码执行 | 脚本从上到下同步执行(异步需asyncio) | 事件循环,默认异步非阻塞 |
🚨 初学者最容易犯的 5 个错误(对照JS习惯)
| JS 习惯写法 | Python 正确写法 | 报错信息(如果写错) |
|---|---|---|
if (x > 0) { | if x > 0:加冒号,不加花括号,缩进代码块 | IndentationError或SyntaxError |
let arr = [] | arr = []直接赋值 | NameError: name 'let' is not defined |
if (x == y) | if x == y:注意True/False大写 | 无报错但逻辑可能不对(False小写会当变量) |
for (let i=0; i<5; i++) | for i in range(5): | TypeError: 'int' object is not iterable |
function add(a,b) { return a+b } | def add(a, b): return a + b(冒号+缩进) | IndentationError |
💡 快速上手建议
忘掉分号和花括号,把
{改成:,然后缩进对齐True/False/None首字母大写,不是小写不用
let/const,直接变量名 = 值循环用
for in(遍历列表/字典)和range()(数字序列)判断用
and/or/not,不是&&/||/!
等你写几天 Python 后,会发现它比 JS更简洁、更严格(比如缩进强制规范),但同样灵活。
需要我把你课表里的某个 SQL 查询,分别用Pandas和PySpark写一遍,让你感受一下数据开发的代码风格吗?