| 原文:Python for JavaScript Developers
特别感谢Brett Langdon的认真检查
最近我开始在纽约一家创业公司工作,公司叫Underdog.io,在那我发现他们后端主要是用Python写的,而这是我之前很少接触到的语言。
我是被雇来写JavaScript喝React的,这些在我的团队中只占了很少一部分,这意味着我经常得为了找到一些特性而钻进各个代码库中。所以我必须很快地了解Python。
不幸的是,我之前想找一些给写过代码的人看的Python教程找的好艰难。我已经知道怎么写代码了而且也熟悉其他语言,我只是需要学习Python这一特定语言的语法和规范。
这是我写这篇blog的原因。给Javascript开发者一个指南,可以快速地上手Python,而不用去学习声明一个变量的意思和方法是什么。
这篇log假设你在用Python 3.0.1,所以其中一些例子可能不能在旧版本的Python上跑。
内容列表
语法
声明变量
在Python中声明一个变量非常简单。跟Javascript一样,你声明的时候也不用设置变量类型。还有你不用设置变量的作用域:
|
|
你可以改变变量的类型,只要给它赋值一个不同类型的值
|
|
不像JavaScript,Python的变量一般都是块级作用域。
块级作用域
Python在不同于JavaScript,在语法上有点更严格。如果缩进少了一个空格都可以让程序跑不起来。这是因为Python是用缩进来创建块级作用域的。例如下面是JavaScript和Python创建作用域的比较:
Creating a block in JavaScript
|
|
Creating a block in Python
|
|
如果包含了print(x)
的一行代码有一个或者更多额外的空格,Python解释器就会报IndentationError
错误。因为这些额外的空格会创建一个非法的作用域。
|
|
如果这一行代码缺少一个或者更多空格,像这样:
|
|
Python解释器会报错:
|
|
因为print(x)
中的x是在声明x的作用域之外的作用域。
流程控制
Python的if…else,while和for和JavaScript非常相似:
if…else
|
|
while循环
|
|
for循环
和JavaScript的
foreach
类似:
|
|
类型
Python的类型和JavaScript的类型很相似,所以就不像其他例如Java喝C#之类的语言严格
实际上变量有类型,但是你不用像java之类的静态类型语言去声明变量类型。
下面是一个Python数据类型的概览:
Numbers
和JavaScript不同,Python不止有一种number类型:
- Integers:1,2,3
- Floats:4.20,4e520
- Complex numbers:4 + 20j
- Booleans:True,False
用Python你可以像JavaScript一样进行numbers的运算。还有一个求幂运算符(**)
|
|
Lists
Lists和JavaScript中的arrays类似,Lists可以包含不同的类型:
|
|
还有特殊的语法可以取子元素
|
|
和一些内置方法:
|
|
你深知可以用+号来连接两个lists:
|
|
String
Python的Strings和JavaScript的很像,他们也是不可变的,而且独立的自负可以像数组子元素那样被获取到:
|
|
Dictionaries
Dictionaries是组合的arrays,类似JavaScript的objects。实际上,dictionaries可以用类似json语法来声明:
|
|
Dictionaries有一个便利的方法,当获取一个不存在的key的value时,可以返回一个默认值:
|
|
None
None等于JavaScript的null。它表示一个值的缺失,并且可以表示false
|
|
函数
跟JavaScript一样,Python的函数是对象。这意味着你可以将函数当作参数,或者给函数设置属性:
|
|
模块
Python的模块跟ES6的模块不会相差很多
定义一个模块
Python的模块就是一个包含Python代码的文件
|
|
不像JavaScript,你不用声明要暴露什么,默认所有东西都会被暴露出去
引入一个模块
你可以引入Python的整一个模块:
|
|
或者从一个模块引入单独项:
|
|
你也可以从pip安装别人写的模块,pip是一个Python的包管理器
|
|
面向对象编程
Python支持面向对象编程,而且不像JavaScript的原型继承,它支持class和传统的继承。
类
|
|
继承
class可以继承其他class:
|
|
资源
除了这篇指南之外,Python还有许多内容,我强烈建议你去看一下Python docs,里面有教程和一些详细的语言特性。
还有记得学习一门语言最好的方法就是去写,要写很多。所以开始编码吧!
P.S:如果你对新建一个项目需要什么建议,或许可以试一下用Flask创建一个简单的API?