Исследуйте сходство между JavaScript и Python.
Сравнивать JavaScript и Python — все равно, что сравнивать яблоки и картошку. Оба полезны, но используются для разных целей. JavaScript в основном запускается на стороне клиента, тогда как Python в основном запускается на стороне сервера. С учетом сказанного, это два совершенно разных зверя, и сравнивать их несправедливо.
Но PHP тоже работает на сервере, а PHP и JavaScript очень похожи. На самом деле, очень легко освоить PHP, если вы знаете JavaScript. Можно ли то же самое сказать о Python? Давайте сравним их!
1. Переменные
Около двадцати лет в JavaScript был только один тип переменной — var
. При создании ES6 были добавлены еще две: let
, которая лучше для памяти, поскольку на нее ссылаются только при вызове и ее не таскают, как кошку на поводке, и const
, которая является неизменяемой переменной.
В Python нет… ни того, ни другого. Просто объявить слово вроде foo = bar
достаточно, чтобы объявить переменную. Переменные между двумя языками выглядят следующим образом:
#JavaScript var fName = 'Kenton'; let mName = 'John'; const lName = 'de Jong'; #Python fName = 'Kenton' mName = 'John' lName = 'de Jong'
2. Конкатенация строк
Если вы используете переменные, вам часто придется вставлять их в предложения. Теперь JavaScript и Python делают это очень похоже благодаря шаблонным литералам ES6:
#JavaScript let name = "Kenton de Jong"; console.log(`My name is ${name}.`); #Python name = "Kenton de Jong" print(f'My name is {name}.');
3. Если-утверждения
Операторы if — это хлеб с маслом программирования. В JavaScript операторы if выглядят так:
if (1 == 1) { return true; }
А если это однострочные операторы, то их можно записать даже так:
if (1 == 1) return true
Python похож на это, так как в Python нет фигурных скобок. Вместо этого их операторы if выглядят так:
if (1 == 1): return true
Добавление «else» также ничем не отличается:
#JavaScript if (1 == 1) return true else return false #Python if (1 ==1): return true else: return false
Даже else-if ничем не отличается:
#JavaScript if (1 == 1) return true else if (1 == 2) return false else return false #Python if (1 ==1): return true elif (1 == 2): return false else: return false
Самая большая разница заключается в том, что вы создаете сокращенную версию двух операторов.
#JavaScript return 1 == 1 ? true : false; #Python return true if 1 == 1 else false
В JavaScript сначала идет условие, затем первое возможное значение, затем двоеточие и затем второе значение. В Python первое значение записывается еще до вызова условия.
4. Для циклов
Оба языка имеют разные способы выполнения циклов, но синтаксис между JavaScript и Python сильно различается.
#JavaScript for (let i = 0; i <= 5; i++) { console.log(i) } #Python for i in range(6): print(i)
В обоих случаях оба языка печатают числа от 0 до 5. Синтаксис in range()
в Python сравним с <=
в JavaScript, поскольку он зацикливается только для всего, что меньше заданного аргумента. В нашем случае аргумент равен 6, поэтому цикл проходит от 0 до 5.
Если бы мы хотели использовать массив, мы могли бы сделать что-то вроде этого:
#JavaScript let fruits = ['apples', 'mangos', 'watermellon']; for (let i = 0; i < fruits.length; i++) { console.log(fruit[i]) } #apples mangos watermellon #Python fruits = ['apples', 'mangos', 'watermellon'] for i in range(len(fruit)): print(fruit[i]) #apples mangos watermellon
5. Пока циклы
Циклы while во многом похожи на циклы for. На самом деле так много способов, что я редко использую циклы while. Однако синтаксис между ними очень похож:
#JavaScript let i = 1; while (i < 10) { console.log(i) i++; } #Python i = 1 while i < 10: print(i) i += 1
Здесь вы заметите несколько вещей: JavaScript увеличивает число с помощью i++
, тогда как Python делает это с помощью i += 1
. Это не имеет ничего общего с циклами while; В Python просто нет оператора ++
.
6. Функции
Функции — отличный способ сохранить ваш код в чистоте, особенно если вы повторяетесь. Однако подход к функциям двух языков сейчас сильно различается, особенно с появлением ES6.
#JavaScript #Before ES6 function add(num1, num2) { return num1 + num2; } #After ES6 let add = (num1, num2) => { return num1 + num2; }
В то время как Python заменяет function
на def
:
#Python def add(num1, num2): return num1 + num2
Еще одно отличие заключается в том, как интерпретируются параметры функции. В Python есть «аргументы ключевого слова», которые при добавлении вставляют параметры в функцию независимо от того, как их добавляет пользователь. В JavaScript этого нет. Рассмотрим следующее:
#JavaScript let animal = (type="Dog", breed="Poodle", weight="5") => { return `This ${type} is a ${breed} and weights ${weight} pounds` } console.log(animal(breed="test")); #This test is a Poodle and weight 5 pounds #Python def animal(type="Dog", breed="Poodle", weight="5"): return f"This {type} is a {breed} and weighs {weight} pounds" print(animal(breed="test")) #This Dog is a test and weights 5 pounds.
7. Импорт
Одна из самых больших проблем, с которыми я столкнулся при работе с Python, — это importing
других библиотек. Для меня язык должен просто делать все. Мне не нужно импортировать для перетасовки массива в JavaScript или импортировать что-то для вызова AJAX. Но в Python вы это делаете. Синтаксис тоже немного отличается.
На самом деле, поскольку JavaScript может делать все прямо из коробки, я даже не знал о существовании import
до нескольких месяцев назад. Его можно использовать для импорта класса из другого файла вместо загрузки всего файла.
Основной синтаксис такой:
#JavaScript import whatever from 'another/script' #Python from 'another/script' import whatever
(Хотя в большинстве случаев вы просто напишете import whatever
на Python.)
Вы также заметите, что последовательность обратная: import
предшествует from
в JavaScript, а from
предшествует import
в Python. Это продолжается, когда мы становимся еще более сложными:
#JavaScript import whatever as wtv from 'another/script' #Python from 'another/script' import whatever as wtv
Если мы хотим импортировать несколько модулей, синтаксис меняется еще сильнее:
#JavaScript import {whatever as wtv, idontknow as idk} from 'another/script.js' #Python from 'another/script' import whatever as wtv, idontknow as idk
8. АЯКС
AJAX создал современную сеть. Идея взаимодействия клиентской части с серверной изменила Интернет. Именно из-за этого Twitter не перезагружает страницу каждый раз, когда вам нравится твит, а YouTube не перезагружает плеер, когда вы нажимаете на новое видео.
В JavaScript встроены возможности AJAX — что имеет смысл, учитывая, что он называется асинхронным JavaScript и XML, — а Python — нет. К счастью, модуль requests
доступен и решает эту проблему за нас:
#JavaScript, ES6 fetch('https://dog.ceo/api/breeds/list/all') .then(resp => resp.json()) .then(data => console.log(data.message)); #Python #-m pip install requests if needed import requests resp = requests.get('https://dog.ceo/api/breeds/list/all') data = resp.json() print(data.get('message'))
9. Операторы спреда
Операторы расширения являются новыми для JavaScript, но довольно распространены в Python. Они работают как способ отправки нескольких значений в один параметр. Например, если у вас есть это:
let asl = (age, sex, location, ...other) => { console.log(age); console.log(sex); console.log(location); console.log(other); }
И вы хотите, чтобы other
было несколькими значениями (рост, вес и т. д.), вы можете сделать что-то вроде этого:
let other = ["5'10", "250", "brown hair"]; asl(29, "Male", "Saskatchewan", other);
Python тоже имеет это, но использует *
вместо ...
def asl(age, sex, location, *other): print(age) print(sex) print(location) print(other) other = ["5'10", "250", "brown hair"] asl(29, "Male", "Saskatchewan", other)
Разница между ними в том, что JavaScript возвращает array
, а Python возвращает tuple
. Оба могут быть зациклены, чтобы получить результаты, но структура отличается.
Кроме того, в то время как JavaScript может использовать оператор расширения для массивов и объектов, Python использует *
для массивов и **
для объектов.
Вероятно, между этими двумя языками больше сходства, но когда я только начинал изучать Python, я обнаружил, что это очень интересно и очень полезно, когда дело доходит до разработки моих первых программ на Python. Конечно, Python может быть намного сложнее и может все больше и больше отклоняться от JavaScript, но основы, тем не менее, очень похожи.
Какие еще сходства вы можете назвать между этими двумя языками? Я хотел бы услышать ваши мысли!
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.