Více na
Je arr.__len__() preferovaný způsob, jak v Pythonu zjistit délku pole?
Je v Pythonu jediným způsobem, jak získat počet prvků, následující?
arr.__len__()
Pokud ano, proč ta podivná syntaxe?
702
3
Totéž platí pro tuply:
A řetězce, které jsou ve skutečnosti jen pole znaků:
Bylo to záměrně uděláno takto, aby seznamy, tuply a další kontejnerové typy nemusely explicitně implementovat veřejnou metodu
.length()
, ale abyste mohli zkontrolovatlen()
čehokoli, co implementuje 'magickou' metodu__len__()
.Jistě, může se to zdát zbytečné, ale implementace kontroly délky se mohou značně lišit, a to i v rámci jednoho jazyka. Není'neobvyklé, že jeden typ kolekce používá metodu
.length()
, zatímco jiný typ používá vlastnost.length
, zatímco další typ používá.count()
. Existence klíčového slova na úrovni jazyka sjednocuje vstupní bod pro všechny tyto typy. Takže i objekty, které nemusíte považovat za seznamy prvků, mohou být stále kontrolovány na délku. Patří sem řetězce, fronty, stromy atd.Funkční povaha funkce
len()
se také dobře hodí pro funkcionální styly programování.Délku libovolného objektu v jazyce Python zjistíte nejlépe tak, že jej předáte jako argument funkci
len
. Vnitřně se pak python pokusí zavolat speciální metodu__len__
předaného objektu.Stačí použít
len(arr)
: