Как я могу получить исходную реализацию List .__ gt __ () func - PullRequest
1 голос
/ 12 октября 2019

Я новый программист Python, мой код, как показано ниже, я не понимаю, почему я получил результат true. Кажется, для вызова встроенной функции __gt__ List. Я не знаю, где я могу получить исходный код внутренней (встроенной) функции List. gt ().

L1 = ['abc', ['123', '456']]
L2 = ['1', '2', '3']
print(L1 > L2)

Я буду так сильно его оценивать, есликто-нибудь даст ответ.

1 Ответ

1 голос
/ 12 октября 2019

Поведение хорошо указано в документации, поэтому вам не нужно читать исходный код, чтобы понять его (но посмотрите мои комментарии в конце этого ответа):

Объекты последовательности могут сравниваться с другими объектами с таким же типом последовательности. Для сравнения используется лексикографический порядок: сначала сравниваются первые два элемента, и, если они различаются, это определяет результат сравнения;если они равны, сравниваются следующие два элемента и т. д., пока не будет исчерпана любая последовательность. Если два элемента для сравнения сами являются последовательностями одного типа, лексикографическое сравнение выполняется рекурсивно. Если все элементы двух последовательностей сравниваются равными, последовательности считаются равными. Если одна последовательность является начальной подпоследовательностью другой, более короткая последовательность является меньшей (меньшей).

https://docs.python.org/3/tutorial/datastructures.html#comparing-sequences-and-other-types

Стоит отметить, что Python 3 нетбольше позволяет сравнивать произвольные пары объектов (что было в Python 2). Это можно проиллюстрировать, слегка изменив свой пример:

>>> L1 = ['1', ['123', '456']]
>>> L2 = ['1', '2', '3']
>>> print(L1 > L2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: list() > str()

Но, прочитав все это, вы все равно хотите прочитать исходный код CPython, он доступен по адресу https://github.com/python/cpython

Inв частности, код сравнения списка можно найти по адресу https://github.com/python/cpython/blob/master/Objects/listobject.c#L2634

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...