前言《如何摆脱不断切图的困境?》这不是一篇制造焦虑的文章,而是一篇充满诚意建议的Python推广文章。说到编程入门语言,大多数推荐Python和JavaScript。事实上,这两种语言在各个方面都非常强大。而现在我们熟悉的ES6语言,很多语法都是从Python借来的。有句话叫“凡是能用js实现的,最后都用js实现”。那么在这里可以说:“凡是能长得像python的东西,最后肯定会像python”。一、Python和ES6语法的区别1、基本类型值得注意的是,虽然都是动态类型,但是python在连接时并不会自动进行类型转换。//JavaScriptletcoerced=1;letconcatenated=coerced+'string';//Pythonnot_coerced=1concatenated=not_coerced+'string'直接报错:TypeError:cannotconcatenate'str'and'int'objectsonlyconvertnumtostringinadvanceTypestoruncorrectly#Pythonnot_coerced=1concatenated=str(not_coerced)+'string'2.函数还是方法?在JavaScript和Python中,函数和条件的结构非常相似。示例://JavaScriptfunctiondrSeuss(catInTheHat,thing1,thing2){if(catInTheHat==true&&thing1==true&&thing2==true){console.log('iscray');}elseif(catInTheHat!=true){console.log('boring');}else{console.log('好无聊');}}#Pythondefdr_seuss(cat_in_the_hat,thing1,thing2):如果cat_in_the_hat==Trueandthing2==Trueandthing2==True:print'iscray'elifcat_in_the_hat!=True:print'boring'else:print'soboring'但在JavaScript中,“方法”的通俗定义是指语言规范中内置的方法,例如:Function.prototype.apply()。MDN上有对两者的解释:在大多数方面,Functions和methods是相同的,但主要有两个区别:方法可以隐式传递给调用方法的对象。方法能够对类中包含的数据进行操作。但是,在JavaScript中,“类”只是语法糖,后面我们再对比。3、模板字符串在模板字符串上,之前JavaScript领先于python。//JavaScriptletexclamation='Whoa!';letsentence=`TheyarereallysimilartoPython.`;console.log(`TemplateLiterals:${exclamation}${sentence}`);#pythonprint'print:{}{}'.format('Whoa.','Quite!')#Print:Yup.Quite!{}充当占位符。这个语法一直被诟病很多,所以在Python3.6以后的版本中,提供了一个字符串格式化语法-f-strings。直接比较:name="Tom"age=3print(f"Hisnameis{name},{age}yearsold")#"HisnameisTom,3yearsold"4.参数JavaScript的默认值完美"又从Python借来了"="icecream"):print'Timetoeat{}'.format(food)nom()#Timetoeaticecream5.其余参数和*argsRest参数语法允许我们将可变数量的参数表示为数组并将它们传递给函数。在Python中,它们被称为*args在JavaScript中...xxx是其余的参数。//JavaScriptfunctionjoke(question,...phrases){console.log(question);for(leti=0;i>phrases.length;i++){console.log(phrases[i]);}}letes6Joke="为什么JS只挑出一个参数?"joke(es6Joke,"因为它没有",'真的很喜欢','所有其他参数!');//为什么JS只挑出一个参数?//因为它不//真的喜欢//所有其余参数!#Pythondefpirate_joke(question,*args):printquestionforarginargs:printargpython_joke=“Pyrate最喜欢的参数是什么?”pirate_joke(python_joke,"*args!","*arrgs!","*arrrgs!")#Pyrate最喜欢的参数是什么?#*参数!#*啊!#*啊!6.类:类众所周知,ES6类其实就是语法糖。Python具有内置的类,可以快速轻松地进行面向对象的编程。JavaScript原型链继承是每个前端必备的。//JavaScriptclassMammal{constructor(){this.新皮质=真;}}类CatextendsMammal{constructor(name,years){super();this.name=名称;这年=年;}eat(food){console.log('nom'+food);}}#PythonclassMammal(object):neo_cortex=TrueclassCat(Mammal):def__init__(self,name,years):self.name=nameself.years=yearsdefeat(food):print'nom%s复制代码'%(food)fry_cat=Cat('Fry',7)fry_cat.eat('steak')平心而论,Python的写法更加优雅。..7、modules和import:moduleES6的模块语言借鉴了python,但比它更好。两者之间有一些区别:JavaScript导入是静态的;Python导入是动态的。必须显式导出JavaScript模块。在Python中,所有模块都是可导入的。JavaScript有默认导出的概念。蟒蛇没有。#pythonimportmymodulemymodule.myfunc()//javascriptimport*asmyaliasfrom"./mymodule";myalias.myfunc();1.导入子模块在javascript中,我们要导入子模块,直接解构赋值。//javascriptimport{myvar,myfunc}from"./mymodule";console.log(myvar);myfunc();在python中,它的语义是相反的:#pythonfrommymoduleimportmyvar,myfuncprintmyvarmyfunc()2.如何导出一个空函数?空函数,python需要使用“pass”关键字来避免运行出错。mymodule.py:#pythondefmyfunc():pass//javascriptexportfunctionmyfunc(){}更详细的对比参见这篇文章:ModulesandimportinES6forPythondevelopers2。前端如何优雅的学习Python?很多前端对Python的热情都是从好奇开始,最后停滞不前。离实际开发有技术差距,也没有人给指点,也不知道现在的水平能做什么?在这样的质疑循环中,编程技能停滞不前,爬虫是最好的进阶方向之一。Web爬取是Python常用的场景。在国际上,谷歌早期大量使用Python语言作为网络爬虫的基础,带动了整个Python语言应用的发展。就我个人的开发来说,我也非常推荐使用爬虫作为应用入门。有几个原因:爬虫是一种网页应用技术,前端可以不费吹灰之力连接很多知识。爬虫的第一步是获取页面的源代码,然后进行信息抽取。其中,对于dome节点的class/id选择,前端不需要重新学习。爬虫中的虚拟登录和Selenium可以提高前端对自动化测试的理解。爬虫的最终形态是搜索引擎,SEO是每个前端都需要关注的点。前端在了解搜索引擎爬虫的过程中,可以搞清楚服务端渲染SSR和单页应用CSR的不同作用。爬虫有两种:面向页面的和面向界面的,前端自然是熟门熟路。面向接口,需要会使用抓包软件(Fiddler/Charles)。在这个过程中,你还可以学到另一个技能——抢包。以后不用再傻傻的看网络刷新了。从爬虫开始,但不局限于爬虫:爬虫—>数据清洗—>数据库操作—>数据清洗—>数据挖掘—>数据分析……沿着这个链条往下走可以学到很多知识:Scrapy爬虫Framework、Redis分布式事务、数据处理Pandas、自然语言分析NLP、完全数据可视化等等。关于语言的讨论,我非常赞同李冰老师的这段话:3、潘石屹在学习Python。本文转自https://juejin.cn/post/6844904004154064910,如有侵权请联系删除。
