Python和JavaScript字符串方法及运算符对照
字符串方法:
- 大小写转换:Python用str.upper(),JS用str.toUpperCase()
- 查找替换:Python的replace()默认全局替换,JS需正则/g或replaceAll()
- 切片操作:Python支持str[start:end:step],JS用slice(start,end)
- 包含检查:Python用in运算符,JS用includes()方法
运算符差异:
- 比较运算:Python的==严格类型检查,JS会隐式转换
- 除法:Python的/返回浮点数,//整除;JS只有/
- 自增:Python不支持++/--,JS支持
- 逻辑运算:Python用and/or,JS用&&/||
- 类型检查: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。 |
关键记忆点(快速对照)
-
大小写方法 :Python 是
upper(),JS 是toUpperCase()(记住 JS 带to前缀) -
全局替换 :Python
replace()默认全局,JS 默认只替换第一个(需正则/g或replaceAll) -
连接字符串 :Python
'-'.join(list)vs JSlist.join('-')(连接符与数组谁调用谁) -
包含检查 :Python
sub in strvs JSstr.includes(sub) -
修剪 :Python
strip()可删任意字符,JStrim()只能删空白 -
切片 :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 2 → 0 1 or 0 → 1 |
0 && 2 → 0 `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特有 |
关键差异速记(面试/刷题重点)
-
除法符号规则:
-
Python
//整除,JS 无 -
取模
%结果符号:Python 与除数 同号,JS 与被除数同号
-
-
相等比较(最容易踩坑):
-
Python:
==不转换类型,1 == '1'→False -
JS:
==会转换类型,1 == '1'→True;推荐始终用===
-
-
逻辑运算符:
-
Python 用
and/or/not(单词) -
JS 用
&&/||/!(符号) -
两者都返回操作数本身(不强制转布尔)
-
-
自增/自减:
-
Python:无
++/--,需写a += 1 -
JS:支持
i++/i--
-
-
类型转换:
-
Python:比较不同类型通常报错(如
1 > 'a'→TypeError) -
JS:会隐式转换(如
1 > 'a'→false,因为'a'转NaN)
-
-
身份比较 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) { |
建议学习路线
-
先掌握 Python:类型严格,逻辑清晰,适合建立正确编程思维
-
再转 JavaScript :重点关注其隐式转换规则 和
===的使用 -
练习题推荐 :比较
0 == false、null == undefined、[] == ![]在两种语言中的结果
在 Python 中,逻辑运算符的优先级从高到低为:
not>and>or。
优先级 运算符 说明 最高 not逻辑非 中等 and逻辑与 最低 or逻辑或