re: Python for JavaScript Developers VIEW POST

FULL DISCUSSION
 

"For loops are like JavaScript foreach loops" Actually they're more like ES6's for of loops: developer.mozilla.org/en-US/docs/W...

Also when creating classes in Python, you should inherit from object i.e. class Animal(object)

 

you should inherit from object

This only makes a difference in Python2, where there was 'old style' and 'new style' classes. In Python3 there'n so difference between
class Animal: and class Animal(object):

Also, in 2017 there's little reason to be using Python 3.0.1 when 3.6 is out :)

 

Aren't they exactly like JavaScript's for...in loops? developer.mozilla.org/en-US/docs/W...

The only difference seems to be Python doesn't do prototypes so you don't have to use hasOwnProperty to check the origin of an object's variables

 

"The for...of statement creates a loop iterating over iterable objects (including Array, Map, Set, String, TypedArray, arguments object and so on), invoking a custom iteration hook with statements to be executed for the value of each distinct property."

In Python you can iterate over iterators or generators. When the end of iteration is reached, an exception is raised that triggers the loop to stop. To me, for..of seems closer to python for..in.

You're right.

for .. in iterates over key, i.e. it's comparable to something like:

for (let i = 0, o = Object.keys(X); i < o.length; i++, x=o[i]) { .. }

whereas for .. of iterates over iterables i.e. it's roughly comparable to something like:

for (let x, o; o && o.done === false; o = X.next(), x = o && o.value) { .. }

It's slightly more complicated than that because it implicitly converts some objects, such as Arrays or Maps, to iterables.

JavaScript since ES6 also has generators and iterators that work somewhat similar. There are no exceptions, tho, because iterator interface (that generators also need to adher to in general) returns an object on calls to .next() that is of form {done, value}. When done is false you've reached the end of the iterable.

But note that in python for key in {1: 10, 2: 20}: iterates over dictionary's keys.

You can use for value in d.keys():, for (key, value) in d.items(): and (redundant) for k in d.keys():.
These methods exist in both Python 2 and 3, though with some differences (see python.org/dev/peps/pep-3106/).

You can drop the parenthesis i.e. for k, v in thing.items(). You only need parenthesis for comprehension i.e. {k: v for (k,v) in thing.items()} or [(k,v) for (k,v) in thing.items()]

code of conduct - report abuse