Есть ли код Python в стандартной библиотеке Python, который использует имена переменных, которые встроены в тени?

1

[ Исключая любой тестовый код, который просто издевается над встроенным ]

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

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

Я бы хотел использовать стандартную библиотеку в качестве показателя того, насколько распространена эта практика среди различных разработчиков Python.

  • 0
    Pylint обнаруживает подобные вещи (W0622); Ваша лучшая ставка могла бы состоять в том, чтобы запустить его (со всеми другими выключенными правилами) против стандартной библиотеки Python.
  • 0
    Нет проблем с именованием переменных как str , list т. Д. Внутри функций. Просто помни, что ты сделал.
Показать ещё 5 комментариев
Теги:

2 ответа

5
Лучший ответ

Встроенный я чаще всего тень - это id, так как он настолько полезен, как имя переменной, и встроенный так редко называют в любом случае. Быстрый просмотр в стандартной библиотеке 2.7 показал ряд применений:

aifc.py:            if id == marker[0]:
aifc.py:                id = _read_short(chunk)
aifc.py:            if id == self._markers[i][0]:
aifc.py:            if id == marker[0]:
difflib.py:            id = ' id="%s%s"' % (self._prefix[side],linenum)
difflib.py:            id = ''
nntplib.py:        id = ''
nntplib.py:                id = words[2]
nntplib.py:        resp, nr, id = self.statparse(resp)
pdb.py:            id = idstring[0].strip()
pdb.py:            id = idstring[1].strip()
pdb.py:        if id == '': return failed
platform.py:                id = values[2]
platform.py:    id = ''
platform.py:            id = l[1]
platform.py:        id = _id

Существует множество применений str, list и int также:

Cookie.py:    str = str[1:-1]
mailcap.py:        str = os.environ['MAILCAPS']
mimetools.py:        str = self.typeheader
mimetools.py:            str = 'text/plain'
mimetools.py:            str = str[:i]
mimetools.py:        str = self.plisttext
mimetools.py:            str = str[1:]
mimetools.py:            str = str[end:]
rfc822.py:  str = m.getheader(name)
rfc822.py:  str = m.getrawheader(name)
smtplib.py:            str = ""
smtplib.py:            str = '%s%s' % (cmd, CRLF)
smtplib.py:            str = '%s %s%s' % (cmd, args, CRLF)
sre_parse.py:    pattern.str = str
xmllib.py:            str = res.group(1)
xmllib.py:                    str = chr(int(str[2:], 16))
xmllib.py:                    str = chr(int(str[1:]))
xmllib.py:                    str = self.entitydefs[str]
xmllib.py:                    str = '&' + str + ';'

uuid.py:            int = long(hex, 16)
uuid.py:            int = long(('%02x'*16) % tuple(map(ord, bytes)), 16)
uuid.py:            int = ((time_low << 96L) | (time_mid << 80L) |

SimpleHTTPServer.py:            list = os.listdir(path)
StringIO.py:list = f.readlines()# list of f.readline() results until EOF
StringIO.py:    list = f.readlines()
anydbm.py:        list = d.keys() # return a list of all existing keys (slow!)
asynchat.py:            self.list = deque()
asynchat.py:            self.list = deque(list)
bdb.py:        list = self.breaks[filename]
cgi.py:    list = None
cgi.py:    list = traceback.format_tb(tb, limit) + \
code.py:        list = traceback.format_exception_only(type, value)
code.py:            list = traceback.format_list(tblist)
dircache.py:        cached_mtime, list = cache[path]
dircache.py:        cached_mtime, list = -1, []
dircache.py:        list = os.listdir(path)
mailbox.py:        # list = map(long, filter(pat.match, os.listdir(self.dirname)))
mailbox.py:        list = os.listdir(self.dirname)
mailbox.py:        list = filter(pat.match, list)
mailbox.py:        list = map(long, list)
mhlib.py:list = mh.listfolders() # names of top-level folders
mhlib.py:list = mh.listallfolders() # names of all folders, including subfolders
mhlib.py:list = mh.listsubfolders(name) # direct subfolders of given folder
mhlib.py:list = mh.listallsubfolders(name) # all subfolders of given folder
mhlib.py:list = f.listmessages() # list of messages in folder (as numbers)
mhlib.py:list = f.parsesequence(seq)     # parse msgs syntax into list of messages
mhlib.py:            list = []
mhlib.py:        list = map(int, stuff.split())
multifile.py:        list = []
nntplib.py:            list = []
nntplib.py:        resp, list = self.longcmd('LIST', file)
nntplib.py:        resp, list = self.longcmd(line, file)
pickle.py:        list = stack[-1]
pickle.py:        list = stack[mark - 1]
pipes.py:    list = []
poplib.py:        list = []; octets = 0
pstats.py:        width, list = self.get_print_list(amount)
pstats.py:        width, list = self.get_print_list(amount)
pstats.py:        width, list = self.get_print_list(amount)
rexec.py:        list = []
rfc822.py:  list = m.getaddrlist(name)
shelve.py:        list = d.keys() # a list of all existing keys (slow!)
socket.py:        list = []
telnetlib.py:        list = list[:]
traceback.py:    list = []
traceback.py:    list = []
traceback.py:        list = ['Traceback (most recent call last):\n']
traceback.py:        list = list + format_tb(tb, limit)
traceback.py:        list = []
traceback.py:    list = list + format_exception_only(etype, value)
traceback.py:    list = []
xdrlib.py:        list = []
xdrlib.py:        list = []

и есть слишком много file и dir используют, чтобы отправлять...

  • 0
    Я добавлю open который достаточно хорошо затенен на уровне модуля и на уровне класса в webbrowser , gzip , imaplib и т. Д.
  • 0
    @Ned. Спасибо за размещение этих примеров. Я в шоке, их так много. Из огромного количества примеров в std lib я должен предположить, что такого рода вещи на самом деле не осуждаются. Время скорректировать мою точку зрения на это.
Показать ещё 2 комментария
0
  • модуль платформы имеет несколько применений id как имя переменной;
  • многие другие модули используют id как имя переменной;
  • pickle использует len как переменное имя;
  • uuid использует hex как переменное имя;
  • dom.xmlbuilder использует filter как имя переменной;
  • и т.п.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню