advanced_sort
принимает один аргумент: список (или, возможно, произвольную итерацию). Таким образом, подпись имеет только один аргумент:
def advanced_sort(nodes):
Игнорируя подсказки типа, подпись не имеет и не может отражать внутреннюю структуру одного аргумента;это просто имя для обозначения переданного значения внутри тела функции.
Внутри тела вы можете написать код, который предполагает , что nodes
список, и далее каждый элемент списка является экземпляром Node
, так что вы можете сделать что-то вроде принятия каждого значения в качестве атрибута Value
.
def advanced_sort(nodes):
# If nodes is iterable, then x refers to a different
# element of the iterable each time through the loop.
for x in nodes:
# If nodes is a list of Node instances, then
# x is a Node instance, and thus you can access
# its Value attribute in the normal fashion.
print("Found value {}".format(x.Value))
Предполагая определение Node
подобно
class Node:
def __init__(self, v):
self.Value = v
приведенное выше определение advanced_sort
даст следующий результат:
>>> advanced_sort([Node(3), Node(2), Node(1),Node(2)])
Found value 1
Found value 2
Found value 3
Found value 4