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 = None

Dit 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] = None

Optional 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 subscriptable

Om 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:

  • List
  • Dict
  • Set
  • FrozenSet
  • type

Voor een volledig overzicht zie hier.