Python är starkt typat. Det betyder att ingen automagisk cast sker, man måste göra det uttryckligen. I stil med Java och i motsats till VB-skript.
I Python är allt ett objekt. En funktion, en klass, en instans, en sträng, en int, en lista, osv. Detta är en styrka vid snabb och enkel utveckling.
I Python är dokumentation inbyggt. Språket "rekommenderar" en att dokumentera och det går att få tag på dokumentationen runtime. Ljuvt!
I Python använder man inte braces som i C, utan i stället låter man indenteringsnivån avgöra vilket scope koden tillhör. Felaktig indentering -> kompileringsfel.
Åter till shellet. Skriv:
>>> def myFunction(data):
print data
>>> myFunction(3.3)
3.3
>>> myFunction("Hej du glade")
Hej du glade
Som du ser så skiter myFunction i vad objektet "data" har för typ. Nu testar vi stark typning och omdefinierar myFunction:
>>> def myFunction(data1, data2):
data = data1+data2
print data
>>> myFunction(3.3, 5.5)
8.8
>>> myFunction(3.3, "Hej du glade")
Traceback (most recent call last):
File "
myFunction(3.3, "Hej du glade")
File "
data = data1+data2
TypeError: unsupported operand type(s) for +: 'float' and 'str'
En stack trace skrivs ut och resten är historia.
Att skicka ett funktionsobjekt är precis lika trivialt:
>>> def f1(param1, param2):
param1(param2)
>>> def f2(data):
print data+3
>>> f1(f2, 7)
10
Om man lägger en sträng direkt i början på en modul, klass eller funktion så blir det dokumentationssträngen, och hamnar som en medlemssträng i objektet och får
namnet __doc__. Såhär dokumenterar man:
>>> def minSuperFunction():
"Detta är min supraledande funktion!"
print "Jomenvisst!"
För att ta reda på dokumentationen kan du gå den tramsiga vägen:
>>> minSuperFunction.__doc__
'Detta \xe4r min supraledande funktion!'
Eller om du vill vara cool:
>>> help(minSuperFunction)
Help on function minSuperFunction in module __main__:
minSuperFunction()
Detta är min supraledande funktion!
Den inbyggda functionen help() drar rekursivt igenom dokumentationen i ett objekt och skriver ut den snyggt.
Självdokumenterande kod är en utopi, men detta tar en ett steg närmare, inte sant?
Inga kommentarer:
Skicka en kommentar