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í:

  1. Nejprve s celočíselnými daty byl výstup nepravdivý, protože obě proměnné a, b odkazují na stejná data 10.
  2. Za druhé s řetězcovými daty byl výstup nepravdivý, protože obě proměnné c, d odkazují na stejná data Pythonu.
  3. 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í:

  1. Výstup z nejprve pokud podmínka je False, protože seznam1 i seznam2 jsou prázdné seznamy.
  2. 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.
  3. Výstup z třetí pokud podmínka je False, protože seznam1 i seznam3 ukazují na stejný objekt.
  4. Výstup z čtvrté jestliže podmínka je True, protože zřetězení dvou seznamů vždy vytvoří nový seznam.