Bedingter Zuweisungsoperator in Python

Bhuwan Bhatt 30 Januar 2023
  1. Bedeutung des Operators ||= in Ruby
  2. Implementieren Sie Rubys bedingten Zuweisungsoperator ||= in Python mit der try...except-Anweisung
  3. Implementieren Sie den bedingten Zuweisungsoperator ||= von Ruby in Python mit lokalen und globalen Variablen
Bedingter Zuweisungsoperator in Python

Es gibt kein genaues Äquivalent zu Rubys ||=-Operator in Python. Wir können jedoch die Methode try...except und Konzepte lokaler und globaler Variablen verwenden, um Rubys bedingten Zuweisungsoperator ||= in Python zu emulieren.

Bedeutung des Operators ||= in Ruby

x ||= y

Die grundlegende Bedeutung dieses Operators besteht darin, den Wert der Variablen y der Variablen x zuzuweisen, wenn die Variable x undefiniert oder ein false Wert ist, andernfalls wird keine Zuweisung durchgeführt.

Aber dieser Operator ist viel komplexer und verwirrender als andere einfachere bedingte Operatoren wie +=, -=, denn jedes Mal, wenn eine Variable als undefiniert angetroffen wird, gibt die Konsole NameError aus.

a+=b ergibt a=a+b.

a||=b sieht aus wie a=a||b, verhält sich aber tatsächlich wie a||a=b.

Implementieren Sie Rubys bedingten Zuweisungsoperator ||= in Python mit der try...except-Anweisung

Wir verwenden try...except, um Fehler abzufangen und zu behandeln. Immer wenn der try...except-Block ausgeführt wird, wird zuerst der Code ausgeführt, der innerhalb des try-Blocks liegt. Wenn der Codeblock innerhalb des try-Blocks erfolgreich ausgeführt wird, wird der except-Block ignoriert; andernfalls wird der Blockcode except ausgeführt und der Fehler behandelt. Rubys ||=-Operator kann grob in Pythons try-catch-Methode übersetzt werden als:

try:
    x
except NameError:
    x = 10

Wenn hier die Variable x definiert ist, wird der try-Block ohne NameError-Ausnahme reibungslos ausgeführt. Daher wird keine Zuweisungsoperation durchgeführt. Wenn x nicht definiert ist, generiert der try-Block NameError, dann wird der except-Block ausgeführt und die Variable x wird auf 10 gesetzt.

Implementieren Sie den bedingten Zuweisungsoperator ||= von Ruby in Python mit lokalen und globalen Variablen

Der Gültigkeitsbereich lokaler Variablen ist auf einen bestimmten Codebereich beschränkt, während der Gültigkeitsbereich globaler Variablen im gesamten Codebereich definiert ist.

Alle lokalen Variablen in einem bestimmten Scope sind als Schlüssel des Dictionaries locals in diesem speziellen Scope verfügbar. Alle globalen Variablen werden als Schlüssel des Dictionaries globals gespeichert. Auf diese Variablen können wir bei Bedarf über das Dictionary locals und globals zugreifen.

Wir können prüfen, ob eine Variable in einem der Wörterbücher existiert und ihren Wert nur dann setzen, wenn sie nicht existiert, um Rubys bedingter Zuweisungsoperator ||= in Python zu übersetzen.

if x in locals().keys():
    locals().get(x)
elif x in globals().keys():
    globals().get(x)
else:
    x = 10

Wenn die Variable x entweder im globalen oder lokalen Gültigkeitsbereich vorhanden ist, führen wir keine Zuweisungsoperation durch; andernfalls weisen wir den Wert von x auf 10 zu. Es ist ähnlich zu x||=10 in Ruby.

Verwandter Artikel - Python Operator