Python和JavaScript中的类似物。 第一部分

哈Ha! 我向您介绍了文章“ Python和JavaScript中的等效项。第1部分”的翻译


尽管Python和Javascript有很大的不同,但是任何全栈开发人员都应该意识到许多相似之处。 在 4篇文章系列中,我们将了解两种语言的共同点,并考虑许多已知问题以及解决这些问题的方法。


这不是参考;将没有有关变量,if和循环类型的基本信息。
但是,我们将使用Python和Javascript查看更复杂的数据结构及其操作。


我还将通过实际示例进行说明。


使用Django,Flask或任何其他想要学习更多有关现代Javascript的Python框架的支持者将对本系列感兴趣。 另一方面,这些文章对希望更好地了解后端工作原理,甚至希望在Django上编写其站点的领先者很有用。


本系列的其他文章:


  1. 第二部分 :JSON,常规,异常错误
  2. 第三部分 :现代Python和JS:字符串模式(f字符串),列表解压缩,lambda函数,列表迭代,生成器,集合。
  3. 第四部分是函数参数,创建并使用类,继承,setter getter和类属性。

类型转换


让我们首先将字符串转换为整个字符串。 在Python中,一切都很简单明了:


number = int(text) 

但是在JS中,您必须说明将导致什么系统-十进制,八进制,十六进制或二进制:


 number = parseInt(text, 10); 

要使用通常的十进制系统,我们将10作为第二个参数传递给parseInt()函数。 八进制为8,十六进制为16或二进制为2。 如果省略第二个参数,则数字从零开始,并且您使用的是过时的浏览器,带有文本的行将被解释为八进制:


 parseInt('012') == 10 //     parseInt('012', 10) == 12 

条件分配


尽管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] # [1, 2] last_two = items[-2:] # [4, 5] middle_three = items[1:4] # [2, 3, 4] 

JS具有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] 

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


在Python中, [:]运算符也适用于字符串:


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

在JS中,字符串也具有slice()方法:


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

清单操作


在编程中,您通常必须收集和分析一系列元素。 在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'] 

同样在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'] 

连接字符串集


使用空格,逗号或换行符作为连接字符,将一组字符串元素组合为一行。


在Python中,为此使用join()字符串方法,该方法将列表或元组作为参数。 对于未初始化的对象(使用Python语法),以分隔符开头的表达式似乎很奇怪,但是在常规使用后,您将习惯这种表示形式:


 items = ['A', 'B', 'C'] text = ', '.join(items) # 'A, B, C' 

在JS中,数组有一个join()方法,其中有一个分隔符作为参数:


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

总结一下


  • Python中的列表和元组与Javascript中的数组相对应。
  • Python中的字典对应于Javascript中的对象。
  • Python中的字符串类似于Javascript中的字符串。
  • 在Javascript中,请小心记住字符串,记住数字系统。
  • 单行条件表达式以其语言存在。
  • Python中字符串序列( ' '.join )的组合会阻止语法中的未初始化者,但是您很快就会习惯它。

在下一个系列中,我们将介绍如何创建和解析JSON,正则表达式以及处理错误和异常!

Source: https://habr.com/ru/post/zh-CN416617/


All Articles