Notes Python syntaxe

Liste de tous les mots clefs Python

#help("keywords") import keyword keyword.kwlist

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break',
'class', 'continue', 'def', 'del', 'elif', 'else',
'except', 'finally', 'for', 'from', 'global', 'if',
'import', 'in', 'is', 'lambda', 'nonlocal', 'not',
'or', 'pass', 'raise', 'return', 'try', 'while',
'with', 'yield']

keyword.softkwlist

['_', 'case', 'match']

Fonctions

Annotations de fonctions

def func(a: int, b: int, c: int) -> int: return a + b + c

Liste des fonctions natives

https://docs.python.org/fr/3/library/functions.html

Syntaxe

kw = dict( changed=changed, query=cursor.query, statusmessage=statusmessage, query_result=query_result, rowcount=rowcount if rowcount >= 0 else 0, )

In [7]: rowcount=-1
In [8]: print(rowcount) if rowcount >= 0 else 0
Out[8]: 0

i: int = 10 s: str = 'string'

Lambda

# Simple quote a string q = lambda s: f"'{s}'" # Double quote a string qq = lambda s: f'"{s}"'

Cast

String to bool

tls_verify = environ.get("VERIFY_SSL") # String to bool tls_verify = tls_verify.lower in ("true",)

ou encore

def str2bool(v): return v.lower() in ("yes", "true", "t", "1")

Décorateur

Exemple

def decorteur_print(_): def print_tmp(*args, **kv): print("Function print called") print(*args, **kv) return print_tmp @decorteur_print def print2(*args, **kv): print(*args, **kv) print2("Foo", "Bar", sep=";")

Surcharger une fonction

# On copie notre fonction print_bak = print def decorteur_print(_): def print_tmp(*args, **kv): print_bak("Function print called") print_bak(*args, **kv) return print_tmp @decorteur_print def print(*args, **kv): print_bak(*args, **kv) print("Foo", "Bar", sep=";")

Générateurs

Voir :

https://zestedesavoir.com/articles/152/la-puissance-cachee-des-coroutines/

Yield vs yield from

The yield statement

The generator is a function that returns an iterator. Normally a generator function has a yield statement. To define a generator function we need to use a yield statement as shown below:

def generate_number(): for x in range(10): yield x

The generate_number has a yield statement, so it is a generator function. Let’s print the values from the generator :

gen = generate_number() for number in gen: print(number)

0
1
2
3
4
5
6
7
8
9

The “yield from” statement

The “yield from” allows us to yield from another generator function or iterables. Let’s understand with some examples.

Consider the following generator function :

def gen_number(): yield 1 yield 2 yield 3

We can print the generator values using a loop.

for num in gen_number(): print(num)

1
2
3

Let’s consider another function(gen_cool_numbers) using the gen_number generator function.

def gen_cool_numbers(): yield 1000 for num in gen_number(): yield num yield 2000 for x in gen_cool_numbers(): print(x)

1000
1
2
3
2000

We can update the gen_cool_numbers function by replacing the for loop with yield from as shown below:

def gen_cool_numbers(): yield 1000 yield from gen_number() yield 2000 for x in gen_cool_numbers(): print(x)

1000
1
2
3
2000

Yield from can also be used with iterable(list, tuple, string etc

def gen_cool_numbers(): yield 1000 yield from [50,60,80] yield 2000 for x in gen_cool_numbers(): print(x)

1000
50
60
80
2000

Source : https://nolowiz.com/difference-between-yield-and-yield-from-in-python/