Python 2 ve Python 3 farklılık
Bu konuda, Düzenleme ve Otomasyon uygulaması için geçerli olduğu için Python 2 ve 3 arasındaki fark ele alınmıştır.
Python 2 ve Python 3 arasındaki farklar Python belgelerinde ayrıntılı olarak ele alınmaktadır. Örneğin, Python 3.0konusuna bakın. Ayrıca, Düzenleme ve Otomasyonbağlamında geçerli olan farklılıkları da bilmeniz gerekir.
Modüller içe aktarılıyor
- dizi
- base64
- bs4
- Takvim
- kaynak grupları
- datetime ( Python 2 java.util.Date modülüne eşdeğer)
- e-posta
- sıralı değer
- hashlib
- html
- html2text
- json
- rasgele
- RE
- düzenli ifade
- string
- zamanlı
- xml
- all ()
- herhangi ()
- bytearray ()
- byte ()
- classmethod
- staticmethod
- type ()
Hata tipleri
- ResilientSecurityBir komut dosyası güvenlik kısıtlamalarını ihlal etmeye çalışırsa kural dışı durum oluşur.
- ResilientMemoryLimitException (Komut dosyası izin verilen RAM miktarı üst sınırından daha fazla ayırmayı denerse), komut dosyası için hata ortaya çıkar (64MB).
'from' anahtar sözcüğü
Python 3 'teki from anahtar sözcüğü, eposta iletisi bağlam nesnesindeki from özniteliğiyle çakışıyor. Bu nedenle, Python 3 komut dosyalarında emailmessage.from kullanımı desteklenmez ve emailmessage.senderile değiştirilmelidir. Python 2, emailmessage.from' yi hala destekliyor.
Var olmayan alanlar
Nonedöndürür. Ancak Python 3 'te aynı işlem, alan adının geçersiz olduğunu belirten bir öznitelik hatası verir. Bu davranış, standart Python 3 ile aynı hizada. hasattr() yöntemi, bir özniteliğin var olup olmadığını denetlemek için kullanılabilir. Örneğin: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 desteği
Python 3, kutudan çıkan Unicode 'u destekler. Bu, artık bir dizgiyi Unicode olarak saklamak için u önekini ya da unicode () işlevini belirtik olarak kullanmanız gerekmediği anlamına gelir. Var olan komut dosyalarını Python 2 'den Python 3 'e dönüştürürseniz, Python 3 'te Unicode ile ilgili hataları önlemek için bu öğeleri denetlemeniz ve kaldırmanız gerekir. Daha fazla bilgi için Python 3 belgelerine https://docs.python.org/3.6/howto/unicode.htmlbakın.
Metin nesnesi veri tipi
- Python 3 'te, ister basit bir dizgi, ister yardımcı bir işlev kullanarak bir metin alanı alanının değerini ayarlasın, değer TextObjectolarak saklanır. Python 2 'de, basit bir dizgi kullanarak bir metin alanı alanının değerini ayarlarsanız, değer Unicode nesnesi olarak saklanır. Bu değeri bir yardımcı işlev kullanarak ayarlarsanız, değer SimpleTextContentDTOolarak saklanır.
- Python 3 'te, TextObject tipindeki nesneler için varsayılan biçim 'html' dir. Biçim 'text' olarak ayarlanabilmesini sağlamak için, alan değeri helper.createPlainText()çağrılarak ayarlanmalıdır. Python 2 'de, SimpleTextContentDTO tipindeki nesnelerin biçimi, değeri ayarlamak için çağrılan yardımcıya bağlı olarak TEXT ya da HTML olabilir.
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))