Spread operator in Python
The JavaScript spread operator (...) is a useful and convenient syntax for expanding iterable objects into function arguments, array literals, or other object literals.
Python contains a similar “spread” operator that allows for iterable unpacking. Each of the examples below will demonstrate the comparison between the two languages.
Function Arguments
JavaScript:
1function multiply(a, b) {
2 return a * b;
3}
4const numbers = [3, 5];
5console.log(multiply(...numbers));
6// Output: 15
Python:
1def multiply(a, b):
2 return a * b
3numbers = [3, 5]
4print(multiply(*numbers))
5# Output: 15Array Literals
1const numbers = [1, 2, 3];
2const newNumbers = [0, ...numbers, 4]
3console.log(newNumbers);
4// Output: [ 0, 1, 2, 3, 4 ]
1numbers = [1, 2, 3]
2new_numbers = [0, *numbers, 4]
3print(new_numbers)
4# Output: [0, 1, 2, 3, 4]Object Literals
1const testObj = { foo: 'bar' };
2console.log({ ...testObj, foo2: 'bar2' });
3// Output: { foo: 'bar', foo2: 'bar2' }
A very similar technique can be applied with Python dictionaries. Notice the double asterisk operator (**).
1test_obj = { 'foo': 'bar' }
2print({ **test_obj, 'foo2': 'bar2' })
3# Output: {'foo': 'bar', 'foo2': 'bar2'}To unpack keyword arguments, the double asterisk operator (**) is used. In contrast, the single asterisk operator (*) is used for iterable objects.