Python VS ES6 syntax comparison
Python syntax here : 2.7 - online REPL
Javascript ES6 via Babel transpilation - online REPL
Imports
import math
print math.log(42)
from math import log
print log(42)
# not a good practice (pollutes local scope) :
from math import *
print log(42)
import math from 'math';
console.log(math.log(42));
import { log } from 'math';
console.log(log(42));
import * from 'math';
console.log(log(42));
Range
print range(5)
# 0, 1, 2, 3, 4
console.log(Array.from(new Array(5), (x,i) => i));
// 0, 1, 2, 3, 4
Generators
def foo():
yield 1
yield 2
yield 3
function *foo() {
yield 1;
yield 2;
yield 3;
}
Lambdas
lambda a: a * 2
a => a * 2
Destructuring
status, data = getResult()
var [status, data] = getResult();
Spread
search_db(**parameters)
searchDb(...parameters);
Iterators
def fibonacci():
pre, cur = 0, 1
while True:
pre, cur = cur, pre + cur
yield cur
for x in fibonacci():
if (x > 1000):
break
print x,
var fibonacci = {
[Symbol.iterator]: function*() {
var pre = 0, cur = 1;
for (;;) {
var temp = pre;
pre = cur;
cur += temp;
yield cur;
}
}
}
for (var n of fibonacci) {
if (n > 1000)
break;
console.log(n);
}
Classes
(Python has builtin support for multiple inheritance)
class SpiderMan(Human, SuperHero):
def __init__(self, age):
super(SpiderMan, self).__init__(age)
self.age = age
def attack(self):
print 'launch web'
class SpiderMan extends SuperHero {
constructor(age) {
super();
this.age = age;
}
attack() {
console.log('launch web')
}
}
Comprehensions
names = [c.name for c in customers if c.admin]
(Experimental in Babel)
var names = [for (c of customers) if (c.admin) c.name];
Map
map(lambda: x*2, [1,2,3,4])
[1,2,3,4].map(x => x*2)
length
len([])
[].length
What's better in Python
help(anything)
: get docstring for any module/method/function- list comprehensions, class magic methods !
- very powerful OOP
- huge and coherent standard library, ex : string has 38 useful methods
- built-in strings and array slicing.
What's better in Javascript
- Builtin JSON support
- NPM packaging is a killer-feature : simple and fast, light-years ahead pip+virtualenv.
- Works in the browser :)
This comment has been minimized.
Fixing my own comment (strangely I can't edit, I got an error from github):
Python has built-in JSON support :
You also a syntax error here:
It should read:
Also, you use an old Python version (2.7) while the current is 3.4. Granted, the 3.4 is less used, but at least it's production ready while ES6 is not even completely implemented in any browser. In 3.4 case it would read: