Sai già programmare in un qualsiasi linguaggio di programmazione e vuoi avvicinarti a Python ? Fidati, non hai bisogno di un corso di 30 ore.
Python è un linguaggio di programmazione estremamente versatile quanto semplice da apprendere, per chi conosce già le basi della programmazione informatica, in questo articolo vedremo i 10 concetti fondamentali di Python per poter cominciare ad utilizzarlo.
Ma perché Python ?
Python è uno dei linguaggi di programmazione più utilizzati al mondo, secondo il TIOBE Index è il terzo più popolare tra i programmatori a Marzo 2019, con una crescita vertiginosa negli ultimi 5 anni.
Grazie alla sua sintassi semplice e intuitiva e all’enorme numero di moduli open source disponibili, Python può essere sfruttato per moltissimi scopi diversi come
- Sviluppo di applicazioni desktop
- Sviluppo di servizi web
- Networking e Penetration testing
- Calcolo scientifico.
- Machine Learning e Data Science
Ed è proprio in questi ultimi due punti che Python da del suo meglio, anche grazie all’esistenza di librerie come Numpy, Pandas e Scikit-Learn.
Le 10 cose da sapere su Python
Numero 1: Se lavori su Mac o Linux hai già Python
Python è installato di base su tutti i sistemi operativi Unix-like, per verificarlo apri il terminale e digita il comando python, se Python è installato si aprirà l’interprete interattivo dove potrai digitare le istruzioni e vedere l’output in tempo reale.
Numero 2: Python è un linguaggio interpretato
Il codice Python non viene compilato in un file eseguibile, come invece avviene con linguaggi compilati come C e C++, al contrario viene interpretato da un programma chiamato (sorpresa sorpresa) interprete che poi lo esegue.
Questo vuol dire che lo stesso codice Python può essere eseguito su qualsiasi sistema operativo sulla quale sia disponibile l’interprete, come ad esempio:
- Windows
- Unix/Linux
- Macintosh
- Sistemi operativi mobili come Android e iOS.
Il contro dei linguaggi interpretati è che sono tipicamente più lenti e meno efficienti di quelli compilati, dato che hanno l’interprete in mezzo, in realtà prima di essere eseguito tramite l’interprete, un programma Python viene pre-compilato in un formato chiamato bytecode, il ché lo rende più performante di diversi linguaggi interpretati, anche se non al livello di linguaggi compilati a basso livello come C/C++ (Python è realizzato proprio in linguaggio C).
Numero 3: i commenti
Una linea di commento in Python si introduce con il simbolo cancelletto (#).
# Questo è un commento # anche questo # quindi non verranno mostrati # durante l'esecuzione del programma print("ProfessionAI spacca!!!")
Numero 4: Python è un linguaggio non tipizzato
Questo vuol dire che non bisogna specificare a priori il tipo che una variabile conterrà ed è anche possibile riassegnare una variabile ad un tipo differente.
a = 5 print(type(a)) # ouput => int a = 2.3 print(type(a)) # output => float a = "ProfessionAI spacca" print(type(a)) # output => string
Per convertire una variabile da un tipo ad un altro possiamo usare il casting
a = 5.2 a = int(a) # a conterrà 5 a = str(a) # a conterrà "5" a = float(a) # a conterrà 5.0
Numero 5: L’utilizzo dell’indentazione
Se sei un programmatore sarai abituato ad utilizzare le parentesi graffe un po’ ovunque nel tuo codice, per funzioni, cicli, istruzioni condizioni e così via.
Python fa a meno della parentesi graffe e ci obbliga ad utilizzare l’indentazione per definire nuovi blocchi di codice e identificare il contesto delle istruzioni.
def fibonacci(n): # stampa dei primi n numeri della successione di fibonacci fib_num = 0 next_fib_num = 1 for i in range(n): # eseguiamo un'assegnazione multipla # piuttosto che usare una variabile temporanea fib_num, next_fib_num = next_fib_num, next_fib_num+fib_num print("%d° numero di Fibonacci = %d" % (i+1, fib_num))
L’indentazione può essere uno shift o un numero qualsiasi di spazi, purché sia consistente nel codice. Nel PEP 8, un’insieme di linee guida per la scrittura di codice Python realizzato proprio dall’autore del linguaggio, Guido Van Rossum, è specificato che una buona norma per l’indentazione è l’utilizzo di 4 spazi.
Numero 6: i tipi built-in sono oggetti
I tipi built-in di Python (int, float, string, boolean ecc…) sono tutti oggetti, quindi hanno i propri metodi.
a = "ProfessionAI spacca" # verifichiamo se la stringa è un numero a.isdigit() # output => False # cerchiamo un pattern nella stringa # se il pattern è presente ritorna l'indice in cui inizia # altrimenti torna -1 a.find("AI") # output => 10 # convertiamo la stringa in maiuscolo a = a.toupper() print(a) # output => "PROFESSIONAI SPACCA"
Numero 7: Liste, Tuple, Set e Frozenset
Come tutti i linguaggi di programmazione, Python ci permette di creare insiemi e sequenze di dati con 4 tipi built-in: Liste, Tuple, Set e Frozenset.
Le liste vengono definite racchiudendo gli elementi tra parentesi quadre.
shopping_list = ["latte di soia", "tofu", "yogurt greco", "croccantini per il gatto"] # indexing, stampiamo il primo e l'ultimo elemento print(shopping_list[0]) # output => "latte di soia" print(shopping_list[-1]) # output => "croccantini per il gatto" shopping_list.append("altri croccantini per il gatto") #aggiunta in coda shopping_list.remove("tofu") #rimozione per valore shopping_list.pop(1) #rimozione per indice shopping_list.insert(1, "ancora altri croccantini) #aggiunta alla posizione
Le tuple, a differenza delle liste, sono immutabili, quindi una volta definita una tupla non può essere modificata. Sia tuple che liste possono contenere elementi di tipi diversi, ma in questo caso è meglio usare le tuple. Una tupla si definisce inserendo gli elementi tra parentesi tonde.
animals = ( "gatto", "cane","topo", "cavallo", "tigre") #indexing animals[1] #secondo elemento animals[-2]penultimo elemento #slicing animals[:3] #primi 3 animals[:-2] #tutti tranne gli ultimi due #una tupla non può essere modificata #farlo causerà un'eccezione animals[0]="uomo" # <= eccezione 'TypeError'
Set e frozenset sono insiemi unici non ordinati, cioè non possono contenere due elementi uguali e non tengono conto dell’ordine degli elementi. La differenza tra i due è che un frozenset è immutabile. Possiamo creare un Set inserendo gli elementi tra parentesi graffe.
names = {"Giuseppe","Federico","Antonio","Matteo", "Federico} print(names) # output => {'Federico', 'Giuseppe', 'Matteo', 'Antonio'} names.add("Lorenzo") #aggiunta names.remove("Antonio") #rimozione name = names.pop() # estrazione names_frozen = frozenset(names)
Numero 8: I dizionari
Se lavori spesso con JSON, i dizionari saranno una manna dal cielo per te (come lo sono stati per me). I dizionari ci permettono di salvare dati in formato chiave:valore, in cui sia chiave che valore possono essere un tipo qualsiasi. Possiamo creare un dizionario inserendo chiavi e valori separati da : tra parentesi graffe.
items = {"latte":3,"riso": 2, "tofu":5} print(items["tofu"]) # output => 5 # aggiungiamo un elemento items["cereali"]=1 # aggiungiamo un elemento # che contiene un'altro dizionario items["yogurt"] = {"fragola":2, "bianco":3} # otteniamo la lista di tutte le chiavi keys = list(items.keys()) # otteniamo la lista di tutti i valori values = list(items.values())
Numero 9: Python è un linguaggio multi-paradigma
Questo vuol dire che possiamo utilizzare diversi paradigmi di programmazione, come:
- Programmazione Procedurale
- Programmazione Orientata agli Oggetti
- Programmazione Funzionale
- Programmazione Imperativa
class Triangle: """ Questa classe rappresenta un triangolo """ def __init__(self, a, b, c, h): self.a, self.b, self.c, self.h = a, b, c ,h def area(self): """ Calcolo dell'area del triangolo """ return float(self.b)*float(self.h)/2. def perimeter(self): """ Calcolo del perimetro del triangolo """ return self.a+self.b+self.c def print_info(self): """ Stampiamo area e perimetro del triangolo """ print("Area del triangolo: %2.f" % self.area()) print("Perimetro del triangolo: %2.f" % self.perimeter()) help(Triangle) # otteniamo informazioni sulla classe triangle = Triangle(5.,3.,5.,4.) triangle.print_info()
Numero 10: I moduli, PyPI e la Standard Library
Esistono moduli e librerie Python creati da sviluppatori terzi per praticamente qualsiasi cosa, molti di questi sono contenuti all’interno del Python Package Index (PyPI).
E’ possibile installare moduli e librerie da PyPI utilizzando pip, il gestore di pacchetti per eccellenza, che viene installato insieme a Python.
Possiamo importare un moduli, classi e funzioni nel nostro codice utilizzando l’istruzione import.
import numpy # calcoliamo la potenza 10ima di 2 np_pow = numpy.power(2, 10)
All’interno della Standard Library di Python sono presenti moltissimi moduli, già installati e pronti all’utilizzo.
import os # importiamo il modulo os presente nella standard library # otteniamo il path alla directory corrente cwd = os.getcwd() print(cwd) # importiamo la funzione factorial # presente all'interno del modulo math # della standard library from math import factorial # calcoliamo il fattoriale di 10 fact_10 = factorial(10) print(fact_10) # output => 3628800
Questo è tutto (almeno per ora)
Partendo da qui e dando uno sguardo ad un po’ di codice su Github, potrai cominciare a realizzare i tuoi programmi in Python, vedrai che il risparmio di tempo rispetto ad altri linguaggi di programmazione sarà notevole.
Se vuoi approfondire la teoria dietro al linguaggio di programmazione Python, ti consiglio questa fantastica lettura e non dimenticare di utilizzare la documentazione di Python.