Programmeren in Python is niet overal hetzelfde! Waarom niet? Omdat niet iedereen dezelfde versie draait!
Zo draait er momenteel op de robot 3.8. Op deze pagina schrijf ik een kort overzicht van stukjes code die lokaal op je computer wel zullen compileren, maar op de robot niet! Uiteraard zet ik er ook de oplossing bij. 😄
Union operands
Stel je voor ik zou 2 types kunnen returnen, dan schrijven we tegenwoordig iets vergelijkbaar als dit:
platform: EPlatform | None = NoneDit is eigenlijk een Union met de twee types EPlatform en None.
Je zou dit gewoon met het Union type kunnen aanpassen. In het bovenstaande voorbeeld waarin we met None werkte zou je echter beter het type Optional kunnen gebruiken:
platform: Optional[EPlatform] = NoneOptional is in code kort voor Union[type, None].
Type hinting
Als je je programma op de robot compilet zie je misschien de volgende error:
TypeError: 'type' object is not subscriptableOm dictionaries en tuples te gebruiken moet je i.p.v. de kleine letter dict[type, type] met hoofdletter Dict[type, type] gebruiken. Dit komt omdat de functionaliteit van Type Hinting Generics in Standard Collections pas sinds Python 3.9 bestaat, en de robot draait op 3.8.
Dit geldt o.a. voor:
ListDictSetFrozenSettype
Voor een volledig overzicht zie hier.