Diferenças de Python 2 e Python 3
Este tópico discute a diferença entre o Python 2 e 3 como ele se aplica ao aplicativo Orchestration & Automation .
As diferenças que existem entre o Python 2 e o Python 3 são cobertas em detalhes na documentação do Python. Por exemplo, veja O que há de Novo em Python 3.0. Além disso, é preciso estar ciente das diferenças que se aplicam no contexto de Orquestração & Automação.
Importando módulos
- array
- base64
- bs4
- calendar
- collections
- datetime (equivalente ao módulo Python 2 java.util.Date)
- enum
- hashlib
- html
- html2text
- json
- random
- re
- regex
- sequência
- horário
- xml
- todos ()
- any()
- bytearray()
- bytes()
- classmethod
- staticmethod
- type()
Tipos de Erros
- ResilientSecurityException ocorrerá se um script tentar violar as restrições de segurança.
- ResilientMemoryLimitException ocorrerá se o script tentar alocar mais do que a quantia máxima de RAM permitida (64 MB).
Palavra-chave 'from'
A palavra-chave from
no Python 3 entra em conflito com o atributo from
no
objeto de contexto da mensagem de e-mail. Por esse motivo, o uso de emailmessage.from
não
é suportado em scripts Python 3 e deve ser substituído por emailmessage.sender
. O Python 2 ainda suporta emailmessage.from
.
Campos não existentes
None
. No entanto, no Python 3, a mesma operação lança um erro de atributo,
que afirma que o nome do campo é inválido. Esse comportamento está em linha com o Python 3 padrão. O método hasattr()
pode ser usado para verificar se um atributo existe. Por exemplo: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.
Suporte a Unicode
O Python 3 suporta o Unicode pronto para uso. Isso significa que não é mais necessário usar explicitamente o prefixo u ou a função unicode() para armazenar uma sequência como Unicode. Se você converter scripts existentes do Python 2 em Python 3, deverá verificar e remover esses elementos para evitar erros relacionados ao Unicode em Python 3. Para obter mais informações, consulte a documentação do Python 3 https://docs.python.org/3.6/howto/unicode.html.
Tipo de dados do objeto de texto
- No Python 3, se você configurar o valor de um campo de área de texto usando uma sequência simples ou uma função auxiliar, o valor será armazenado como um TextObject. No Python 2, se você configurar o valor de um campo de área de texto usando uma sequência simples, o valor será armazenado como um objeto Unicode. Se você configurá-lo usando uma função auxiliar, o valor será armazenado como um SimpleTextContentDTO.
- No Python 3, o formato padrão para objetos do tipo TextObject é 'html'. O formato é configurado como 'text' apenas se o valor de campo for configurado chamando helper.createPlainText(). No Python 2, o formato para objetos do tipo SimpleTextContentDTO pode ser TEXT ou HTML, dependendo do auxiliar que é chamado para configurar o 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))