Igualdade e comparação
is compara pelo valor, por estrutura — e as três formas de comparar coleções e objetos.
is pergunta “são iguais?” pelo valor, e não “são o mesmo objeto?”. Duas listas com os mesmos itens são iguais; dois records com os mesmos campos também.
dataforge
assert [1, 2] is [1, 2]
assert {"a": 1, "b": 2} is {"b": 2, "a": 1} // a ordem das chaves nao importa
assert {1, 2} is {2, 1}
assert [1, 2] isnt [2, 1] // a ordem da lista importa
record Ponto:
x: Integer
y: Integer
assert Ponto(1, 2) is Ponto(1, 2) // record: por estrutura
assert Ponto(1, 2) isnt Ponto(2, 1)Tipos diferentes nunca são iguais#
dataforge
assert 1 isnt "1"
assert 1 is 1.0 // numeros comparam pelo valor
// 1 is "1" e acusado pelo check: 'igualdade-impossivel'Ordenar#
dataforge
assert "banana" bigger "abacate" // texto: ordem de dicionario
assert "Z" smaller "a" // maiuscula vem antes!
assert sorted(["b", "A", "c"]) is ["A", "b", "c"]
assert sorted(["b", "A", "c"], lambda s: s.lower()) is ["A", "b", "c"]
assert 1 smaller 2 smaller 3 // a comparacao encadeia