Diferencias entre Python 2 y Python 3
En este tema se describe la diferencia entre Python 2 y 3, ya que se aplica a la aplicación Orchestration & Automation .
Las diferencias entre Python 2 y Python3 se describen detalladamente en la documentación de Python. Por ejemplo, consulte Novedades en Python 3.0. Además, debe tener en cuenta las diferencias que se aplican en el contexto de Orchestration & Automation.
Importación de módulos
- array
- base64
- bs4
- calendar
- collections
- datetime (equivalent to the Python 2 java.util.Date module)
- correo electrónico
- enum
- hashlib
- html
- html2text
- json
- random
- re
- regex
- serie
- Hora
- xml
- all ()
- any()
- bytearray()
- bytes()
- classmethod
- staticmethod
- tipo ()
Tipos de errores
- Se produce una ResilientSecurityException si un script intenta infringir las restricciones de seguridad.
- Se produce una ResilientMemoryLimitException si el script intenta asignar más de la cantidad máxima de RAM permitida (64 MB).
Palabra clave 'from'
La palabra clave from
en Python 3 entra en conflicto con el atributo from
del objeto de contexto de mensaje de correo electrónico. Este es el motivo por lo que no se admite el uso de emailmessage.from
en scripts de Python 3 y se debe sustituir por emailmessage.sender
. Python 2 sigue admitiendo emailmessage.from
.
Campos que no existen
None
. Sin embargo, en Python 3 la misma operación genera un error de atributo que indica que el nombre del campo no es válido. Este comportamiento está en línea con Python 3 estándar. El método hasattr()
se puede utilizar para comprobar si existe un atributo. Por ejemplo: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.
Soporte de Unicode
Python 3 da soporte a unicode de forma automática. Esto significa que ya no tiene que utilizar de forma explícita el prefijo u o la función unicode() para guardar una serie como unicode. Si convierte los scripts existentes de Python 2 a Python 3, debe comprobar y eliminar estos elementos para evitar errores relacionados con Unicode en Python 3. Para obtener más información, consulte la documentación de Python 3 https://docs.python.org/3.6/howto/unicode.html.
Tipo de datos de objeto de texto
- En Python 3, tanto si establece el valor de un campo de área de texto con una serie simple o con una función del ayudante, el valor se guarda como un TextObject. En Python 2, si establece el valor de un campo de área de texto con una serie simple, el valor se guarda como un objeto unicode. Si lo establece mediante una función de ayudante, el valor se guarda como SimpleTextContentDTO.
- En Python 3, el formato predeterminado para objetos de tipo TextObject es ‘html’. El formato solo se establece en 'text' si el valor de campo se establece invocando helper.createPlainText(). En Python 2, el formato para los objetos de tipo SimpleTextContentDTO puede ser TEXT o HTML, en función del ayudante que se invoque para establecer el valor.
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))