我为什么建议前端将Python 作为第二语言? - Go语言中文社区

我为什么建议前端将Python 作为第二语言?


前言

“如何摆脱不停切图的困局?”

这不是一篇制造焦虑的文章,而是充满真诚建议的Python推广文。

当谈论到编程入门语言时,大多数都会推荐PythonJavaScript

实际上,两种语言在方方面面都非常强大。

而如今我们熟知的ES6语言,很多语法都是借鉴Python的。

有一种说法是 “能用 js 实现的,最后一定都会用 js 实现。”

那么这里可以说:“能跟python长得像的,最后一定会像python。”

1. PythonES6语法差别

1. 基本类型

值得注意的是,尽管两者都是弱类型,但python连接时并不会自动转换类型。

// JavaScriptlet coerced = 1;let concatenated = coerced + 'string';
// Pythonnot_coerced = 1concatenated = not_coerced + 'string'

直接报错:TypeError: cannot concatenate 'str' and 'int' objects

只有提前把num转换为字符串类型才能正确运行

# Pythonnot_coerced = 1concatenated = str(not_coerced) + 'string'

2. Functions ormethods?

JavaScriptPython中,函数和条件的结构极为相似。例如:

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

但在JavaScript中,“methods”的通俗定义是指语言规范中内置的方法,例如:Function.prototype.apply()

MDN上有对二者的解释:

在大多数方面,Functionsmethods相同,但有两个主要区别:

  • methods可以被隐式传递到调用该methods的对象上。
  • methods能够对类中包含的数据进行操作。

然鹅,在JavaScript中,“类”只是语法糖的存在,稍后我们再进行对比。

3. 模板字符串

在模板字符串上,JavaScript之前是领先于python的。

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

{}充当占位符。这种语法被诟病颇多,于是在后来的Python3.6版本中,又提供了一种字符串格式化语法——f-strings

直接对比:

name = "Tom"age = 3print(f"他叫 {name}, {age} 岁")# "他叫Tom, 3 岁"

4. 参数默认值

JavaScript再次完美“借鉴”Python:

// 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

5. 其余参数和* args

Rest参数语法,使我们可以将不定数量的参数表示为数组,传入函数中。

  • Python中,它们称为* args
  • JavaScript...xxx就表示为其余参数。
// JavaScriptfunction joke(question, ...phrases) {  console.log(question);  for (let i = 0; i > phrases.length; i++) {    console.log(phrases[i]);  }}
let es6Joke = "Why does JS single out one parameter?"joke(es6Joke, "Because it doesn't", 'really like', 'all the REST of them!');
// Why does JS single out one parameter?// Because it doesn't// really like// all the REST of them!
# Pythondef pirate_joke(question, *args):  print question  for arg in args:    print arg
python_joke = "What's a Pyrate's favorite parameter?"
pirate_joke(python_joke, "*args!", "*arrgs!", "*arrrgs!")
# What's a Pyrate's favorite parameter?# *args!# *arrgs!# *arrrgs!

6. Classes:类

众所周知,ES6类实际上是语法糖。Python具有内置的类,可以快速,轻松地进行面向对象的编程。

JavaScript原型链继承,是每个前端的必须课。

// 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 = True
class 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')

平心而论,Python的写法更优雅。。。

2. 前端如何优雅学会Python

许多前端对Python的热情始于好奇,终于停滞。

距离实干做开发有技术差距,也无人指点提带,也不知当下水平能干嘛?就在这样的疑惑循环中,编程技能止步不前,而爬虫是最好的进阶方向之一。

网络爬虫是Python比较常用的一个场景,国际上,google在早期大量地使用Python语言作为网络爬虫的基础,带动了整个Python语言的应用发展。

就我个人发展而已,我也十分推荐以爬虫为应用入门,原因有几项:

  • 爬虫是针对web页面的一种应用技术,前端可以无痛衔接很多知识。
  • 爬虫的第一步是获取页面源码,然后做信息抽取。其中针对dome节点的class/id选择,前端无需再度学习。
  • 爬虫中的虚拟登录及Selenium,可以提升前端对于自动化测试的理解。
  • 爬虫的最终形态是搜索引擎,当中的SEO是每个前端都需要关注的点儿。
  • 在了解搜索引擎爬虫的过程中,前端可以搞清楚服务端渲染SSR和单页应用CSR的不同作用。

爬虫分两种方式:面向页面和面向接口

  • 面向页面,前端自然轻车熟路。
  • 面向接口,需要了解到如何用抓包软件(Fiddler/Charles)。
  • 在这过程中,又能学会一项技能 - 抓包。以后不用再看着Network傻傻刷新了。

始于爬虫,却不止于爬虫:

爬虫—> 数据清洗 -> 数据库操作 -> 数据清洗 -> 数据挖掘 -> 数据分析 ...

这一条链下去,你可以学到非常非常多的知识:

Scrapy爬虫框架,Redis分布式事务,数据处理Pandas,自然语言分析NLP,完整实现数据可视化等等....

3,潘石屹都在学Python

别犹豫了,跟着劝退师一起学吧。这里我精选了一些不但技术厉害,而且又能分享赚钱之道的公众号,相信从这几个公众号,一定会找到能启发大家思路的点。

路人甲Java

工作10年的前阿里P7分享Java、算法、数据库、架构设计、程序员职场感悟、人生定位总结,买房投资等方面的技术干货!号主路人甲java先生是一个坚信用技术改变命运的男人,其奋斗的信念是希望让家人过上更体面的生活。对了,这可能是你见过的最好的java提升技术公众号分享之一!不信?来看看!

python爬虫人工智能大数据


博主90后,世界顶级金融交易公司从事Python全栈开发/机器学习,经历传奇励志 ,3次转行最终从事Python, 从上大学到毕业后买房买车,全凭自己的一己之力完成,没花父母钱,公众号有正在编写的1000道Python面试题和精心整理的Python学习资料、教程,也有博主毕业到现在的种种经历,非常值得学习!

大数据分析挖掘和Python机器学习

商业智能BI、数据分析、数据挖掘、大数据、Python、机器学习、深度学习、算法等技术分享,内容丰富,涉猎较广。想要学习技术的小伙伴,一定不要错过哦!

Python开源平台

公众号主要分享Python开发相关的技术文章,爬虫,数据挖掘,机器学习,深度学习,人工智能等领域的知识,并且有很多面试相关文章,所有资料均开源!

Python全家桶

博主211大学毕业,零基础转行Python人工智能,目前在一家人工智能公司做深度学习,公众号主要分享作者工作实战遇到的相关Python后台开发、数据挖掘、机器学习和深度学习技术,并曾拿到多家公司Python/深度学习岗位offer,面试经验丰富,欢迎与博主学习交流!

IT平头哥联盟

IT平头哥联盟 专注前端领域技术分享,有实战、有面经、有干货、也有欢乐,期待与您一起成长,用心分享 做有温度的攻城狮,欢迎大家订阅!

Python乱炖

一个BAT的小哥哥,目前从事Python全栈开发,在爬虫、web、数据分析、机器学习、web/app自动化测试、前端、UI设计等均有丰富的项目经验。经常会分享一些工作经验和面试分享。还有鹅厂,某宝,PDD,JD,字节,B站的内推职位,公众号有全网最系统最全面的Python资料,包含爬虫、web、数据分析、机器学习、web/app自动化测试

IT技术之道


是国内一家专注于技术交流分享的学习平台,在这里你可以获取海量的java、Python、前端等IT所有的学习资料,涵盖了基础技术、进阶技能、架构设计、经典书籍。人生苦短,我愿做您最忠实的技术支持伙伴!

我不是程序媛

常年混迹于程序猿圈子的运营小姐姐,上得了厅堂,下得了厨房,写不了代码,翻不了“围墙”,但可以和你聊聊互联网、职场以及程序猿的那些事儿!扫码关注,和你一起成长! 

大数据风控与机器学习

在智能风控领域耕耘多年的一枚算法研究员,主要介绍机器学习在信用反欺诈、流量反作弊、虚假交易等场景的前沿应用与工程实现。


前端劝退师的小号- Python劝退师

全栈开发工程师,专注前端&Python 领域知识分享,博客累积阅读量60W+。掘金社区,知乎专栏,微信公众号【前端劝退师】号主。

❤️ 看完三件事

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个小忙:

  1. 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
  2. 关注公众号「前端劝退师」,不定期分享原创知识。
  3. 也看看其它文章

也可以来我的GitHub博客里拿所有文章的源文件:

前端劝退指南:https://github.com/roger-hiro/BlogFN

参考资料

[1]

How Python can help you learn ES6 : https://blog.logrocket.com/how-python-can-help-you-learn-es6/


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40906515/article/details/103231750
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-27 18:49:56
  • 阅读 ( 657 )
  • 分类:前端

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢