Sviluppo
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.
Python è uno dei linguaggi di programmazione più utilizzati al mondo, secondo il TIOBE Index è il primo più popolare ad Agosto 2024, 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
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.
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.
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:
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).
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!!!")
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
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.
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"
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)
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())
Questo vuol dire che possiamo utilizzare diversi paradigmi di programmazione, come:
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()
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
In ProfessionAI organizziamo spesso attività gratuite per farti avvicinare alle professioni di ambito Dati e AI. Vuoi ricevere una mail quando apriamo le attività gratuite? Iscriviti qui e ti terremo aggiornat*!
Ricevi corsi e workshop gratuiti!Se hai domande o vuoi entrare in contatto con noi puoi iscriverti alla nostra community di Discord, è gratuita!
Facci una domanda su Discord