Basic Python
Last updated
Last updated
Impara e pratica l'hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
list(xrange()) == range() --> In python3 range è l'equivalente di xrange in python2 (non è una lista ma un generatore) La differenza tra una Tuple e una List è che la posizione di un valore in una tupla gli conferisce un significato, mentre le liste sono solo valori ordinati. Le tuple hanno strutture, ma le liste hanno un ordine.
Per elevare un numero si usa: 3**2 (non 3^2) Se fai 2/3 restituisce 1 perché stai dividendo due interi (integers). Se vuoi decimali dovresti dividere float (2.0/3.0). i >= j i <= j i == j i != j a and b a or b not a float(a) int(a) str(d) ord("A") = 65 chr(65) = 'A' hex(100) = '0x64' hex(100)[2:] = '64' isinstance(1, int) = True "a b".split(" ") = ['a', 'b'] " ".join(['a', 'b']) = "a b" "abcdef".startswith("ab") = True "abcdef".contains("abc") = True "abc\n".strip() = "abc" "apbc".replace("p","") = "abc" dir(str) = Lista di tutti i metodi disponibili help(str) = Definizione della classe str "a".upper() = "A" "A".lower() = "a" "abc".capitalize() = "Abc" sum([1,2,3]) = 6 sorted([1,43,5,3,21,4])
Unisci caratteri 3 * ’a’ = ‘aaa’ ‘a’ + ‘b’ = ‘ab’ ‘a’ + str(3) = ‘a3’ [1,2,3]+[4,5]=[1,2,3,4,5]
Parti di una lista ‘abc’[0] = ‘a’ 'abc’[-1] = ‘c’ 'abc’[1:3] = ‘bc’ da [1] a [2] "qwertyuiop"[:-1] = 'qwertyuio'
Commenti # Commento su una riga """ Commento su più righe Un altro """
Loop
t1 = (1, '2', 'tre') t2 = (5, 6) t3 = t1 + t2 = (1, '2', 'tre', 5, 6) (4,) = Singelton d = () tupla vuota d += (4,) --> Aggiunta in una tupla NON POSSIBILE! --> t1[1] == 'Nuovo valore' list(t2) = [5, 6] --> Da tupla a lista
d = [] vuoto a = [1, 2, 3] b = [4, 5] a + b = [1, 2, 3, 4, 5] b.append(6) = [4, 5, 6] tuple(a) = (1, 2, 3) --> Da lista a tupla
d = {} vuoto monthNumbers={1:'Gen', 2: 'feb','feb':2}—> monthNumbers ->{1:'Gen', 2: 'feb','feb':2} monthNumbers[1] = 'Gen' monthNumbers['feb'] = 2 list(monthNumbers) = [1, 2, 'feb'] monthNumbers.values() = ['Gen', 'feb', 2] keys = [k for k in monthNumbers] a={'9':9} monthNumbers.update(a) = {'9':9, 1:'Gen', 2: 'feb','feb':2} mN = monthNumbers.copy() #Copia indipendente monthNumbers.get('chiave',0) #Controlla se la chiave esiste, Restituisce il valore di monthNumbers["chiave"] o 0 se non esiste
Negli insiemi non ci sono ripetizioni myset = set(['a', 'b']) = {'a', 'b'} myset.add('c') = {'a', 'b', 'c'} myset.add('a') = {'a', 'b', 'c'} #Nessuna ripetizione myset.update([1, 2, 3]) = set(['a', 1, 2, 'b', 'c', 3]) myset.discard(10) #Se presente, rimuovilo, altrimenti niente myset.remove(10) #Se presente, rimuovilo, altrimenti genera un'eccezione myset2 = set([1, 2, 3, 4]) myset.union(myset2) #Valori in myset O myset2 myset.intersection(myset2) #Valori in myset E myset2 myset.difference(myset2) #Valori in myset ma non in myset2 myset.symmetric_difference(myset2) #Valori che non sono in myset E myset2 (non in entrambi) myset.pop() #Ottieni il primo elemento dell'insieme e rimuovilo myset.intersection_update(myset2) #myset = Elementi in entrambi myset e myset2 myset.difference_update(myset2) #myset = Elementi in myset ma non in myset2 myset.symmetric_difference_update(myset2) #myset = Elementi che non sono in entrambi
Il metodo in __It__ sarà quello usato da sort per confrontare se un oggetto di questa classe è più grande di un altro
Map è simile a: [f(x) for x in iterable] --> map(tutple,[a,b]) = [(1,2,3),(4,5)] m = map(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) --> [False, False, True, False, False, True, False, False, True]
zip si interrompe quando il più corto tra foo o bar si interrompe:
Lambda viene utilizzato per definire una funzione (lambda x,y: x+y)(5,3) = 8 --> Utilizzare lambda come semplice funzione sorted(range(-5,6), key=lambda x: x** 2) = [0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5] --> Utilizzare lambda per ordinare una lista m = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) = [3, 6, 9] --> Utilizzare lambda per filtrare reduce (lambda x,y: x*y, [1,2,3,4]) = 24
Se la condizione è falsa, la stringa verrà stampata a schermo
Un generatore, invece di restituire qualcosa, "cede" qualcosa. Quando accedi ad esso, "restituirà" il primo valore generato, quindi potrai accedere nuovamente e restituirà il valore successivo generato. Quindi, tutti i valori non vengono generati contemporaneamente e si potrebbe risparmiare molta memoria utilizzando questo invece di una lista con tutti i valori.
Se esegui il codice, vedrai qualcosa di simile al seguente:
Impara e pratica l'hacking su AWS: HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)