Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara None e Dati Binari | Interazioni tra Tipi Diversi
Tipi di Dati in Python

bookNone e Dati Binari

I programmi reali gestiscono valori mancanti e dati grezzi provenienti da file o reti. Utilizzare None per rappresentare "nessun valore" e bytes o bytearray per i dati binari. Questo capitolo mostra quando utilizzare ciascuno e come passare in modo sicuro tra testo e byte.

None per "Nessun Valore"

None è un singolo oggetto speciale che significa "niente qui".

12345678910111213
# Basic checks result = None email = None print("result is None:", result is None) # True print("email is None:", email is None) # True # Identity checks are the reliable way if result is None: print("No result yet") if email is not None: print("Email present") else: print("Email missing")
copy

None è considerato falso, ma anche 0 e "" lo sono. Preferire is None quando si intende realmente "mancante".

123
value = 0 print("not value:", not value) # True - but 0 is a valid value print("value is None:", value is None) # False - correctly distinguishes 0 from missing
copy

Valori predefiniti e alternative

1234567891011
x = None safe_or = x or "unknown" # replaces any falsey value safe_none_only = "unknown" if x is None else x print("x=None, x or 'unknown':", safe_or) # 'unknown' print("x=None, None-only fallback:", safe_none_only) # 'unknown' x = 0 safe_or = x or "unknown" safe_none_only = "unknown" if x is None else x print("x=0, x or 'unknown':", safe_or) # 'unknown' - maybe not desired print("x=0, None-only fallback:", safe_none_only) # 0 - preserves valid zero
copy

Funzioni e Parametri

12345678910111213
def find_user(name): # returns None if not found return None def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" user = find_user("Ada") print("user is None:", user is None) # True print(add_tag("hello")) # "[general] hello" print(add_tag("hello", tag="news")) # "[news] hello"
copy

bytes e bytearray per Dati Binari

Il testo utilizza str e contiene caratteri Unicode. I dati binari utilizzano bytes o bytearray e contengono valori byte grezzi da 0 a 255.

123456789
# Creating binary data b1 = b"hello" # bytes literal b2 = bytes([72, 105]) # b"Hi" buf = bytearray(b"abc") # mutable buf[0] = 65 # now b"Abc" print("b1:", b1, type(b1)) # b'hello' <class 'bytes'> print("b2:", b2, type(b2)) # b'Hi' <class 'bytes'> print("buf:", buf, type(buf)) # bytearray(b'Abc') <class 'bytearray'>
copy

Conversione tra testo e bytes: Encode e Decode

1234567
text = "café" data = text.encode("utf-8") # to bytes back = data.decode("utf-8") # back to str print("text:", text, type(text)) # café <class 'str'> print("data:", data, type(data)) # b'caf\xc3\xa9' <class 'bytes'> print("back:", back, type(back)) # café <class 'str'>
copy

Combinazione di testo e byte - Non valida senza conversione

123456789
# Non-valid operation with explicit error print try: bad = b"ID:" + "123" # bytes + str - not allowed except TypeError as e: print("TypeError when mixing bytes and str:", e) # Correct combination ok = b"ID:" + "123".encode("utf-8") print("combined bytes:", ok) # b'ID:123'
copy

Le lunghezze possono differire

123
ch = "é" print("len('é') as str:", len(ch)) # 1 character print("len('é' encoded):", len(ch.encode("utf-8")))# 2 bytes
copy

File

# Binary files yield bytes
# with open("example.png", "rb") as f:
#     blob = f.read()

1. Quale controllo rileva correttamente un valore mancante?

2. Quale riga combina correttamente il testo con un prefisso bytes?

3. Quale affermazione è corretta?

question mark

Quale controllo rileva correttamente un valore mancante?

Select the correct answer

question mark

Quale riga combina correttamente il testo con un prefisso bytes?

Select the correct answer

question mark

Quale affermazione è corretta?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain when to use `None` versus other falsey values?

How do I safely provide default values for function parameters?

What are the main differences between `bytes` and `bytearray`?

Awesome!

Completion rate improved to 5

bookNone e Dati Binari

Scorri per mostrare il menu

I programmi reali gestiscono valori mancanti e dati grezzi provenienti da file o reti. Utilizzare None per rappresentare "nessun valore" e bytes o bytearray per i dati binari. Questo capitolo mostra quando utilizzare ciascuno e come passare in modo sicuro tra testo e byte.

None per "Nessun Valore"

None è un singolo oggetto speciale che significa "niente qui".

12345678910111213
# Basic checks result = None email = None print("result is None:", result is None) # True print("email is None:", email is None) # True # Identity checks are the reliable way if result is None: print("No result yet") if email is not None: print("Email present") else: print("Email missing")
copy

None è considerato falso, ma anche 0 e "" lo sono. Preferire is None quando si intende realmente "mancante".

123
value = 0 print("not value:", not value) # True - but 0 is a valid value print("value is None:", value is None) # False - correctly distinguishes 0 from missing
copy

Valori predefiniti e alternative

1234567891011
x = None safe_or = x or "unknown" # replaces any falsey value safe_none_only = "unknown" if x is None else x print("x=None, x or 'unknown':", safe_or) # 'unknown' print("x=None, None-only fallback:", safe_none_only) # 'unknown' x = 0 safe_or = x or "unknown" safe_none_only = "unknown" if x is None else x print("x=0, x or 'unknown':", safe_or) # 'unknown' - maybe not desired print("x=0, None-only fallback:", safe_none_only) # 0 - preserves valid zero
copy

Funzioni e Parametri

12345678910111213
def find_user(name): # returns None if not found return None def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" user = find_user("Ada") print("user is None:", user is None) # True print(add_tag("hello")) # "[general] hello" print(add_tag("hello", tag="news")) # "[news] hello"
copy

bytes e bytearray per Dati Binari

Il testo utilizza str e contiene caratteri Unicode. I dati binari utilizzano bytes o bytearray e contengono valori byte grezzi da 0 a 255.

123456789
# Creating binary data b1 = b"hello" # bytes literal b2 = bytes([72, 105]) # b"Hi" buf = bytearray(b"abc") # mutable buf[0] = 65 # now b"Abc" print("b1:", b1, type(b1)) # b'hello' <class 'bytes'> print("b2:", b2, type(b2)) # b'Hi' <class 'bytes'> print("buf:", buf, type(buf)) # bytearray(b'Abc') <class 'bytearray'>
copy

Conversione tra testo e bytes: Encode e Decode

1234567
text = "café" data = text.encode("utf-8") # to bytes back = data.decode("utf-8") # back to str print("text:", text, type(text)) # café <class 'str'> print("data:", data, type(data)) # b'caf\xc3\xa9' <class 'bytes'> print("back:", back, type(back)) # café <class 'str'>
copy

Combinazione di testo e byte - Non valida senza conversione

123456789
# Non-valid operation with explicit error print try: bad = b"ID:" + "123" # bytes + str - not allowed except TypeError as e: print("TypeError when mixing bytes and str:", e) # Correct combination ok = b"ID:" + "123".encode("utf-8") print("combined bytes:", ok) # b'ID:123'
copy

Le lunghezze possono differire

123
ch = "é" print("len('é') as str:", len(ch)) # 1 character print("len('é' encoded):", len(ch.encode("utf-8")))# 2 bytes
copy

File

# Binary files yield bytes
# with open("example.png", "rb") as f:
#     blob = f.read()

1. Quale controllo rileva correttamente un valore mancante?

2. Quale riga combina correttamente il testo con un prefisso bytes?

3. Quale affermazione è corretta?

question mark

Quale controllo rileva correttamente un valore mancante?

Select the correct answer

question mark

Quale riga combina correttamente il testo con un prefisso bytes?

Select the correct answer

question mark

Quale affermazione è corretta?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 3
some-alt