Python syntax here : 2.7 - online REPL
Javascript ES6 via Babel transpilation - online REPL
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));
print range(5)
# 0, 1, 2, 3, 4
console.log(Array.from(new Array(5), (x,i) => i));
// 0, 1, 2, 3, 4
def foo():
yield 1
yield 2
yield 3
function *foo() {
yield 1;
yield 2;
yield 3;
}
lambda a: a * 2
a => a * 2
status, data = getResult()
var [status, data] = getResult();
search_db(**parameters)
searchDb(...parameters);
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);
}
(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')
}
}
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(lambda: x*2, [1,2,3,4])
[1,2,3,4].map(x => x*2)
len([])
[].length
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.
- Builtin JSON support
- NPM packaging is a killer-feature : simple and fast, light-years ahead pip+virtualenv.
- Works in the browser :)
That's really a killer feature I miss the most in python. Destructuring data is so conveniant and useful.
I'd to add that also working with object is more handy with nodejs (ES6) than python. In Python you have
.get
method to access a value.. We can easily access key and value in ES6object.value
.Enum
is also an overload of no need code. Like if you want to use a value of an enum, you must use the.value
of the attribue. in TS we don't need that, just access theEnum.KEY
and you have access to the value.I stop here, there are a lot of stuff I miss a lot from ES6 and a few I like in python