Autor wpisu: Śpiechu, dodany: 21.08.2011 18:58, tagi: php
Mamy niedzielę. W ramach leniuchowania zachciało mi się poznać jakiś nowy język programowania. Padło na Pythona (nieznacznie wygrał z Rubym).
Na pierwszy rzut oka to w zasadzie taki JavaScript ogólnego przeznaczenia bez przeglądarki. Python reklamowany jest jako język typu batteries included, czyli standardowa biblioteka powinna zawierać wszystko to, co w typowych zastosowaniach programista potrzebuje.
Od razu widać puryzm kodu Pythona. Żadnych klamerek, żadnych średników — wszystko załatwiamy wcięciami i końcami linii. „Kompresja kodu” widoczna jest na każdym kroku, np. funkcje deklarujemy poprzez def, a nie przydługawe function, obiekty tworzymy bez new. Weźmy na przykład najprostszą funkcję żądającą od użytkownika wpisania z klawiatury jakiejś liczby:
def getIntInput(message): while True: try: return int(input(message)) except ValueError: print("You were supposed to enter integer!")
W 6 liniach mamy załatwioną prośbę o wpisanie czegoś, przetworzenie wejścia i wyłapanie ewentualnych błędów. Funkcja nie odczepi się od użytkownika dopóki nie wpisze poprawnie jakichś cyferek.
wiek = getIntInput("Podaj rok urodzenia")
Poniżej w punktach ciekawostki, które w Pythonie są, a których nie ma w PHP (tyle co w ciągu kilku godzin udało mi się wyłapać):
- wspomniane już braki klamerek i średników — czy naprawdę potrzebujemy tego wszystkiego w PHP?
- wszystkie metody publiczne — tego nie popieram, może powodować bajzel w API; zgodnie z konwencją metody prywatne należy oznaczać przedrostkiem _
- fajne konstrukcje przy iterowaniu: for zmienna in array oraz for zmienna in range(5)
- dziwne zasady dokumentowania kodu — komentarze idą po deklaracji klasy czy metody
- array comprehension (nawet nie wiem jak to przetłumaczyć) — w jednej linijce możemy stworzyć nową tablicę na podstawie starej i przejechać jakąś funkcją po każdej wartości przed dodaniem:
nowaTablica = [funkcja(wartosc) for wartosc in staraTablica]
- proste losowanie:
zagadka = random.choice(["wartosc1","wartosc2","wartosc3"])
- tuple, czyli niedająca się modyfikować tablica; co ciekawe, funkcje bardzo często zwracają to ustrojstwo, możemy od razu złapać je do dwóch różnych zmiennych
wynik1, wynik2 = funkcja()
- obiekt None zamiast null
- == i != do sprawdzania wartości zmiennych, is i is not do porównywania z None lub referencji, mało tego, możliwa jest konstrukcja 0 <= a <= 10
- próba porówania if „3” < 4 wywali TypeError
- konstrukcja final do kompletu z try/except
- bajer dla mnie: if szukanaZmienna in tablica oraz if „wyraz” in przeszukiwanyString
Tyle na początek. Widzę, że Python to fajna sprawa. O wszystkim pomyśleli. Nawet o wbudowaniu bazy danych sqlite w bibliotekę standardową. Jeżeli ktoś waha się czego by tu nowego się pouczyć to polecam!
P.S.: Tak, wiem, na tych waszych polibudach Pythona uczą już na I roku, ble ble srutututu. Samoucy typu np. ja muszą sami. Dobra, kończę, bo i piwo mi się skończyło