Outils pour utilisateurs

Outils du site


tech:notes_python_syntaxe

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tech:notes_python_syntaxe [2025/03/24 15:06] – créée - modification externe 127.0.0.1tech:notes_python_syntaxe [2026/05/30 21:05] (Version actuelle) Jean-Baptiste
Ligne 1: Ligne 1:
 +<!DOCTYPE markdown>
 +{{tag>Brouillon Python}}
 +
 +# Notes Python syntaxe
 +
 +
 +## Liste de tous les mots clefs Python
 +
 +
 +~~~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']
 +~~~
 +
 +~~~python
 +keyword.softkwlist
 +~~~
 +
 +~~~
 +['_', 'case', 'match']
 +~~~
 +
 +
 +
 +## Fonctions
 +
 +Annotations de fonctions
 +~~~python
 +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
 +
 +
 +~~~python
 +    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
 +
 +~~~
 +
 +~~~python
 +i: int = 10
 +s: str = 'string'
 +~~~
 +
 +
 +
 +
 +## Lambda
 +
 +~~~python
 +# Simple quote a string
 +q = lambda s: f"'{s}'"
 +
 +# Double quote a string
 +qq = lambda s: f'"{s}"'
 +~~~
 +
 +
 +## Cast
 +
 +String to bool
 +~~~python
 +tls_verify = environ.get("VERIFY_SSL")
 +
 +# String to bool
 +tls_verify = tls_verify.lower in ("true",)
 +~~~
 +
 +
 +ou encore 
 +~~~python
 +def str2bool(v):
 +  return v.lower() in ("yes", "true", "t", "1")
 +~~~
 +
 +
 +
 +## Décorateur
 +
 +Exemple
 +~~~python
 +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
 +~~~python
 +# 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:
 +
 +~~~python
 +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 :
 +
 +~~~python
 +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 :
 +~~~python
 +def gen_number():
 +  yield 1
 +  yield 2
 +  yield 3
 +~~~
 +
 +We can print the generator values using a loop.
 +~~~python
 +for num in gen_number():
 +  print(num)
 +~~~
 +
 +~~~
 +1
 +2
 +3
 +~~~
 +
 +Let’s consider another function(gen_cool_numbers) using the gen_number generator function.
 +~~~python
 +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:
 +~~~python
 +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
 +~~~python
 +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/
 +
 +
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki