Pycontracts

Een Python-pakket waarmee u beperkingen op functieparameters en retourwaarden kunt declareren
Download nu

Pycontracts Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • LGPL
  • Naam uitgever:
  • Andrea Censi

Pycontracts Tags


Pycontracts Beschrijving

Een Python-pakket waarmee u beperkingen op functieparameters en retourwaarden kunt declareren PyContracts is een Python-bibliotheek die mogelijk maakt om beperkingen op functieparameters en retourwaarden te declareren. Het ondersteunt een basistype systeem, variabelenbinding, rekenkundige beperkingen en heeft verschillende gespecialiseerde contracten (met name voor numpy arrays). Een korte samenvatting volgt. Zie de volledige documentatie op: http://andreacensi.github.com/contracts/why: het doel van pycontracts is niet om Python in een statisch getypte taal te veranderen (zij het zo streng als u wenst), maar eerder , om de tijdrovende en obfuscerende controle van verschillende randvoorwaarden te vermijden. In feite vond ik in feite dat ik nuttig vond het vermogen om waarde- en grootte-beperkingen op te leggen. "Ik heb bijvoorbeeld een lijst nodig van ten minste 3 positieve nummers" kan worden uitgedrukt als lijst (nummer,> 0)). Als je merkt dat pycontracts overkill voor je is, wil je misschien een eenvoudiger alternatief proberen, zoals Typecheck. Als je merkt dat pycontracts niet genoeg voor je is, wil je waarschijnlijk Haskell gebruiken in plaats van Python.Contracts kunnen op drie manieren worden vermeld: * Annotaties gebruiken (voor Python 3) --- Dit is misschien wel de meest intuïtieve manier: @ Contracten Def My_function (A: 'Int,> 0', B: 'Lijst , n> 0') -> 'Lijst ': # Vereist B om een niet-lege lijst te zijn, en de return # -waarde naar hebben dezelfde lengte. ... * GEBRUIKEN: TYPE: EN: RTYPE: Tags in docstrings. Op deze manier worden ze opgenomen in uw documentatie van Sphinx: @Contracts Def My_function (A, B): "" "Functiebeschrijving.: Type A: int,> 0: Type B: Lijst , N> 0: RTYPE: lijst "" "... * met behulp van argumenten aan de decorateurs; De minst opdringerige manier: @contracts (A = 'Int,> 0', B = 'lijst , n> 0', returns = 'lijst ') Def My_function (A, B): ... Bovendien zijn er hulpprogramma's voor handmatige controle van waarden: check ('array (Uint8), H> 10, W> 10', afbeelding) en haken om pycontracts uit te breiden met nieuwe contracten typen: new_contract ('valid_name ', Lambda S: Isinstance (S, Str) en Len (S)> 0) Controle (' DICT (INT: (valide_name, int)) ', werknemers) Status: PyContracts is zeer goed getest en gedocumenteerd, maar ik ben Houden van de versie tot 0,9, omdat sommige kleine variaties van de syntaxis waarschijnlijk worden gemaakt op basis van gebruikersfeedback en suggesties. Vereisten: · Python


Pycontracts Gerelateerde software