Рубрики
Без рубрики

Эквиваленты в Python и JavaScript. Часть 3

Это третья часть серии из 4 артистиков об аналогиях в Python и JavaScript. В предыдущем … с меткой основ, промежуточный, JavaScript, Python.

Эквиваленты в Python и Javascript (5 серии деталей)

Это третья часть серии из 4 артистиков об аналогиях в Python и JavaScript Анкет В Предыдущие части Мы покрыли большую часть традиционной Python 2.7 и JavaScript на основе стандарта Ecmascript 5. На этот раз мы начнем изучать Питон 3.6 и JavaScript на основе стандарта Ecmascript 6. Стандарт Ecmascript 6 довольно новый и поддерживается только самыми новейшими версиями браузеров. Для старших браузеров вам понадобится Вавилон Чтобы скомпилировать ваше следующее поколение JavaScript Код к кросс-браузеру, совместимым с эквивалентами. Это открывает дверь для стольких интересных вещей, которые можно исследовать. Мы начнем с строковой интерполяции, распаковки, функций Lambda, итераций без индексов, генераторов и наборов!

Переменные в струнах

Старым и неэффективным способом построения строк со значениями из переменных является это конкатенация:

name = 'World'
value = 'Hello, ' + name + '!\nWelcome!'

Это может стать очень редким и трудно читать. Также очень легко пропустить пробелы в предложении вокруг переменных.

С тех пор Python Версия 3.6 и JavaScript На основании стандарта ECMASCRIPT 6 вы можете использовать так называемую строковую интерполяцию. Это струнные шаблоны, которые заполнены значениями из переменных.

В Python Их также называют F-String, потому что их нотация начинается с буквы «F»:

name = 'World'
value = f"""Hello, {name}!
Welcome!"""

price = 14.9
value = f'Price: {price:.2f} €'  # 'Price: 14.90 €'

В JavaScript Шаблоны струн начинаются и заканчиваются задними тренажерами:

name = 'World';
value = `Hello, ${name}!
Welcome!`;

price = 14.9;
value = `Price ${price.toFixed(2)} €`;  // 'Price: 14.90 €'

Обратите внимание, что струнные шаблоны могут быть как одной линии, так и из нескольких строк. Для F-стенков в Python Вы можете передать формат для переменных, но вы не можете назвать методы переменной, если они не являются свойствами и вызовом методов получения.

Распаковка списков

Python и теперь JavaScript Имеет интересную функцию, чтобы назначить элементы последовательностей в отдельные переменные. Например, мы можем прочитать три значения списка в переменные A, B и C со следующим синтаксисом:

[a, b, c] = [1, 2, 3]

Для кортежей в скобках может быть опущено. Ниже приведен очень популярный способ обмениваться значениями двух переменных в Python :

a = 1
b = 2
a, b = b, a  # swap values

С следующим поколением JavaScript Это также может быть достигнуто:

a = 1;
b = 2;
[a, b] = [b, a];  // swap values

В Питон 3.6 Если у нас есть неизвестное количество элементов в списке или кортеже, мы можем назначить их кортежу из нескольких значений, а также распаковывать остальные в списке:

first, second, *the_rest = [1, 2, 3, 4]
# first == 1
# second == 2
# the_rest == [3, 4]

Это также можно сделать с JavaScript (ECMASCRIPT 6):

[first, second, ...the_rest] = [1, 2, 3, 4];
// first === 1
// last === 2
// the_rest === [3, 4]

Функции Lambda

Python и JavaScript Иметь очень аккуратную функцию для создания функций в одной строке. Эти функции называются лямбдами. Lambdas – это очень простые функции, которые принимают один или несколько аргументов и возвращают некоторые рассчитанные значения. Обычно Lambdas используются, когда вам нужно передавать функцию другой функции в качестве обратного вызова или в качестве функции для манипулирования каждым отдельным элементом в последовательности.

В Питон , вы бы определили лямбду, используя Lambda Ключевое слово, например:

sum = lambda x, y: x + y
square = lambda x: x ** 2

В JavaScript лямбдас используйте => обозначение. Если есть более одного аргумента, они должны быть в скобках:

sum = (x, y) => x + y;
square = x => Math.pow(x, 2);

Итерация без индексов

Многие языки программирования позволяют итерации через последовательность только с помощью индексов и увеличивая их значения. Затем, чтобы получить предмет на какой -то позиции, вы прочитали бы его из массива, например:

for (i=0; i

Это не хороший синтаксис и очень технический – он не читается естественным образом. Мы действительно хотим, чтобы просто получить каждое значение из списка. И Python Имеет очень аккуратную возможность только для итерации через элементы:

for item in ['A', 'B', 'C']:
    print(item)

В современном JavaScript Это также возможно с для .. of оператор:

for (let item of ['A', 'B', 'C']) {
    console.log(item);
}

Вы также можете перевернуть через струнные символы в Python :

for character in 'ABC':
    print(character)

И в современном JavaScript :

for (let character of 'ABC') {
    console.log(character);
}

Генераторы

Python и Modern JavaScript Имеет возможность определить специальные функции, с помощью которых вы можете выполнить. С каждой итерацией они возвращают следующее сгенерированное значение в последовательности. Эти функции называются генераторами. С генераторами вы можете получить цифры в диапазоне, строки из файла, данные из разных вызовов API с различными страницами, Fibonacci Numbers и любые другие динамично сгенерированные последовательности.

Технически генераторы похожи на нормальные функции, но вместо возвращения значения они дают значение. Это значение будет возвращено для одной итерации. И это поколение происходит до тех пор, пока достигнут конец функции.

Чтобы проиллюстрировать это, следующее Python Код создаст генератор Обратный отсчет () который вернет числа от данного обратного к 1 (например, 10, 9, 8, …, 1):

def countdown(counter):
    while counter > 0:
        yield counter
        counter -= 1

for counter in countdown(10):
    print(counter)

Точно так же может быть достигнуто в современном JavaScript , но обратите внимание на звездочку в функция утверждение. Это определяет, что это генератор:

function* countdown(counter) {
    while (counter > 0) {
        yield counter;
        counter--;
    }
}
for (let counter of countdown(10)) {
    console.log(counter);
}

Наборы

Мы уже посмотрели на списки, кортежи и массивы. Но вот еще один тип данных – наборы. Наборы – это группы элементов, которые гарантируют, что каждый элемент существует только один раз. Теория набора также указывает наборные операции, такие как Союз, пересечение и разница , Но мы не будем охватить их здесь сегодня.

Вот как создать набор, добавить к нему элементы, проверить, существует ли значение, проверьте общее количество элементов в наборе, итерация через его значения и удалите значение, используя Питон :

s = set(['A'])
s.add('B'); s.add('C')
'A' in s
len(s) == 3
for elem in s:
    print(elem)
s.remove('C')

Вот как достичь того же в современном JavaScript :

s = new Set(['A']);
s.add('B').add('C');
s.has('A') === true;
s.size === 3;
for (let elem of s.values()) {
    console.log(elem);
}
s.delete('C')

Вынос

  • Строковая интерполяция или буквальные шаблоны позволяют вам иметь намного более чистый и более приятный код даже с возможностью иметь несколько строк текста.
  • Вы можете выполнить их через элементы в последовательности или группе без использования индексов.
  • Используйте генераторы, когда у вас есть последовательность почти неограниченных элементов.
  • Используйте наборы, когда вы хотите убедиться, что данные существуют, существуют ли данные в сборе.
  • Используйте Lambdas, когда вам нужны короткие и четкие однострочные функции.

Как вы знаете из предыдущих частей, я предлагаю шпаргалку со всем списком эквивалентов в Python и JavaScript , оба, почитаемые и будущие доказательства. Чтобы что -то напечатать на ваших глазах гораздо удобнее, чем переключение между окнами или прокрутки вверх и вниз, пока вы не найдете то, что именно искали. Поэтому я предлагаю вам получить шпаргалку и использовать его навсегда!

В следующей и последней части серии мы рассмотрим аргументы функций, классы, наследование и свойства. Следите за обновлениями!

Фотография обложки от Алекс Найт

Эквиваленты в Python и Javascript (5 серии деталей)

Оригинал: “https://dev.to/djangotricks/equivalents-in-python-and-javascript-part-3-4icc”