20 concetti di Python che avrei voluto conoscere prima
Ci sono molti concetti che dobbiamo cogliere in Python. E ognuno li impara in modo diverso, in sequenze diverse. Ecco alcune cose che vorrei aver imparato molto prima quando ero ancora un principiante di Python.
1) Tuple Unpacking + Tuple Unpacking Con *
person = ['bob', 30, 'male']
name, age, gender = person
# name='bob, age=30, gender='male'
fruits = ['apple', 'orange', 'pear', 'pineapple', 'durian', 'banana']
first, second, *others = fruits
# first='apple', second='orange'
# others = ['pear', 'pineapple', 'durian', 'banana']
2) Comprensione dell'elenco + Comprensione dict/set
lis = [expression for i in iterable if condition]
l1 = [i for i in range(1,4)] # [1,2,3]
l2 = [i*2 for i in range(1,4)] # [2,4,6]
l3 = [i**2 for i in range(1,4)] # [1,4,9]
l4 = [i for i in range(1,4) if i%2==1] # [1,3]
set1 = {i for i in range(1,4)} # {1,2,3}
d1 = {i:i**2 for i in range(1,4)} # {1:1, 2:4, 3:9}
3) Operatore ternario
score = 57
if score > 90:
grade = 'A*'
elif score > 50:
grade = 'pass'
else:
grade = 'fail'
# grade = 'pass'
score = 57
grade = 'A*' if score>90 else 'pass' if score>50 else 'fail'
# grade = 'pass'
4) Metodi magici nelle classi Python
class Dog():
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'Dog(name={self.name}, age={self.age})'
def __gt__(self, otherDog):
return self.age > otherDog.age
dog = Dog('rocky', 4)
print(dog) # Dog(name=rocky, age=4)
dog1 = Dog('rocky', 4)
dog2 = Dog('fifi', 2)
print(dog1 > dog2) # True
5) *args e **kwargs
def test(a, b, *args):
print(f'{a=} {b=} {args=}')
test(1,2,3,4,5) # a=1 b=2 args=(3,4,5)
def test(a, b, **kwargs):
print(f'{a=} {b=} {kwargs=}')
test(a=1, b=2, c=3, d=4) # a=1 b=2 kwargs={'c': 3, 'd': 4}
6) Lavorare con più file .py
# helper.py
def test123():
print('test123 is called')
# main.py
from helper import test123
test123() # test123 is called
7) se __name__ == '__main__'
# helper.py
def test123():
print('test123 is called')
if __name__ == '__main__':
# this line only runs if we run helper.py DIRECTLY
print('print statement from helper.py')
# main.py
from helper import *
test123() # test123 is called
8) Valori veri e falsi
# 0 if falsy, and evaluates to False
if 0: print('this wont print')
# non-zero numbers are truthy, and evaluate to True
if 1: print('this prints')
if 2: print('this prints')
if 100: print('this prints')
if -1: print('this prints')
if 3.14: print('this prints')
# empty sequences are falsy, and evaluate to False
if '': print('this wont print')
if []: print('this wont print')
if {}: print('this wont print')
if set(): print('this wont print')
# non-empty sequences are truthy, and evaluate to True
if 'a': print('this prints')
if [1]: print('this prints')
if {2:3}: print('this prints')
if {1,2}: print('this prints')
# None is falsy, and evaluates to False
obj = None
if obj: print('this wont print')
# objects are truthy, and evaluates to True
obj = Dog()
if obj: print('this prints')
for i in [1,2,3,4,5]:
if i == 3:
break
print(i)
# this prints 1 and 2
for i in [1,2,3,4,5]:
if i == 3:
continue
print(i)
# this prints 1, 2, 4 and 5
for i in [1,2,3,4,5]:
if i == 3:
pass
print(i)
# this prints 1, 2, 3, 4 and 5
10) provare tranne finalmente blocchi
try:
# risky code that could cause exceptions
except:
# this block executes if an exception happens in the try block
finally:
# stuff here will ALWAYS execute
11) Librerie di creazione di API Web Python
Se hai intenzione di diventare un ingegnere del software, è probabile che tu debba saperlo abbastanza bene. L'ho saputo piuttosto tardi e vorrei esserne stato esposto molto prima nel mio viaggio di programmazione.
Alcune librerie di facile apprendimento in Python:
- Python FastAPI: questo ci consente di creare API molto facilmente
- Python Flask: possiamo creare API anche utilizzando Flask e persino semplici applicazioni web
L'ho imparato MOLTO tardi nel mio viaggio in Python e ignoravo qualsiasi @decoratorsintassi che vedevo. Ma è meglio capire cosa sta succedendo nel tuo codice.
def add_exclamation_mark(your_function):
def inner(*args, **kwargs):
return your_function(*args, **kwargs)
return inner
@add_exclamation_mark
def greet(name):
return f'hello {name}'
# @add_exclamation_mark
# def greet(name)
#
# ^ THIS IS THE SAME AS BELOW:
#
# greet = add_exclamation_mark(greet)
print(greet('tim')) # hello tim!
13) Generatori + la parola chiave 'rendimento'
def simple_generator():
yield 'apple'
yield 'orange'
yield 'pear'
for fruit in simple_generator():
print(fruit)
# apple orange pear
Una funzione che contiene la yieldparola chiave diventa una funzione generatore e può avere più output (le cose che vengono prodotte).
14) Metodo concatenamento
In realtà l'ho saputo molto più tardi di quanto avrei dovuto.
s = ' APPLE ORANGE PEAR '
s = s.strip() # s is now 'APPLE ORANGE PEAR'
s = s.lower() # s is now 'apple orange pear'
s = s.split() # s is now ['apple', 'orange', 'pear']
s = ' APPLE ORANGE PEAR '
s = s.strip().lower().split()
# s is now ['apple', 'orange', 'pear']
15) Apprendimento automatico di base: regressione e classificazione
Prima di sapere (a livello base) come funzionava l'apprendimento automatico, pensavo fosse una sorta di magia magica.
Dopo aver appreso come funzionava l'apprendimento automatico (a livello base), ero tipo oh ok, quindi è una specie di statistica automatizzata con l'aiuto di un computer. Non era più magia magica.
L'apprendimento automatico è un campo enorme, ma di solito iniziamo con l'apprendimento supervisionato, più specificamente, classificazione e regressione. Come kit di base, controlla scikit-learn, una libreria Python che esegue tutto il codice di apprendimento automatico per te e ti consente di utilizzare semplicemente le loro funzioni e classi.
16) Strutture dati e algoritmi di base
Dopo aver superato innumerevoli colloqui di programmazione per stage e posizioni a tempo pieno, ho capito quanto sia importante questo passaggio. La maggior parte, se non tutte, delle interviste di programmazione richiedeva che l'intervistato fosse discretamente competente in quest'area.
Sfortunatamente ho rovinato un bel po' di colloqui di programmazione presso grandi aziende solo perché non mi sono esercitato abbastanza, il che probabilmente mi è costato parecchi stage eccellenti.
Se stai intervistando presto o attualmente e pensi di poter saltare l'intervista perché sei bravo, NON FARLO. PRATICA le tue strutture dati e algoritmi. Prendilo da qualcuno che ha commesso lo stesso errore anni fa.
Prima inizi a esercitarti con queste domande di intervista sulla codifica, meglio le ottieni e migliori sono le opportunità che ottieni.
17) Diverse strutture dati e quando usarle
Python ha un paio di strutture dati integrate
# ordered collection of elements
list1 = [1,2,3]
# an immutable list. we can use this as a dict key
tuple1 = (1,2,3)
# O(1) when accessing a value using a key
dict1 = {'apple':4, 'orange':5}
# unordered collection containing only unique elements
# O(1) when checking if element exists inside a set
set1 = {1,2,3}
# an immutable set. we can use this as a dict key
frozenset1 = frozenset({1,2,3})
Per molto tempo ho visto una funzione lambda e sono andato bene, lo ignorerò. Fino a quando non ho effettivamente impiegato del tempo per capirli. E ho scoperto quanto fosse semplice in realtà.
def add(x, y):
return x + y
# this is the same as
add = lambda x,y : x + y
def test():
return 'hello'
# this is the same as
test = lambda : 'hello'
def test2(a,b,c,d):
return (a+b) / (c-d)
# this is the same as
test2 = lambda a,b,c,d : (a+b) / (c-d)
assert score <= 100
# ensuring that score cannot be above 100.
if score > 100:
raise Exception('score cannot be higher than 100')
# ensuring that score cannot be above 100.
class ScoreException(Exception):
def __init__(self):
super().__init__('score cannot be higher than 100')
if score > 100:
raise ScoreException()
20) Multiprocessing in Python
Il modulo integrato multiprocessingin Python ci consente di eseguire più di 1 funzione contemporaneamente (allo stesso tempo).
import multiprocessing
import time
import datetime
def yourfunction(x):
start = datetime.datetime.now()
time.sleep(1)
end = datetime.datetime.now()
return f'x={x} start at {start}, end at {end}'
if __name__ == '__main__':
with multiprocessing.Pool(processes=3) as pool:
data = pool.map(yourfunction, [1, 2, 3, 4, 5, 6, 7])
for row in data:
print(row)
x=1 start at 2023-04-16 13:39:32.035510, end at 2023-04-16 13:39:33.037308
x=2 start at 2023-04-16 13:39:32.035795, end at 2023-04-16 13:39:33.037324
x=3 start at 2023-04-16 13:39:32.037349, end at 2023-04-16 13:39:33.037629
x=4 start at 2023-04-16 13:39:33.037725, end at 2023-04-16 13:39:34.040135
x=5 start at 2023-04-16 13:39:33.037892, end at 2023-04-16 13:39:34.040160
x=6 start at 2023-04-16 13:39:33.037986, end at 2023-04-16 13:39:34.040161
x=7 start at 2023-04-16 13:39:34.040454, end at 2023-04-16 13:39:35.045383
yourfunction(1)yourfunction(2)&yourfunction(3)corre allo stesso tempo.yourfunction(4)yourfunction(5)eyourfunction(6)corri allo stesso tempo anche.yourfunction(7)corre da solo
Se questa storia ha fornito valore e desideri mostrare supporto, potresti:
- Batti le mani 50 volte per questa storia (questo mi aiuta davvero!)
- Prendi in considerazione la possibilità di iscriverti a un abbonamento Medium utilizzando il mio link: costa $ 5 al mese e puoi leggere storie illimitate su Medium.
Ottieni i miei ebook gratuiti: https://zlliu.co/books
Scrivo articoli su Python (a volte altre cose) che il me più giovane avrebbe voluto leggere. Unisciti alla mia mailing list per ricevere una notifica ogni volta che pubblico.
Codifica di livello superiore
Grazie per far parte della nostra comunità! Prima che tu vada:
- Batti le mani per la storia e segui l'autore
- Visualizza altri contenuti nella pubblicazione Level Up Coding
- Corso di colloquio di codifica gratuito ⇒ Visualizza il corso
- Seguici: Twitter | Linkedin | Notiziario

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































