Python 和 JavaScript 中的等效方法。第一部分

2025-06-08

Python 和 JavaScript 中的等效方法。第一部分

尽管PythonJavaScript是完全不同的语言,但是全栈Python开发人员在开发 Web 项目时应该了解一些类似之处。在这个由 4 个部分组成的系列中,我将探讨每种语言的相似之处以及解决常见问题的常用方法。这并非旨在作为参考,我将跳过原始变量类型、条件和循环等基础知识。但我会深入研究使用PythonJavaScript 的更复杂的结构和数据操作。此外,我将尝试关注实际用例。对于想要掌握传统和现代原生JavaScript的 Django、Flask 或其他Python框架的开发人员来说,这个系列应该会很有趣。另一方面,它对于想要更好地了解后端如何工作甚至可能创建自己的 Django 网站的前端开发人员很有用。

解析整数

我们将从整数解析开始。

Python中这很简单:

number = int(text)
Enter fullscreen mode Exit fullscreen mode

但是在JavaScript中,你必须解释你期望的数字系统:十进制、八进制、十六进制还是二进制:

number = parseInt(text, 10);
Enter fullscreen mode Exit fullscreen mode

为了使用“常规”十进制数系统,我们将数字 10 作为parseInt()函数的第二个参数传递。8 表示八进制,16 表示十六进制,2 表示二进制。如果缺少第二个参数,文本中的数字将从零开始,并且您使用的浏览器版本稍低,则文本中的数字将被解释为八进制。例如,

parseInt('012') == 10  // in some older browsers
parseInt('012', 10) == 12
Enter fullscreen mode Exit fullscreen mode

这确实会搞乱你的计算。

条件赋值

对于条件赋值,PythonJavaScript 的语法有所不同,但条件赋值在这两种语言中都很流行。它之所以流行,是因为它只需要一个语句就能进行条件检查、判断真假。

Python 2.7 开始,您可以像这样编写条件赋值:

value = 'ADULT' if age >= 18 else 'CHILD'
Enter fullscreen mode Exit fullscreen mode

JavaScript中,条件赋值是使用三元运算符完成的?:,类似于 C、C++、C#、Java、Ruby、PHP、Perl、Swift 和 ActionScript 中的赋值:

value = age >= 18? 'ADULT': 'CHILD';
Enter fullscreen mode Exit fullscreen mode

根据属性名称指定对象属性值

访问对象属性的正常方法是通过PythonJavaScript中的点符号:

obj.color = 'YELLOW'
Enter fullscreen mode Exit fullscreen mode

但是,如果您想通过保存为字符串的名称来引用属性,该怎么办?例如,属性名称可能来自属性列表,或者属性名称由两个字符串组合而成,例如'title_' + lang_code

因此,在Python中,有函数getattr()setattr()。我经常使用它们。

attribute = 'color'
value = getattr(obj, attribute, 'GREEN')
setattr(obj, attribute, value)
Enter fullscreen mode Exit fullscreen mode

JavaScript中,您可以将对象视为字典,并将属性名称传递到方括号中:

attribute = 'color';
value = obj[attribute] || 'GREEN';
obj[attribute] = value;
Enter fullscreen mode Exit fullscreen mode

在Python中,当对象没有属性时,需要获取默认值,getattr()需要使用第三个参数。在JavaScript中,如果obj属性不存在,则返回该undefined值。然后,可以将其与要分配的默认值进行“或”运算。这是JavaScript中的常见做法,在许多JavaScript库和框架中都可以找到。

按键的字典值

这与上一个类似。在两种语言中,按键赋值字典的常规方法是使用方括号:

dictionary = {}
dictionary['color'] = 'YELLOW'
Enter fullscreen mode Exit fullscreen mode

在Python中,可以使用方括号读取值,但如果键不存在,则使用 会失败KeyError。更灵活的方法是使用返回不存在键的get()方法。此外,您还可以传递可选的默认值作为第二个参数:None

key = 'color'
value = dictionary.get(key, 'GREEN')
Enter fullscreen mode Exit fullscreen mode

JavaScript中,您可以使用与对象属性相同的技巧,因为字典和对象在那里是相同的:

key = 'color';
value = dictionary[key] || 'GREEN';
Enter fullscreen mode Exit fullscreen mode

切片列表和字符串

Python有切片[:]运算符来获取列表、元组和类似的更复杂结构的部分,例如 Django QuerySets:

items = [1, 2, 3, 4, 5]
first_two = items[:2]      # [1, 2]
last_two = items[-2:]      # [4, 5]
middle_three = items[1:4]  # [2, 3, 4]
Enter fullscreen mode Exit fullscreen mode

JavaScript中数组有slice()同样效果、用法类似的方法:

items = [1, 2, 3, 4, 5];
first_two = items.slice(0, 2);     // [1, 2] 
last_two = items.slice(-2);        // [4, 5]
middle_three = items.slice(1, 4);  // [2, 3, 4]
Enter fullscreen mode Exit fullscreen mode

但不要将其与splice()修改原始数组的方法混淆!


Python[:]中的切片运算符适用于字符串:

text = 'ABCDE'
first_two = text[:2]      # 'AB'
last_two = text[-2:]      # 'DE'
middle_three = text[1:4]  # 'BCD'
Enter fullscreen mode Exit fullscreen mode

JavaScript中,字符串就像数组一样具有以下slice()方法:

text = 'ABCDE';
first_two = text.slice(0, 2);    // 'AB'
last_two = text.slice(-2);       // 'DE'
middle_three = text.slice(1, 4); // 'BCD'
Enter fullscreen mode Exit fullscreen mode

列表项的操作

在编程中,收集和分析元素序列非常常见。在Python中,这通常使用列表来完成,而在JavaScript中则使用数组。它们具有相似的语法和操作,但用于添加和删除值的方法名称不同。

这是在 Python 中如何连接两个列表、在末尾添加一个值、在开头添加一个值、从开头获取和删除一个值、从末尾获取和删除一个值以及按索引删除某个

items1 = ['A']
items2 = ['B']
items = items1 + items2  # items == ['A', 'B']
items.append('C')        # ['A', 'B', 'C']
items.insert(0, 'D')     # ['D', 'A', 'B', 'C']
first = items.pop(0)     # ['A', 'B', 'C']
last = items.pop()       # ['A', 'B']
items.delete(0)          # ['B']
Enter fullscreen mode Exit fullscreen mode

以下是在JavaScript中对数组执行完全相同操作的方法

items1 = ['A'];
items2 = ['B'];
items = items1.concat(items2);  // items === ['A', 'B']
items.push('C');                // ['A', 'B', 'C']
items.unshift('D');             // ['D', 'A', 'B', 'C']
first = items.shift();          // ['A', 'B', 'C']
last = items.pop();             // ['A', 'B']
items.splice(0, 1);             // ['B']
Enter fullscreen mode Exit fullscreen mode

连接字符串列表

在获得字符串列表或数组后,使用逗号或换行符等分隔符将它们组合成一个字符串是很常见的。

Python中,这是通过join()传递列表或元组的字符串方法来实现的。虽然感觉可能不太自然,但你还是从分隔符开始吧。不过我保证,用几次之后你就会习惯的。

items = ['A', 'B', 'C']
text = ', '.join(items)  # 'A, B, C'
Enter fullscreen mode Exit fullscreen mode

JavaScript中,数组具有join()传递分隔符的方法:

items = ['A', 'B', 'C'];
text = items.join(', ');  // 'A, B, C'
Enter fullscreen mode Exit fullscreen mode

总结

  • Python中的列表和元组类似于JavaScript中的数组。
  • Python中的字典类似于JavaScript中的对象。
  • Python中的字符串与JavaScript中的字符串类似
  • JavaScript中的数字应谨慎解析。
  • 两种语言中都存在单行条件赋值。
  • 在Python中连接字符串序列可能会令人困惑,但您很快就能习惯它。

我整理了一份PythonJavaScript等价语言的完整列表,方便打印出来随时使用。它并排比较了传统的Python 2.7 和基于 ECMAScript 5 标准的JavaScript,以及较新的Python 3.6 和基于 ECMAScript 6 标准的JavaScript,并比较了它们各自的优势,例如字符串插值、lambda、生成器、类等等。

✨✨✨获取 Python 和 JavaScript 等效项
的终极备忘单 ✨✨✨

在本系列的下一篇,我们将探讨 JSON 的创建和解析、正则表达式的操作以及错误处理。敬请期待!


封面照片由Benjamin Hung拍摄。

鏂囩珷鏉ユ簮锛�https://dev.to/djangotricks/equivalents-in-python-and-javascript-part-1-3317
PREV
Django 与 Ruby on Rails:Web 框架比较
NEXT
Express.js API 应用程序的极简架构模式 KO 架构演示