Sviluppo

Programmazione in Python: le 10 cose da sapere

Pubblicato il 29.08.2024 da ProfessionAI

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 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

  • 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:

  1. Programmazione Procedurale
  2. Programmazione Orientata agli Oggetti
  3. Programmazione Funzionale
  4. 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

 

Vuoi iniziare a programmare in Python ma non hai alcuna esperienza?

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

Condividi articolo

Articoli recenti

  • AI Developer Master corsoAI Developer: Chi è e cosa fa
    In Educazione, Intelligenza artificiale, Sviluppo
    I rapidi progressi dell’intelligenza artificiale stanno rivoluzionando interi settori, offrendo alle aziende opportunità straordinarie per innovare e risolvere problemi complessi. Tuttavia, solo chi sarà in grado di sfruttarne appieno il potenziale potrà davvero fare la differenza. In questo scenario, emerge una figura professionale sempre più centrale e richiesta: l’AI Developer. Ma cosa fa esattamente un AI Developer? Quali competenze servono per intraprendere questa carriera in forte crescita? […]
  • ProfessionAI: Formazione e Lavoro nel mondo dei Dati e dell’AI
    In Educazione, Intelligenza artificiale
    Formazione e lavoro in ambito Dati e AI: Dal 2017, […]
  • Deep Learning ProfessionAIDeep Learning Svelato: ecco come funzionano le Reti Neurali Artificiali (NLP)
    In Intelligenza artificiale