前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者: 前端劝退师

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

1. Python和ES6语法差别

基本类型

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

// JavaScript
let coerced = 1;
let concatenated = coerced + 'string';
# Python
not_coerced = 1
concatenated = not_coerced + 'string'

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

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

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

2. Functions ormethods?

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

// JavaScript
function 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');}
}
# Python
def dr_seuss(cat_in_the_hat, thing1, thing2):if cat_in_the_hat == True andthing2 == True andthing2 == 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的。

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

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

直接对比:

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

4. 参数默认值

JavaScript再次完美“借鉴”Python:

// JavaScript
function nom(food="ice cream") {console.log(`Time to eat ${food}`);
}nom();// Time to eat ice cream# Python
def nom(food="ice cream"):print 'Time to eat {}'.format(food)nom() # Time to eat ice cream

5. 其余参数和* args

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

  • 在Python中,它们称为* args
  • 在JavaScript中...xxx就表示为其余参数。
// JavaScript
function 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!# Python
def pirate_joke(question, *args):print questionfor arg in args:print argpython_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原型链继承,是每个前端的必须课。

// JavaScript
class 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);}
}# Python
class Mammal(object):neo_cortex = Trueclass Cat(Mammal):def __init__(self, name, years):self.name = nameself.years = yearsdef eat(food):print 'nom %s' % (food)fry_cat = Cat('Fry', 7)
fry_cat.eat('steak')

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

7. Modules and import:模块

ES6的模块语言借鉴于python,却优秀于它。两者之间有一些区别:

  • JavaScript导入是静态的;Python是动态的。
  • JavaScript模块必须显式导出。在Python中,所有模块均可导入。
  • JavaScript具有默认导出的概念。Python没有。
# python
import mymodule
mymodule.myfunc()// javascript
import * as myalias from "./mymodule";
myalias.myfunc();

1. 导入分模块

在javascript中,我们想导入分模块直接解构赋值就可以了

// javascript
import { myvar, myfunc } from "./mymodule";
console.log(myvar);
myfunc();

而在python,其语义则相反:

# python
from mymodule import myvar, myfunc
print myvar
myfunc()

2. 导出空函数

如何想导出一段空函数,python需要用到“pass“关键词占位,避免运行出错。 mymodule.py:

# python
def myfunc(): pass// javascript
export function myfunc() {}

前端如何优雅学会Python?

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

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

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

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

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

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

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

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

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

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

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

关于语言的讨论,我非常赞同李兵老师的这段话:

3. 潘石屹都在学Python

.

语言爬虫字段为空_我为什么建议前端将Python 作为第二语言?相关推荐

  1. python爬虫实例电商_价值上千元的Python爬虫外包案例,学会你就赚了

    前言 随着互联网时代的到来,人们更加倾向于互联网购物.某宝又是电商行业的巨头,在某宝平台中有很多商家数据. 今天带大家使用python+selenium工具获取这些公开的 适合人群: Python零基 ...

  2. springboot 不响应字段为空_面试官扎心一问:Tomcat 在 SpringBoot 中是如何启动的?...

    作者:木木匠 http://my.oschina.net/luozhou/blog/3088908 前言 我们知道 SpringBoot 给我们带来了一个全新的开发体验,我们可以直接把 web 程序达 ...

  3. python爬虫技术源码_实战|手把手教你用Python爬虫(附详细源码)

    大家好,我是J哥,专注原创,致力于用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识.最近J哥做了个爬虫小项目,感觉还挺适合新手入门的,于是迫不及待想分享给大家. 什么是爬虫? ...

  4. python3爬虫有道翻译_一篇文章教会你利用Python网络爬虫获取有道翻译手机版的翻译接口...

    [一.项目背景] 有道翻译作为国内最大的翻译软件之一,用户量巨大.在学习时遇到不会的英语词汇,会第一时间找翻译,有道翻译就是首选.今天教大家如何去获取有道翻译手机版的翻译接口. ![image](ht ...

  5. 下列选项中不属于python语言基本控制结构的是_下列选项中,不属于Python语言特点的是...

    [简答题]这个三个按钮分别表示什么?分别用图1 是?,图2是?图3是? [判断题]金属从液态转变为固态晶体的过程称为结晶. [多选题]简化的 Fe - Fe 3 C状态图上的 S 点是共析点,该点的温 ...

  6. python网络爬虫网易云音乐_一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取...

    标签下,如下图所示: 接下来我们利用美丽的汤来获取目标信息,直接上代码,如下图: 此处要注意获取ID的时候需要对link进行切片处理,得到的数字便是歌曲的ID:另外,歌曲名是通过get_text()方 ...

  7. python爬虫抓包工具_「docker实战篇」python的docker爬虫技术-fiddler抓包软件详细配置(七)...

    挑选常用的功能给各位老铁介绍下. fiddler 第一次进入fiddler fiddler会请求fiddler的官网,检查更新操作 布局分布 工具栏 File -capture traffic 开启爬 ...

  8. python语言的变量特点随时_完美契合人类习惯的Python变量和基本数据类型

    文|宝哥版权|宝哥 有趣又有深度的灵魂,相遇不易,点击'关注',让我用最走心的文字,观察世间百态.解析技术奥秘! 做科学计算和数据分析,变量是始终绕不开的话题.学习程序设计语言,理解了变量相当于掌握了 ...

  9. python语言写九九乘法表_【酷叮课堂】--Python语言完成99乘法表

    相信大家都会背诵九九乘法表,有了这个口诀,我们在算一些数时会非常方便.那么,你知道如何用Python编程输出一个乘法表吗?今天酷酷老师带你一起实现一下! 乘法表有很多不同的输出格式,所以在程序上也会有 ...

最新文章

  1. java ee有哪些工具_JavaEE开发中最常用到的技术和工具汇总
  2. 关于Linux静态库和动态库的分析
  3. Android8.1 ifw方案,Android 8.1适配规范及常见问题处理方式
  4. SqlHelper详解(转载)
  5. jvm详解、GC、堆内存参数调优
  6. python交换两个变量的值
  7. IAR astyle代码美化
  8. for 循环 and while 循环(二)
  9. Springcloud实战(五)微服务网关
  10. 图解约瑟夫环(C语言实现)
  11. 电线的一些小知识学习一下
  12. 关于语法节点Tree、类型Type和符号Symbol
  13. 格拉姆矩阵 Gram Matrix 简单理解
  14. 小程序定位,接入腾讯位置服务
  15. 移动磁盘已用空间0字节要如何办啊
  16. 【第十四篇】Flowable事件-错误事件
  17. ABAP角度看SAP货币和汇率
  18. 初出茅庐 你好C语言
  19. H7-TOOL多功能开发工具/开源/烧录器/示波器/仿真器/逻辑分析仪
  20. vivado中利用ILA抓取信号的教程

热门文章

  1. 单一窗口关区备案_深圳跨境电商企业进出口备案,赶紧码下学习
  2. 运营商服务器系统,浪潮服务器助力运营商三大支撑系统上云
  3. ue4集合类型_UE4-Sockets
  4. vba mysql连接字符串_分享一个VBA连接mysql数据库的方法
  5. 实现mvcc_MySQL 的多版本并发控制(MVCC) 是干啥的?
  6. int类型数字特别大
  7. ext 如何判断是否是整数_Excel表格技巧—如何用ISNUMBER判断是否是数值
  8. c语言编程算法精选,c语言经典程序算法【DOC精选】.doc
  9. java ssh 那一层应该捕获异常_java ssh异常(大神来看看啊)
  10. android广播示例,android接受开机广播事件