Python 和 JavaScript 对照学习:字符串方法、运算符及其规则

Python和JavaScript字符串方法及运算符对照


字符串方法:

  1. 大小写转换:Python用str.upper(),JS用str.toUpperCase()
  2. 查找替换:Python的replace()默认全局替换,JS需正则/g或replaceAll()
  3. 切片操作:Python支持str[start:end:step],JS用slice(start,end)
  4. 包含检查:Python用in运算符,JS用includes()方法

运算符差异:

  1. 比较运算:Python的==严格类型检查,JS会隐式转换
  2. 除法:Python的/返回浮点数,//整除;JS只有/
  3. 自增:Python不支持++/--,JS支持
  4. 逻辑运算:Python用and/or,JS用&&/||
  5. 类型检查:Python用is/is not,JS用===/!==

关键记忆点:

  • JS存在隐式类型转换风险,推荐使用===
  • Python的字符串方法更丰富(如strip()支持指定字符)
  • 两种语言的运算符优先级相似但符号表示不同

Python和JavaScript对照学习


Python和JavaScript的字符串方法


以下是Python和JavaScript常用字符串方法的对照表。它对比了两者在语法、功能、返回值典型示例上的异同,帮助你对照学习。


Python与JavaScript字符串方法对照表

功能分类 Python 方法 (示例) JavaScript 方法 (示例) 主要差异与注意点
大小写转换 str.upper() str.lower() str.toUpperCase() str.toLowerCase() 语法不同 :Python 是方法(如 s.upper()),JS 是函数式方法(如 s.toUpperCase())。
str.capitalize() 无直接对应 Python 将首字母大写,其余小写。JS 需自定义或组合方法实现。
str.title() 无直接对应 Python 将每个单词首字母大写。
查找与判断 str.find(sub) 返回索引,找不到返回 -1 str.indexOf(sub) 返回索引,找不到返回 -1 功能相似,但 JS 还有 lastIndexOf() 从右查找。
str.index(sub) 找不到抛出 ValueError str.indexOf(sub) 找不到返回 -1 Python index() 更严格;JS 无直接等效异常版。
str.startswith(prefix) 返回 bool str.startsWith(prefix) 返回 bool 语法相同,功能一致。
str.endswith(suffix) 返回 bool str.endsWith(suffix) 返回 bool 同上。
内容检查 str.isalpha() str.isdigit() str.isalnum() 无直接方法 JS 通常用正则表达式实现,如 /^\d+$/
str.isspace() 无直接方法 JS 需正则或遍历判断。
修剪空白 str.strip() 移除首尾指定字符(默认空白) str.trim() 只能移除空白,不能指定其他字符 功能不同:Python 更灵活,可指定删除字符集。
str.lstrip(), str.rstrip() str.trimStart(), str.trimEnd() 左右修剪,JS 版本较新(ES2019)。
拆分与连接 str.split(sep) 返回列表 str.split(sep) 返回数组 行为相似,但 JS 可带限制参数 split(sep, limit)
sep.join(iterable)'-'.join(['a','b']) arr.join(sep)['a','b'].join('-') 调用对象相反:Python 连接符调用,JS 数组调用。
替换 str.replace(old, new) 默认替换所有出现 str.replace(old, new) 默认只替换第一个 核心差异 :JS 需用正则 /old/g 实现全局替换。
str.replace(old, new, count) 可指定替换次数 str.replaceAll(old, new) ES2021 引入,全部替换 Python count 参数更灵活。
切片与提取 str[start:end:step] 切片语法,返回新字符串 str.slice(start, end)str.substring(start, end) Python 切片功能更强大(支持步长、负数索引)。
str[start:end]slice 类似 str.substr(start, length) (已弃用,建议用 slice 建议 JS 用 slice 保持与 Python 相似逻辑。
填充与对齐 str.center(width[, fillchar]) 无直接方法 可用 padStart() / padEnd() 组合模拟,但复杂。
str.ljust(width[, fillchar]) str.rjust(width[, fillchar]) str.padEnd(targetLength[, padString]) str.padStart(targetLength[, padString]) 功能相似,但参数名不同(ljust 对应 padEnd 注意对应关系)。
检查包含 sub in str 返回 bool str.includes(sub) 返回 bool Python 使用成员运算符 in,JS 用方法。
计数 str.count(sub) 返回子串出现次数 无直接方法 JS 可用 match() 配合正则,或 split().length-1 变通。
格式化 f"{name}={value}" "{}={}".format(name, value) 模板字符串 ${name}=${value} 字符串拼接 Python 有多种格式化方式;JS 模板字符串功能类似 f-string。

关键记忆点(快速对照)

  1. 大小写方法 :Python 是 upper(),JS 是 toUpperCase()(记住 JS 带 to 前缀)

  2. 全局替换 :Python replace() 默认全局,JS 默认只替换第一个(需正则 /greplaceAll

  3. 连接字符串 :Python '-'.join(list) vs JS list.join('-')(连接符与数组谁调用谁)

  4. 包含检查 :Python sub in str vs JS str.includes(sub)

  5. 修剪 :Python strip() 可删任意字符,JS trim() 只能删空白

  6. 切片 :Python [start:end:step] 更强大,JS 只有 slice(start, end) 类似


Python和JavaScript的运算符及其规则


以下是Python和JavaScript运算符的对照表,涵盖算术、比较、逻辑、赋值、位运算等主要类别,重点标注两者在行为、类型转换和可用性上的核心差异。

Python与JavaScript运算符对照表

类别 运算符 Python 行为 JavaScript 行为 关键差异与注意点
算术 + 数值加法;字符串拼接 数值加法;字符串拼接 两者类似,但JS会自动类型转换(如 1 + '1' = '11'
- * / 标准算术运算 标准算术运算 JS中非数值会尝试转为数值(如 '5' - 3 = 2
/ 结果为浮点数 (如 5/2=2.5 结果为浮点数 (如 5/2=2.5 一致
// 整除 (向下取整,如 5//2=2 ❌ 无 JS可用 Math.floor(5/2) 模拟
% 取余(结果符号与除数相同) 取余(结果符号与被除数相同) 符号规则不同-5 % 2 → Python: 1,JS: -1
** 幂运算(如 2**3=8 幂运算(ES2016+,如 2**3=8 相同
++ -- ❌ 无 ✅ 自增/自减(前置/后置) Python不支持自增/自减运算符
比较 == 值比较(不转换类型) 松散相等(会类型转换) ⚠️ 重大差异 :JS的 == 会转换类型,Python不会
!= 值不等(不转换类型) 松散不等(会类型转换) 同上
=== ❌ 无 严格相等(不转换类型) JS特有,推荐使用
!== ❌ 无 严格不等(不转换类型) JS特有
> < >= <= 值比较(不同类型报错) 值比较(会类型转换) JS可比较字符串与数字(如 '5' > 3 = true
逻辑 and / or / not 返回操作数本身(短路求值) 使用 && / `
示例 0 and 20 1 or 01 0 && 20 `1
赋值 = += -= 标准赋值及复合赋值 标准赋值及复合赋值 基本一致
链式赋值 a = b = 1 a = b = 1 均支持
解包赋值 a, b = 1, 2 [a, b] = [1, 2] Python更简洁;JS需数组/对象解构
位运算 & ` ^` `~` `<<` `>>` 整数位运算 32位有符号整数位运算
>>> ❌ 无 无符号右移(补0) JS特有
身份 is / is not 比较内存地址(是否同一对象) ❌ 无 Python特有;JS用 === 比较引用类型地址
typeof 返回变量类型字符串
instanceof 检查原型链
三元 x if condition else y ✅ 表达式形式 condition ? x : y 语法不同,功能相同
特殊 ?? (空值合并) 仅当左值为 null/undefined 取右值
?. (可选链) 安全访问深层属性
in 检查序列/字典是否包含键 检查对象是否有该属性 Python用于序列/映射;JS用于对象/数组
not in 反向 in ❌ 无直接对应 Python特有

关键差异速记(面试/刷题重点)

  1. 除法符号规则

    • Python // 整除,JS 无

    • 取模 % 结果符号:Python 与除数 同号,JS 与被除数同号

  2. 相等比较(最容易踩坑)

    • Python:== 不转换类型,1 == '1'False

    • JS:== 会转换类型,1 == '1'True推荐始终用 ===

  3. 逻辑运算符

    • Python 用 and/or/not(单词)

    • JS 用 &&/||/!(符号)

    • 两者都返回操作数本身(不强制转布尔)

  4. 自增/自减

    • Python:无 ++/--,需写 a += 1

    • JS:支持 i++/i--

  5. 类型转换

    • Python:比较不同类型通常报错(如 1 > 'a'TypeError

    • JS:会隐式转换(如 1 > 'a'false,因为 'a'NaN

  6. 身份比较 vs 相等比较

    • Python 用 is 检查同一对象,== 检查值相等

    • JS 中 === 对于引用类型比较的是地址 (类似 Python 的 is),== 会类型转换

示例对照(同一逻辑的两种写法)

场景 Python JavaScript
整除 quotient = 7 // 3 # 2 let quotient = Math.floor(7 / 3);
严格相等 if a == b: if (a === b) {
逻辑与返回原值 result = 0 and 5 # 0 let result = 0 && 5; // 0
三元表达式 age = 18 if adult else 12 let age = adult ? 18 : 12;
自增 count += 1 count++;
检查属性 if 'key' in dict: if ('key' in obj) {

建议学习路线

  1. 先掌握 Python:类型严格,逻辑清晰,适合建立正确编程思维

  2. 再转 JavaScript :重点关注其隐式转换规则=== 的使用

  3. 练习题推荐 :比较 0 == falsenull == undefined[] == ![] 在两种语言中的结果


在 Python 中,逻辑运算符的优先级从高到低为:not > and > or


优先级 运算符 说明
最高 not 逻辑非
中等 and 逻辑与
最低 or 逻辑或
相关推荐
m0_743623922 小时前
Python如何计算NumPy数组的协方差矩阵_调用cov函数进行特征分析
jvm·数据库·python
qq_380619162 小时前
Layui表格怎么隐藏指定列
jvm·数据库·python
21439652 小时前
mysql如何通过yum源快速安装_mysql官方yum安装教程
jvm·数据库·python
c***89202 小时前
python爬虫——爬取全年天气数据并做可视化分析
开发语言·爬虫·python
qq_654366982 小时前
mysql如何选择存储引擎_mysql MyISAM与InnoDB深度对比
jvm·数据库·python
21439652 小时前
MySQL升级如何回滚到旧版本_灾难恢复方案与快照备份恢复
jvm·数据库·python
AC赳赳老秦2 小时前
HR必备:OpenClaw批量筛选简历、发送面试通知,优化招聘流程
运维·人工智能·python·eclipse·github·deepseek·openclaw
qq_372154232 小时前
HTML怎么处理右键菜单_HTML contextmenu自定义(已废弃)替代方案【指南】
jvm·数据库·python
weixin_568996062 小时前
Redis怎样定位每秒被高频访问的热点键
jvm·数据库·python