Вот некоторые из основных предостережений и несколько полезных советов, о которых вам следует знать, если вы разрабатываете свой веб-сайт с использованием Python и JS.

Логические значения пустых списков / массивов и объектов / dict:

  • В python bool ([]) == False, тогда как в JavaScript !! [] === true.
  • Кроме того, bool ({}) == False, тогда как в JS !! {} === true.

Когда вы используете переменные, об этом часто забывают. Ниже фрагмент python напечатает, что это ложь.

abc = []
if abc:
    print(“this is true”)
else:
    print(“this is false”)

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

let abc = [];
if(abc){
 console.log(“this is true”);
} else {
 console.log(“this is false”);
}

Тип данных "Байты против строк":

В Python байтовые данные могут выглядеть очень похоже на строковый тип данных при печати на консоли. Например. Используя Simple flask server, если мы выведем данные запроса, мы получим следующие результаты:

from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['POST','GET'])
def hello():
if request.is_json:
    print('Get JSON:', request.get_json())
print('Request Content Type:', request.content_type)
print('Get data:', request.get_data())
return 'Hello, World!'
if __name__ == "__main__":
    app.run('0.0.0.0', 8000)

Выходы:

Get JSON: {‘name’: ‘John’, ‘lastname’: ‘Doe’}
Request Content Type: application/json
Get data: b’{\r\n “name”: “John”,\r\n “lastname”: “Doe”\r\n}’
---
Request Content Type: text/plain
Get data: b’{\r\n “name”: “John”,\r\n “lastname”: “Doe”\r\n}’

Разработчики часто упускают этот b ’ (обозначающий массив байтов) в результатах request.data/request.get_data (). Это может привести к объединению request.data со строкой и выдаче ошибки типа.

Стандартные библиотеки:

Иногда легко забыть, что Python предоставляет более надежные библиотеки (itertools, functools) и служебные функции из коробки, которых нет в JavaScript (хотя существует множество сторонних библиотек, таких как underscore / lodash ). Я часто пишу для циклов для Python там, где они не требуются, ссылка на стандартные библиотеки может значительно упростить ваш код.

Давай поговорим о петлях

В JavaScript есть несколько способов итерации массива: «for-of», «for-in», «for» и forEach. Все они выполняют более или менее одинаковую функциональность (с некоторыми проблемами области действия, в которые я не буду вдаваться). Python здесь более разумен с одним механизмом цикла «for-in». Однако важно отметить, что, выполняя итерацию с помощью JavaScript с использованием цикла for-in, вы получаете индексы (или, скорее, ключи, поскольку вы также можете выполнять итерацию по объектам).

#Python
abc = [10,20,30]
for x in abc:
    print(abc)
Output:
10
20
30
//JavaScript
let abc = [10,20,30];
for(x in abc) {
    console.log(x);
}
Output:
0
1
2

Использование двустороннего массива

В JavaScipt легко использовать простой массив с функциями как стека, так и очереди. Мы можем добавить на передний план, используя unshift, удалить спереди, используя shift, добавить назад, используя push, и удалить сзади, используя pop. Замечательно иметь встроенные эти методы, если они вам нужны. Хотя списки не предоставляют эту функциональность напрямую, Python имеет deque в коллекциях, которые обеспечивают append, appendleft, pop, popleft.

Удачного кодирования!

Будем рады услышать другие вопросы в комментариях. Если вы похожи на меня, я уверен, что вы, должно быть, встречали немало моментов, ломающих голову над такими тривиальными конструкциями.