Outils pour utilisateurs

Outils du site


tech:notes_python_syntaxe

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

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

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/

tech/notes_python_syntaxe.txt · Dernière modification : de Jean-Baptiste

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki