Unterschiede zwischen Python 2 und Python 3
In diesem Abschnitt wird der Unterschied zwischen Python 2 und 3 in Bezug auf die Anwendung Orchestration & Automation erläutert.
Die Unterschiede, die zwischen Python 2 und Python 3 bestehen, werden in der Python-Dokumentation ausführlich behandelt. Ein Beispiel finden Sie unter Neuerungen in Python 3.0. Darüber hinaus müssen Sie Unterschiede beachten, die im Kontext von Orchestration & Automationgelten.
Module importieren
- array
- base64
- bs4
- calendar
- collections
- datetime (entspricht dem Python-2-Modul java.util.Date)
- enum
- hashlib
- html
- html2text
- json
- random
- re
- regex
- Zeichenfolge
- Zeit
- xml
- alle ()
- any()
- bytearray()
- bytes()
- classmethod
- staticmethod
- Typ ()
Fehlertypen
- ResilientSecurityException tritt auf, wenn ein Script versucht, die Sicherheitseinschränkungen zu umgehen.
- ResilientMemoryLimitException tritt auf, wenn das Script versucht, mehr als den maximal zulässigen Arbeitsspeicher (64 MB) zuzuweisen.
Schlüsselwort 'from'
Das from
-Schlüsselwort in Python 3 kollidiert mit dem from
-Attribut im Kontextobjekt der E-Mail-Nachricht. Aus diesem Grund wird die Verwendung von emailmessage.from
in Python 3-Scripts nicht unterstützt und sollte durch emailmessage.sender
ersetzt werden. Python 2 unterstützt nach wie vor emailmessage.from
.
Nicht existierende Felder
None
(Keines) zurück. In Python 3 löst die gleiche Operation jedoch einen Attributfehler aus, der besagt, dass der Feldname ungültig ist. Dieses Verhalten entspricht dem Standard Python 3. Mit der Methode hasattr()
kann überprüft werden, ob ein Attribut vorhanden ist. Beispiel:if hasattr(incident, 'nonExistentField'):
log.info(incident.nonExistentField)
else:
log.info('Tried to access a field that does not exist')
INFO: Cannot access a field that does not exist.
Unicode-Unterstützung
Python 3 unterstützt Unicode ohne Vorbereitungs- oder Anpassungsaufwand. Das bedeutet, dass Sie nicht mehr explizit das Präfix u oder die Funktion unicode() verwenden müssen, um eine Zeichenkette als Unicode zu speichern. Wenn Sie vorhandene Scripts von Python 2 in Python 3 konvertieren, müssen Sie diese Elemente überprüfen und entfernen, um unicodebezogene Fehler in Python 3 zu vermeiden. Weitere Informationen finden Sie in der Python 3-Dokumentation https://docs.python.org/3.6/howto/unicode.html.
Textobjekt-Datentyp
- Unabhängig davon, ob Sie in Python 3 den Wert eines Textfelds mit einer einfachen Zeichenkette oder einer Hilfsfunktion setzen, wird der Wert als TextObjekt gespeichert. Wenn Sie in Python 2 den Wert eines Textfeldes mit einer einfachen Zeichenfolge setzen, wird der Wert als Unicode-Objekt gespeichert. Wenn Sie ihn über eine Hilfsfunktion setzen, wird der Wert als SimpleTextContentDTO gespeichert.
- In Python 3 ist das Standardformat für Objekte vom Typ TextObject 'html'. Das Format wird nur dann auf 'text' gesetzt, wenn der Feldwert durch den Aufruf von helper.createPlainText ()festgelegt wird. In Python 2 kann das Format für Objekte des Typs 'SimpleTextContentDTO' TEXT oder HTML sein, abhängig von dem Helper, der zum Festlegen des Werts aufgerufen wird.
incident.description = 'set direct'
log.info(type(incident.description))
incident.description = helper.createPlainText('set using createPlainText helper')
log.info(type(incident.description))
incident.description = helper.createRichText('set using createRichText helper')
log.info(type(incident.description))