teaching:progappchim:notions_avancees

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
teaching:progappchim:notions_avancees [2014/04/28 16:00] – créée villersdteaching:progappchim:notions_avancees [2023/05/02 10:36] (Version actuelle) – [Générateurs et "yield"] villersd
Ligne 1: Ligne 1:
 ====== Notions avancées ====== ====== Notions avancées ======
 En construction. Les liens sont juste donnés. Une introduction et un exemple devrait être proposé pour chaque rubrique, et le nombre de ces rubriques augmenté. En construction. Les liens sont juste donnés. Une introduction et un exemple devrait être proposé pour chaque rubrique, et le nombre de ces rubriques augmenté.
 +
 +===== Itérateurs =====
 +
 +==== Itertools, zip,... ====
 +  * [[https://medium.com/techtofreedom/7-levels-of-using-the-zip-function-in-python-a4bd22ee8bcd|7 Levels of Using the Zip Function in Python]]
 +  * itertools.cycle() est une méthode utile pour répéter ou parcourir sans fin les éléments d'une liste ou d'une table itérativitertools.accumulate()
 +  * itertools.accumulate prend un itérable et une fonction d'accumulation, puis renvoie un itérateur.
 +
 ===== Générateurs et "yield" ===== ===== Générateurs et "yield" =====
   * [[http://fr.openclassrooms.com/informatique/cours/pratiques-avancees-et-meconnues-en-python/les-generateurs-2]]   * [[http://fr.openclassrooms.com/informatique/cours/pratiques-avancees-et-meconnues-en-python/les-generateurs-2]]
   * [[http://feldboris.alwaysdata.net/blog/python-les-iterateurs-et-les-generateurs-fr.html]]   * [[http://feldboris.alwaysdata.net/blog/python-les-iterateurs-et-les-generateurs-fr.html]]
   * [[https://wiki.python.org/moin/Generators]]   * [[https://wiki.python.org/moin/Generators]]
 +  * [[http://sahandsaba.com/combinatorial-generation-using-coroutines-in-python.html]]
 +  * [[http://code.activestate.com/recipes/580628-pluggable-python-generators/]]
 +  * [[http://www.datadependence.com/2016/08/pythonic-code-video-series-yield-generators/|Processing Large Data Sets With Yield and Generators]]
 +  * [[https://levelup.gitconnected.com/return-vs-yield-in-python-a-short-comic-f714465a0e92|Return VS Yield in Python — A Short Comic]] Liu Zuo Lin, 04/2023, Medium
 +
 +
 +===== Liste en compréhension =====
 +  * [[http://fr.wikipedia.org/wiki/Liste_en_compr%C3%A9hension]]
 +  * [[http://www.pythonforbeginners.com/basics/list-comprehensions-in-python]]
 +  * [[http://fgallaire.flext.net/comprehension-de-liste-en-python-map-filter/]], remplacement de map() et filter()
 +  * [[http://www.python-course.eu/list_comprehension.php]], yc suppression de lambda er reduce()
 +  * [[https://www.datacamp.com/community/tutorials/python-list-comprehension]]
 +  * [[https://gist.github.com/bearfrieze/a746c6f12d8bada03589]]
 +  * [[https://medium.com/code-85/a-beginners-guide-to-python-list-comprehensions-7dbb0039f065|A Beginner’s Guide to Python List Comprehensions]] (Jonathan Hsu, Medium, 23/04/2020)
 +  * [[https://iam-akshay.medium.com/python-one-liner-superb-tricks-c611aad98553|Python one-liner superb tricks]] Akshay Jain, Medium, 16/04/2022
 +  * [[https://theanup.medium.com/10-powerful-python-one-liners-for-daily-use-8733dac0bc2c|15 Powerful Python One-Liners for Daily Use]] Anup Das, Medium, 22/11/2022
 +
 +==== One-line if - then - else (ternary operator) ====
 +<code python>
 +u = 10
 +v = 100
 +reponse = "u plus grand que v" if u > v else "v plus grand ou égal à u"
 +print(reponse)
 +</code>
 +
 +
 +===== map, filter, reduce, lambda, pipe =====
 +  * [[https://towardsdatascience.com/write-clean-python-code-using-pipes-1239a0f3abf5|Write Clean Python Code Using Pipes - A Short and Clean Approach to Processing Iterables]] Khuyen Tran, medium, october 2021
 +  * [[https://towardsdatascience.com/comparing-list-comprehensions-vs-built-in-functions-in-python-which-is-better-1e2c9646fafe|Comparing List Comprehensions vs. Built-In Functions in Python: Which Is Better?
 +An in-depth analysis of syntax, readability, and performance]] Thomas A Dorfer, Medium, 21/03/2023
 +  * ...
 +
 +===== Walrus operator =====
 +FIXME
 +
 +===== Le rôle du caractère underscore en Python =====
 +  * [[https://www.datacamp.com/community/tutorials/role-underscore-python|Role of Underscore(_) in Python Tutorial - In this tutorial, you're going to learn about the uses of underscore(_) in python]] Hafeezul Kareem Shaik, Medium (DataCmap) October 26th, 2018
 +  * [[https://www.geeksforgeeks.org/underscore-_-python/]]
 +
 +===== Transformations et manipulations de chaînes (string) =====
 +  * translate() : transformation sur base de correspondances entre des caractères (y compris des caractères spéciaux (\n, \t, \r,...)
 +    * string.punctuation peut être utilisé pour enlever la ponctuation
 +  * replace() : remplacement d'une sous-chaîne
 +  * split() : découpe en une liste de sous-chaînes. Le caractère utilisé par défaut est l'espacement. Le nombre de découpe peut être précisé. rsplit() permet de commencer par la droite.
 +  * partition() : découpe particulière → myString.partition("search string") renvoie un tuple de trois sous-chaînes : ( texte précédent, première occurence de la sous-chaîne cherchée, texte à la suite)
 +  * strip(), lstrip(), rstrip() : élimine des caractères en début et/ou fin, par défaut les espacements
 +  * zfill(n) : ajoute des zéros devant pour arriver à une longueur donnée
 +  * ' '.join() : joint des sous-chaînes en liste pour créer une chaîne en ajoutant ' ' (dans cet exemple) comme sous-chaîne additionnelle
 +  * upper() : capitalise
 +  * lower()
 +  * title() : capitalise les premières lettres des mots
 +  * swapcase() : inverse capitales et bas de casse
 +  * startswith('fizz'), endswith('buzz'), 'fizz buzz' in test_string : renvoie True ou False
 +
 +===== Manipulations de fichiers =====
 +  * module os
 +    * [[https://towardsdatascience.com/8-must-know-file-system-operations-in-python-7dc185daeccd|8 Must-Know File System Operations In Python - The essential for Python in tasks automation apps]] Christopher Tao, Medium, 08/02/2021
 +    * [[https://www.programiz.com/python-programming/directory|Python Directory and Files Management]] (tutorial)
 +    * official documentation : [[https://docs.python.org/3/library/os.html]]
 +    * [[https://towardsdatascience.com/10-python-file-system-methods-you-should-know-799f90ef13c2|10 Python File System Methods You Should Know - Manipulate Files and Folders With os and shutil]] Jeff Hale, Medium, Feb 15, 2019 (pathlib, OS, shutil)
 +    * [[https://medium.com/better-programming/the-top-10-file-handling-techniques-in-python-cf2330a16e7 : The Top 10 File Handling Techniques in Python - Make working with files easier]] Yong Cui, Aug 5, 2020
 +    * [[https://medium.com/python-in-plain-english/manipulating-file-paths-with-python-72a76952b832]] ??
 +
 +
 +===== Expressions rationnelles (régulières) =====
 +  * <code>import re</code>
 +  * [[http://howchoo.com/g/zdvmogrlngz/python-regexes-findall-search-and-match]]
 +  * [[https://docs.python.org/2/howto/regex.html]]
 +  * [[http://linuxfr.org/news/travailler-avec-des-expressions-rationnelles]]
 +  * [[https://fr.wikipedia.org/wiki/Expression_rationnelle]]
 +  * [[http://www.analyticsvidhya.com/blog/2015/06/regular-expression-python/|Beginners Tutorial for Regular Expressions in Python]]
 +  * [[https://medium.com/@valeria.aynbinder.edu/python-regular-expressions-cheat-sheet-cd0992c36f6f|Python Regular Expressions — cheat sheet - Many code examples + useful tips]] Valeria Aynbinder, Medium, 17/03/2022
 +  * ...
 +===== Décorateurs =====
 +  * [[http://www.python-course.eu/python3_memoization.php]]
 +
 +===== Context managers =====
 +
  
 ===== Programmation orienté objet ===== ===== Programmation orienté objet =====
 +Page dédiée : [[ppoo|Programmation Python Orientée Objet]]
 +
 +  * Exemples simples :
 +    * [[http://nbviewer.ipython.org/url/bender.astro.sunysb.edu/classes/python-science/lectures/python-classes.ipynb]]
 +    * [[http://jeffknupp.com/blog/2014/06/18/improve-your-python-python-classes-and-object-oriented-programming/]]
 +
 +==== Divers ====
 +  * Définir ses propres types : stack, queue, tree + algorithms : [[https://towardsdatascience.com/data-structures-algorithms-in-python-68c8dbb19c90|Data Structures & Algorithms in Python]] by Papa Moryba Kouate, Aug, 2020, Towards Data Science
 +
 +
 +===== Closures =====
 +  * [[http://stackoverflow.com/questions/36636/what-is-a-closure]]
 +  * [[http://programmers.stackexchange.com/questions/40454/what-is-a-closure]]
 +
 +===== Programmation fonctionnelle =====
 +  * [[http://www.pysnap.com/functional-programming-in-python/|Functional Programming in Python]] (FIXME)
 +  * Map, filter, reduce :
 +    * [[https://medium.com/better-programming/how-to-replace-your-python-for-loops-with-map-filter-and-reduce-c1b5fa96f43a|How To Replace Your Python For Loops with Map, Filter, and Reduce - Write more semantic code with functional programming]]
 +
 +===== Débogage, debugging =====
 +  * [[https://towardsdatascience.com/stop-using-print-to-debug-in-python-use-icecream-instead-79e17b963fcc|Stop Using Print to Debug in Python. Use Icecream Instead]]
 +
 +===== Sous le capot (bytecode,...) =====
 +  * [[https://medium.com/swlh/efficiently-checking-for-an-empty-list-in-python-76b76099fbd3|Efficiently Checking for an Empty List in Python]] Frank Scholl, Medium, Nov 22, 2019 → comparaison des bytecodes Python/C générés pour 3 solutions proposées
 +
 +===== Performances, temps d'exécution, ... =====
 +  * [[https://towardsdatascience.com/making-python-programs-blazingly-fast-c1cd79bd1b32|Making Python Programs Blazingly Fast]], 01/01/2020
  
 ===== Tests unitaires ===== ===== Tests unitaires =====
 +
 +===== Python Scripting =====
 +  * [[https://www.datacamp.com/community/tutorials/running-a-python-script|How to Run Python Scripts]]
 +
 +===== Interface utilisateur graphique (GUI) =====
 +  * [[https://medium.com/analytics-vidhya/how-to-build-your-first-desktop-application-in-python-7568c7d74311|How to build your first Desktop Application in Python]] Ampofo Amoh - Gyebi, Medium, 12/12/2020
 +
 +===== emails =====
 +smtplib et poplib :
 +  * [[https://twitter.com/driscollis/status/1508506999268552713]]
 +  * [[https://twitter.com/driscollis/status/1508570173606928386]]
 +
 +<code python>
 +import smtplib 
 +
 +HOST = "smtp.mydomain.com"
 +SUBJECT = "Test email from Python"
 +TO = "mike@mydomain.com"
 +FROM = "python@mydomain.com"
 +text = "blah blah blah"
 +BODY = "\r\n".join((
 +    f"From: {FROM}",
 +    f"To: {TO}",
 +    f"Subject: {SUBJECT}",
 +    "",
 +    text) 
 +)
 +server = smtplib.SMTP(HOST)
 +server.sendmail(FROM, [TO], BODY)
 +server.quit() 
 +</code>
 +
 +<code python>
 +import poplib
 +
 +mailbox = poplib.POP3('pop3.host.com')
 +mailbox.user("USERNAME")
 +mailbox.pass_("PASSWORD")
 +numMessages = len(mailbox.list()[1])
 +for i in range(numMessages):
 +    for j in mailbox.retr(i+1)[1]:
 +    print(j) 
 +</code>
 +
 +===== Création et gestion de packages =====
 +  * [[https://medium.com/jacklee26/how-to-create-the-first-python-package-de6464799bc3|How to create the first python package]] ChenChih, Medium, Dec 18, 2021
 +
 +===== Références =====
 +  * [[https://dacus-augustus.medium.com/top-12-most-important-python-concepts-24f59945a409|Top 12 most important Python concepts]] Dacus Augustus, Medium, Feb 23 2021
 +  * [[https://medium.com/pythonland/10-advanced-python-tricks-to-write-faster-cleaner-code-f9ee76fa878f|10 Advanced Python Tricks To Write Faster, Cleaner Code - From slotted classes to replacing lists with tuples]] Erik van Baaren, Medium, 30/06/2021 
 +
  
  • teaching/progappchim/notions_avancees.1398693648.txt.gz
  • Dernière modification : 2014/04/28 16:00
  • de villersd