Rozdíl mezi operátorem != a není v Pythonu
V tomto článku se podíváme != (Nestejné) operátory. V Pythonu != je definován jako nerovná se operátor. Vrací se Skutečný pokud operandy na obou stranách nejsou stejné, a vrátí Nepravdivé pokud jsou si rovni. Zatímco není operátor kontroluje, zda je id() dvou objektů stejné nebo ne. Pokud stejné, vrátí se Nepravdivé a pokud není stejný, vrátí se Skutečný. A není operátor vrátí True, pokud se operandy na obou stranách navzájem nerovnají, a vrátí false, pokud jsou stejné.
Pojďme pochopit pojmy jeden po druhém:
Příklad 1:
Python3
a> => 10> b> => 10> > print> (a> is> not> b)> print> (> id> (a),> id> (b))> > c> => 'Python'> d> => 'Python'> print> (c> is> not> d)> print> (> id> (c),> id> (d))> > e> => [> 1> ,> 2> ,> 3> ,> 4> ]> f> => [> 1> ,> 2> ,> 3> ,> 4> ]> print> (e> is> not> f)> print> (> id> (e),> id> (f))> |
Výstup:
False 140733278626480 140733278626480 False 2693154698864 2693154698864 True 2693232342792 2693232342600
Vysvětlení:
- Nejprve s celočíselnými daty byl výstup nepravdivý, protože obě proměnné a, b odkazují na stejná data 10.
- Za druhé s řetězcovými daty byl výstup nepravdivý, protože obě proměnné c, d odkazují na stejná data Pythonu.
- Za třetí s daty seznamu byl výstup pravdivý, protože proměnné e, f mají různé adresy paměti. (I když obě proměnné mají stejná data)
Příklad 2:
!= je definován jako nerovná se operátor. Vrací se Skutečný pokud operandy na obou stranách nejsou stejné, a vrátí Nepravdivé pokud jsou si rovni.
Python3
# Python3 code to> # illustrate the> # difference between> # != and is operator> > a> => 10> b> => 10> print> (a !> => b)> print> (> id> (a),> id> (b))> > c> => 'Python'> d> => 'Python'> print> (c !> => d)> print> (> id> (c),> id> (d))> > e> => [> 1> ,> 2> ,> 3> ,> 4> ]> f> => [> 1> ,> 2> ,> 3> ,> 4> ]> print> (e !> => f)> print> (> id> (e),> id> (f))> |
Výstup:
False 140733278626480 140733278626480 False 2693154698864 2693154698864 False 2693232369224 2693232341064
Příklad 3:
The != operátor porovnává hodnotu nebo rovnost dvou objektů, zatímco Python není operátor kontroluje, zda dvě proměnné ukazují na stejný objekt v paměti.
Python3
# Python3 code to> # illustrate the> # difference between> # != and is not operator> # [] is an empty list> list1> => []> list2> => []> list3> => list1> > #First if> if> (list1 !> => list2):> > print> (> ' First if Condition True'> )> else> :> > print> (> 'First else Condition False'> )> > #Second if> if> (list1> is> not> list2):> > print> (> 'Second if Condition True'> )> else> :> > print> (> 'Second else Condition False'> )> > #Third if> if> (list1> is> not> list3):> > print> (> 'Third if Condition True'> )> else> :> > print> (> 'Third else Condition False'> )> > list3> => list3> +> list2> > #Fourth if> if> (list1> is> not> list3):> > print> (> 'Fourth if Condition True'> )> else> :> > print> (> 'Fourth else Condition False'> )> |
Výstup:
First else Condition False Second if Condition True Third else Condition False Fourth if Condition True
Vysvětlení:
- Výstup z nejprve pokud podmínka je False, protože seznam1 i seznam2 jsou prázdné seznamy. Za druhé, pokud podmínka zobrazuje hodnotu True, protože dva prázdné seznamy jsou na různých místech paměti. Seznam1 a seznam2 tedy odkazují na různé objekty. Můžeme to zkontrolovat pomocí funkce id() v pythonu, která vrací identitu objektu.
- Výstup z třetí pokud podmínka je False, protože seznam1 i seznam3 ukazují na stejný objekt.
- Výstup z čtvrté jestliže podmínka je True, protože zřetězení dvou seznamů vždy vytvoří nový seznam.