Почему присвоение значения str не приведет к возникновению SyntaxError, как это происходит для True / False?

После того, как я недавно столкнулся с той же проблемой, я придумал следующее решение:

Сначала найдите все ItemTags, где tagName либо «смешно», либо «политика» и возвращает массив ItemTag _ids.

Затем найдите элементы, которые содержат все ItemTag _ids в массиве тегов

ItemTag
  .find({ tagName : { $in : ['funny','politics'] } })
  .lean()
  .distinct('_id')
  .exec((err, itemTagIds) => {
     if (err) { console.error(err); }
     Item.find({ tag: { $all: itemTagIds} }, (err, items) => {
        console.log(items); // Items filtered by tagName
     });
  });
-1
задан Georgy 17 January 2019 в 14:59
поделиться

2 ответа

str не является зарезервированным словом, это обычная функция, которая встраивается. True и False являются ключевыми словами (начиная с Python 3).

Полный список ключевых слов Python 3 приведен в справочнике по языку :

False      await      else       import     pass
None       break      except     in         raise
True       class      finally    is         return
and        continue   for        lambda     try
as         def        from       nonlocal   while
assert     del        global     not        with
async      elif       if         or         yield
0
ответ дан RemcoGerlich 17 January 2019 в 14:59
поделиться

вы всегда можете получить доступ к встроенным функциям через их пакет

import builtins

str = 9
print(builtins.str(str))
>>> '9'
str(9)
>>>TypeError: 'int' object is not callable

, в котором говорится, что не рекомендуется переписывать встроенные функции - это может быть очень запутанным для разработчика, который работает с кодом после того, как вы [ 112]

0
ответ дан Derte Trdelnik 17 January 2019 в 14:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: