前端仔速通 Python

前言

对于很多已经熟悉 JavaScript / Node.js 的开发者来说,学习 Python 往往不是"从零开始",而是一次语言迁移。你已经掌握了编程的核心能力:如何拆解问题、如何设计数据结构、如何写函数和模块、如何处理异步逻辑、如何组织项目结构。所以学习 Python,真正需要适应的,其实只有两件事:

第一,语法表达方式不同。

第二,Python 社区有自己的一套开发习惯。

这篇文章是站在 JavaScript 开发者的视角,帮助你快速理解 Python 到底该怎么学、怎么写、怎么用。

一、先理解本质

很多人第一次看到 Python,会觉得它和 JavaScript 差别巨大,比如:

js 复制代码
// JavaScript
for (let i = 0; i < 5; i++) {
  console.log(i)
}
py 复制代码
# Python
for i in range(5):
    print(i)

看起来像两种语言,但本质上它们表达的是同一件事:创建变量 i,循环执行 5 次并输出结果。区别只是:Python 不写花括号、用缩进表示代码块、更强调可读性。如果用一句话总结:JavaScript 更灵活而 Python 更克制。

二、变量与数据类型:概念相同,命名不同

js 复制代码
// JavaScript 写法
let name = "Tom"
let age = 18
let price = 9.9
let isAdmin = true
let tags = ["js", "python"]
let user = { name: "Tom", age: 18 }
py 复制代码
# Python 写法
name = "Tom"
age = 18
price = 9.9
is_admin = True
tags = ["js", "python"]
user = {"name": "Tom", "age": 18}
JavaScript Python
string str
number int / float
boolean bool
array list
object dict
null None

你需要适应的地方

1. 布尔值大小写不同

py 复制代码
True False None
true false null

2. 命名风格不同

py 复制代码
# JavaScript 常用:
userName
getUserInfo

# Python 主流写法:
user_name
get_user_info

这叫 snake_case(蛇形命名) ,是 Python 社区默认规范。

三、条件判断:去掉括号和花括号

js 复制代码
# JavaScript
if (age >= 18) {
  console.log("成年")
} else if (age >= 12) {
  console.log("青少年")
} else {
  console.log("儿童")
}
py 复制代码
# Python
if age >= 18:
    print("成年")
elif age >= 12:
    print("青少年")
else:
    print("儿童")

最大变化有三个:1. 不需要括号、2. 使用冒号开始代码块、3. 使用缩进表示层级。这也是 Python 最核心的语法特征之一。

四、循环:Python 更像自然语言

自然计数循环

js 复制代码
// JavaScript
for (let i = 0; i < 5; i++) {
  console.log(i)
}
py 复制代码
# Python
for i in range(5):
    print(i)

遍历数组

js 复制代码
// JavaScript
for (const item of arr) {
  console.log(item)
}
py 复制代码
# Python
for item in arr:
    print(item)

while 循环

js 复制代码
// JavaScript
let i = 0
while (i < 5) {
  i++
}
py 复制代码
# Python
i = 0
while i < 5:
    i += 1

注意:Python 没有 ++

py 复制代码
# 错误写法:
i++

# 正确写法:
i += 1

五、函数:写法更干净

js 复制代码
// JavaScript
function add(a, b) {
  return a + b
}
// 或者
const add = (a, b) => a + b
py 复制代码
# Python
def add(a, b):
    return a + b
# 或者
add = lambda a, b: a + b

Python 也有简写函数(lambda),但实际开发里,大多数场景仍然推荐正常使用 def。因为更清晰,也更符合 Python 风格。


六、字符串处理

js 复制代码
// JavaScript
const name = "Tom"
console.log(`Hello ${name}`)
py 复制代码
# Python
name = "Tom"
print(f"Hello {name}")

Python 的叫:f-string,非常常用,也是 Python 字符串格式化的首选方式。

七、数组 map / filter 在 Python 怎么写

js 复制代码
// JavaScript map
arr.map(x => x * 2)

// JavaScript filter
arr.filter(x => x > 2)
py 复制代码
# Python 推荐写法
arr = [1, 2, 3]
result = [x * 2 for x in arr]
# 筛选
result = [x for x in arr if x > 2]

为什么 Python 喜欢这样写?因为这叫:列表推导式(List Comprehension),它兼顾:简洁、可读性、性能,在 Python 中非常常见。

八、对象在 Python 里叫 dict

js 复制代码
// JavaScript
const user = {
  name: "Tom",
  age: 18
}
// 读取
user.name
py 复制代码
# Python
user = {
    "name": "Tom",
    "age": 18
}
# 读取:
user["name"]
# 修改:
user["age"] = 20

注意区别,JavaScript 对象很多时候既是数据结构,也是实例对象。

Python 更明确区分:字典(dict)是键值数据结构,类实例(class object)是对象。

九、类与 this:Python 用 self

js 复制代码
// JavaScript
class User {
  constructor(name) {
    this.name = name
  }

  say() {
    console.log(this.name)
  }
}
py 复制代码
# Python
class User:
    def __init__(self, name):
        self.name = name

    def say(self):
        print(self.name)
        
u = User("Tom")
u.say()

理解 self

你可以把它理解成:Python 把 JavaScript 隐式的 this,变成了显式参数 self。这样做的好处是更直观,也更明确。

十、模块系统:import / export 与 Python 的区别

JavaScript 模块(ES Module)

js 复制代码
// 导出
export const name = "Tom"

export function add(a, b) {
  return a + b
}

// 导入
import { name, add } from "./utils.js"

Python 模块系统

Python 没有 export 关键字,一个 .py 文件天然就是一个模块。

py 复制代码
# 比如你有一个 utils.py 文件,内容:
name = "Tom"
def add(a, b):
    return a + b
    
    
# 导入模块
import utils
print(utils.name)
print(utils.add(1, 2))

# 解构导入(类似 JS)
from utils import name, add
print(name)
print(add(1, 2))

起别名

py 复制代码
import utils as u

from utils import add as plus

对比总结

JavaScript Python
export 默认公开
import xxx from import xxx
import { a } from from xxx import a
import * from xxx import *(不推荐)

Python 为什么没有 export?

因为 Python 默认认为模块中的变量和函数都可以被导入。如果你不想被导入,通常约定写成_internal_var的形式,下划线表示"内部使用"。

十一、文件操作

js 复制代码
//  JavaScript
const fs = require("fs")
const text = fs.readFileSync("a.txt", "utf8")
py 复制代码
# Python
with open("a.txt", "r", encoding="utf-8") as f:
    text = f.read()

print(text)

with open()会自动关闭文件资源。这是 Python 非常经典的写法。


十二、异常处理

js 复制代码
// JavaScript
try {
  run()
} catch (e) {
  console.log(e)
}
py 复制代码
# Python
try:
    run()
except Exception as e:
    print(e)

# 多种异常捕获
try:
    pass
except ValueError:
    pass
except TypeError:
    pass

十三、包管理:npm 对应 pip

base 复制代码
# JavaScript
npm install axios

# Python
pip install requests

项目依赖文件

JavaScript:package.json

Python 常见:requirements.txtpyproject.toml

十四、如果你是 Node.js 开发者,Python 后端怎么选?

Node.js Python
Express Flask
NestJS FastAPI
Fullstack Framework Django

如果你追求现代开发体验,建议优先学:FastAPI,因为它对 JS 开发者非常友好。

十五、总结

如果你会 JavaScript,学习 Python 并不是重新学编程。你只是在学习另一种更简洁、更稳定、更适合工程和工具开发的表达方式。JavaScript 像一个灵活的年轻人,Python 像一个经验丰富的老工程师,它们并不冲突。

相关推荐
SailingCoder1 小时前
Electron 安全IPC核心:contextBridge 安全机制
javascript·安全·electron
a9511416422 小时前
SQL触发器实现自动生成流水号_配合序列对象实现递增逻辑
jvm·数据库·python
哦哦~9212 小时前
FDTD 与 Python 联合仿真的超表面智能设计技术与应用
python·fdtd·超表面
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月21日
人工智能·python·信息可视化·自然语言处理·ai编程
WebInfra2 小时前
Rsbuild 2.0 发布:即将支持 TanStack Start
前端·javascript·程序员
解救女汉子2 小时前
mysql如何配置元数据锁超时_mysql lock_wait_timeout设置
jvm·数据库·python
掘金安东尼2 小时前
OpenMUSE 全面详解:非扩散Transformer文生图开源基座(对标GPT Image 2)
前端·javascript·面试
21439652 小时前
SQL注入防御技术方案_基于正则表达式的输入清洗
jvm·数据库·python
2401_832365522 小时前
SQL窗口函数与递归查询的区别_如何根据场景选择
jvm·数据库·python