python作者 es6_我为什么建议Python开发者将ES6作为第二语言

ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

为什么建议学习 ES6?

先从我的经历说起吧!小编大二的时候,开始接触 web 开发,那时候 web 开发技术栈基本上是 php+html+Javascript, JavaScript 功能十分强大,但是学习曲线非常陡峭,对新手不够友好。

后来,我上研究生的时候,Python 凭借大数据火了,我的主流开发语言就变成 Python 了。与此同时,前端也迎来了从 MVC 架构到 MVVM 架构的变革,出现了组件化开发,前后端分离开发, SPA 单页应用等新概念,产生了代表性的框架 Vue, React 等,在 Facebook、阿里、腾讯等大厂得到了大规模应用。使用这些框架不必再去了解晦涩难懂的原生 JavaScript 了,就像当初 jquery 代替原生的 JavaScript 一样。而这些前端框架几乎都是基于 ES6 的,改版后的ES6, 上手难度大大减小。

React vs Vue

从本科到研究生,再到现在工作,Python 和 ES6 一直是我最喜欢的语言。

我选择这两个语言搭配的理由是:Python+ES6 配合使用,基本算一个全栈工程师了,本人也算半个全栈吧,使用这两个语言能让我够轻松应对爬虫、前端、后端、机器学习、NLP 开发等日常工作。掌握一些前端的技术,是十分有用的,毕竟有时候,算法再酷,也需要产品包装一下。研究生期间,这套技能组合,让我接到了一些业余的小项目,现在工作了,虽然自己是 NLP 算法工程师,但有过排期经验的都懂,一个需求下来就是一个月,因此偶尔也会自己去撸 demo。

ES6语言容易上手,因为很多语法都是借鉴Python的。说出来可能有些夸张,我压根没有系统的去学习ES6,做项目的时候,看一看别人的例子,很多代码直接就写出来了,很多语法按照Python的理解,基本上都能猜出来。程序员最讨厌的两件事:不写注释和写注释

之所以没有做更多的注释,除了想偷个懒之外,我觉得把两个语言放在一起,代码的意思不言自明。

基本数据类型对比

基本数据类型

数组/列表操作// JavaScriptlet arr = [1,2,3,4,5]arr.push(5)console.log(arr) // [1,2,3,4,5,5]arr.pop()console.log(arr) // [1,2,3,4,5]# Pythonl = [1,2,3,4,5]l.append(5)print(l) // [1,2,3,4,5,5]l.pop()print(l) // [1,2,3,4,5]

字符串切片// JavaScriptlet s = '123456'console.log(s.split('')) // ["1", "2", "3", "4", "5", "6"]# Pythons = '123456'print(s.split('')) / ["1", "2", "3", "4", "5", "6"]

变量定义对比// JavaScriptlet coerced = 1;let concatenated = coerced + 'string';# Pythonnot_coerced = 1concatenated = str(not_coerced) + 'string'

函数对比// JavaScriptfunction drSeuss(catInTheHat, thing1, thing2){ if (catInTheHat == true && thing1 == true && thing2 == true) { console.log('is cray'); } elseif (catInTheHat != true) { console.log('boring'); } else { console.log('so boring'); }}# Pythondef dr_seuss(cat_in_the_hat, thing1, thing2): if cat_in_the_hat == Trueand thing2 == Trueand thing2 == True: print'is cray' elif cat_in_the_hat != True: print'boring' else: print'so boring'

模板字符串对比// JavaScriptlet exclamation = 'Whoa!';let sentence = `They are really similar to Python.`;console.log(`Template Literals: ${exclamation} ${sentence}`);# pythonprint'打印: {} {}'.format('Whoa.', 'Quite!')# 打印: Yup. Quite!

参数默认值对比// JavaScriptfunction nom(food="ice cream"){ console.log(`Time to eat ${food}`);}nom();// Time to eat ice cream# Pythondef nom(food="ice cream"): print'Time to eat {}'.format(food)nom() # Time to eat ice cream

类对比// JavaScriptclass Mammal{ constructor() { this.neocortex = true; }}class Cat extends Mammal{ constructor(name, years) { super(); this.name = name; this.years = years; } eat(food) { console.log('nom ' + food); }}# Pythonclass Mammal(object): neo_cortex = Trueclass Cat(Mammal): def __init__(self, name, years): self.name = name self.years = years def eat(food): print'nom %s' % (food)fry_cat = Cat('Fry', 7)fry_cat.eat('steak')

模块导入对比# JavaScriptimport { myvar, myfunc } from"./mymodule";console.log(myvar);myfunc();# Pythonfrom mymodule import myvar, myfuncprint myvarmyfunc()

后记

最近在看 Martin Fowler 的经典老书《重构 改善既有代码的设计》,第一版 2003 年出版,用的是 Java 来讲解的,2019 年第二版发布了, 并用 JavaScript 语言重写了代码范例,读起来就像看 Python 代码一样浅显易懂,感兴趣的可以翻一翻。

重构(第2版)全彩精装版

扫码下图关注我们不会让你失望!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值