哈Ha! 我向您介绍了文章“ Python和JavaScript中的等效项。第1部分”的翻译 。
尽管Python和Javascript有很大的不同,但是任何全栈开发人员都应该意识到许多相似之处。 在这 4篇文章系列中,我们将了解两种语言的共同点,并考虑许多已知问题以及解决这些问题的方法。
这不是参考;将没有有关变量,if和循环类型的基本信息。
但是,我们将使用Python和Javascript查看更复杂的数据结构及其操作。
我还将通过实际示例进行说明。
使用Django,Flask或任何其他想要学习更多有关现代Javascript的Python框架的支持者将对本系列感兴趣。 另一方面,这些文章对希望更好地了解后端工作原理,甚至希望在Django上编写其站点的领先者很有用。
本系列的其他文章:
- 第二部分 :JSON,常规,异常错误
- 第三部分 :现代Python和JS:字符串模式(f字符串),列表解压缩,lambda函数,列表迭代,生成器,集合。
- 第四部分是函数参数,创建并使用类,继承,setter getter和类属性。
类型转换
让我们首先将字符串转换为整个字符串。 在Python中,一切都很简单明了:
number = int(text)
但是在JS中,您必须说明将导致什么系统-十进制,八进制,十六进制或二进制:
number = parseInt(text, 10);
要使用通常的十进制系统,我们将10作为第二个参数传递给parseInt()函数。 八进制为8,十六进制为16或二进制为2。 如果省略第二个参数,则数字从零开始,并且您使用的是过时的浏览器,带有文本的行将被解释为八进制:
parseInt('012') == 10
条件分配
尽管Python和JS为此使用了不同的语法,但是该操作在两种语言中都很流行。 之所以流行,是因为在一个表达式中可以为True和False案例分配不同的值。
从Python 2.7开始,条件赋值看起来像这样:
value = 'YES' if positive == True else 'NO'
在JavaScript中,条件赋值是使用三元运算符?
,以及C,C ++,C#,Java,Ruby,PHP,Perl,Swift和ActionScript:
value = positive === true? 'YES': 'NO';
通过属性名称访问对象属性
在Python和JS中访问对象属性的常用方法是相同的:
obj.color = 'YELLOW'
但是,如果属性名称包含在字符串变量中怎么办? 例如,可以从属性列表中获得属性的名称,或者该属性的名称由两个字符串变量组成: "title" + land_code
。
在Python中,为此存在getattr()
和setattr()
函数:
attribute = 'color' value = getattr(obj, attribute, 'GREEN') setattr(obj, attribute, value)
在JS中,您可以将对象像字典一样对待,并在方括号中传递属性名称:
attribute = 'color'; value = obj[attribute] || 'GREEN'; obj[attribute] = value;
要获得不存在具有相同名称的属性的默认值,Python中的getattr()
函数为此提供了第三个参数。 在JS中,如果缺少所请求的属性,则该函数将返回undefined
。 可以将其与具有默认值的OR
运算符进行比较-这是JS中的标准做法-该方法可以在许多框架和库中找到。
关键词典访问
与上述类似。 密钥通常在两种语言的方括号中表示:
dictionary = {} dictionary['color'] = 'YELLOW'
对于键访问,Python使用带方括号的标准语法,但是,如果缺少此键,则会抛出带有KeyError
错误的异常。
get()
方法更加灵活,如果没有键,它将返回None
。 您还可以传递一个值,如果键丢失,该值将返回:
key = 'color' value = dictionary.get(key, 'GREEN')
在JS中,您可以执行与对象属性相同的技巧- OR
使用默认值:
key = 'color'; value = dictionary[key] || 'GREEN';
切片:列表和字符串
Python有一个运算符[:]
获取列表,元组或类似结构的一部分。 一个对象类型为Django QuerySets
的示例:
items = [1, 2, 3, 4, 5] first_two = items[:2]
JS具有slice()
方法,具有相同的效果:
items = [1, 2, 3, 4, 5]; first_two = items.slice(0, 2);
但是不要与修改原始数组的splice()
方法混淆!
在Python中, [:]
运算符也适用于字符串:
text = 'ABCDE' first_two = text[:2]
在JS中,字符串也具有slice()
方法:
text = 'ABCDE'; first_two = text.slice(0, 2);
清单操作
在编程中,您通常必须收集和分析一系列元素。 在Python中,通常为此使用列表,而在Javascript中,通常使用数组。 它们具有相似的语法和操作,但是添加和删除元素的方法不同。
我们连接两个列表,在末尾添加一个元素,在末尾添加一个元素,在开始处获取和删除该元素,从末尾获取并删除该元素,并按索引删除特定的元素。
Python:
items1 = ['A'] items2 = ['B'] items = items1 + items2
同样在Javascript中:
items1 = ['A']; items2 = ['B']; items = items1.concat(items2);
连接字符串集
使用空格,逗号或换行符作为连接字符,将一组字符串元素组合为一行。
在Python中,为此使用join()
字符串方法,该方法将列表或元组作为参数。 对于未初始化的对象(使用Python语法),以分隔符开头的表达式似乎很奇怪,但是在常规使用后,您将习惯这种表示形式:
items = ['A', 'B', 'C'] text = ', '.join(items)
在JS中,数组有一个join()
方法,其中有一个分隔符作为参数:
items = ['A', 'B', 'C']; text = items.join(', ');
总结一下
- Python中的列表和元组与Javascript中的数组相对应。
- Python中的字典对应于Javascript中的对象。
- Python中的字符串类似于Javascript中的字符串。
- 在Javascript中,请小心记住字符串,记住数字系统。
- 单行条件表达式以其语言存在。
- Python中字符串序列(
' '.join
)的组合会阻止语法中的未初始化者,但是您很快就会习惯它。
在下一个系列中,我们将介绍如何创建和解析JSON,正则表达式以及处理错误和异常!