Вот некоторые из основных предостережений и несколько полезных советов, о которых вам следует знать, если вы разрабатываете свой веб-сайт с использованием 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.
Удачного кодирования!
Будем рады услышать другие вопросы в комментариях. Если вы похожи на меня, я уверен, что вы, должно быть, встречали немало моментов, ломающих голову над такими тривиальными конструкциями.