Both sides previous revisionPrevious revisionNext revision | Previous revision |
other:python:misc_by_jyp [2024/08/27 11:46] – [Playing with strings] Started a "String formatting sub-section" jypeter | other:python:misc_by_jyp [2024/11/04 15:01] (current) – [Extra tutorials] Added links to ruff and flake8 jypeter |
---|
Only **when you have already read all the content of this page several times**, and you are looking for new ideas | Only **when you have already read all the content of this page several times**, and you are looking for new ideas |
| |
| * [[https://medium.com/pythons-gurus/clean-code-in-python-good-vs-bad-practices-examples-2df344bddacc|Clean Code in Python: Good vs. Bad Practices Examples]] |
| * [[https://peps.python.org/pep-0008/|PEP 8 – Style Guide for Python Code]] |
| * [[https://realpython.com/python-pep8/|How to Write Beautiful Python Code With PEP 8]] |
| * [[https://www.datacamp.com/tutorial/pep8-tutorial-python-code|PEP-8 Tutorial: Code Standards in Python]] |
| * Some checkers/linters: [[https://docs.astral.sh/ruff/|ruff]], [[https://flake8.pycqa.org/en/stable/|flake8]] |
* [[https://medium.com/@yaduvanshineelam09/ultimate-python-cheat-sheet-practical-python-for-everyday-tasks-8a33abc0892f|Ultimate Python Cheat Sheet: Practical Python For Everyday Tasks]] | * [[https://medium.com/@yaduvanshineelam09/ultimate-python-cheat-sheet-practical-python-for-everyday-tasks-8a33abc0892f|Ultimate Python Cheat Sheet: Practical Python For Everyday Tasks]] |
* [[https://medium.com/pythoneers/16-hacks-that-will-take-your-python-skills-to-the-next-level-12e7a9b97421|16 Hacks That Will Take Your Python Skills to the Next Level]] | * [[https://medium.com/pythoneers/16-hacks-that-will-take-your-python-skills-to-the-next-level-12e7a9b97421|16 Hacks That Will Take Your Python Skills to the Next Level]] |
| * [[https://levelup.gitconnected.com/modular-coding-in-python-finally-solve-your-import-errors-af2fd172fcf7|Modular Coding in Python: Finally Solve your Import Errors]] (understanding and fixing ModuleNotFoundError and ImportError) |
| * [[https://medium.com/@moraneus/understanding-multithreading-and-multiprocessing-in-python-1ed39bb078d5|Understanding Multithreading and Multiprocessing in Python]] |
===== Reading/setting environments variables ===== | ===== Reading/setting environments variables ===== |
| |
| |
| |
| ===== Using log files (aka logging) ===== |
| |
| It is always possible to display information messages using the ''print()'' command, but it is more efficient to use //logging// tools when you want to **display correctly a lot of information about a script progress |
| ** |
| * [[https://loguru.readthedocs.io/|Loguru]] is a library which aims to bring enjoyable logging in Python |
| * See also [[https://betterstack.com/community/guides/logging/loguru/|A Complete Guide to Logging in Python with Loguru]] |
| * More on [[https://betterstack.com/community/guides/logging/#python|logging with python]] |
| * The default (but not easy to use) Python ''[[https://docs.python.org/3/library/logging.html|logging]]'' module |
===== Stopping a script ===== | ===== Stopping a script ===== |
| |
==== String formatting ==== | ==== String formatting ==== |
| |
Knowing how to display/print a string correctly is always useful for information and debugging purpose, and there are lots of different ways to display strings | * Knowing how to display/print a string correctly is always useful for information and debugging purpose |
| * There are lots of different ways to display strings |
| |
| === String formatting examples === |
| |
| You will find below some examples of //quick printing//, as well as using //old style formatting//, //formatted string literals (f-strings)// and the //String ''format()'' Method//. More details in the next section |
| |
<code python> | <code python> |
| >>> # Basic (but quick and efficient) printing |
| |
>>> year = 1984 | >>> year = 1984 |
>>> print(year) | >>> print(year) |
>>> print(f'[ {year:010} is a famous book ]') | >>> print(f'[ {year:010} is a famous book ]') |
[ 0000001984 is a famous book ] | [ 0000001984 is a famous book ] |
| >>> print(f'[ {year:10.2f} is a famous book (yes, {year}!) ]') |
| [ 1984.00 is a famous book (yes, 1984!) ] |
| |
>>> # The String format() Method | >>> # The String format() Method |
| |
| >>> print('[ {} is a famous book ]'.format(year)) |
| [ 1984 is a famous book ] |
| >>> print('[ {:10} is a famous book ]'.format(year)) |
| [ 1984 is a famous book ] |
| >>> print('[ {:<10} is a famous book ]'.format(year)) |
| [ 1984 is a famous book ] |
>>> print('[ {:010} is a famous book ]'.format(year)) | >>> print('[ {:010} is a famous book ]'.format(year)) |
[ 0000001984 is a famous book ] | [ 0000001984 is a famous book ] |
>>> print('[ {:010d} is a famous book ]'.format(year)) | >>> print('[ {:10.2f} is a famous book (yes, {}!) ]'.format(year, year)) |
[ 0000001984 is a famous book ] | [ 1984.00 is a famous book (yes, 1984!) ] |
>>> print('[ {:10d} is a famous book ]'.format(year)) | >>> print('[ {title:10.2f} is a famous book (yes, {title}!) ]'.format(title=year)) |
[ 1984 is a famous book ] | [ 1984.00 is a famous book (yes, 1984!) ] |
>>> print('[ {:10f} is a famous book ]'.format(year)) | >>> print('[ {title:10.2e} is a famous book ]'.format(title=year)) |
[ 1984.000000 is a famous book ] | [ 1.98e+03 is a famous book ]</code> |
>>> print('[ {:10.2f} is a famous book ]'.format(year)) | |
[ 1984.00 is a famous book ]</code> | === String formatting references === |
| |
| * [[https://docs.python.org/3/tutorial/inputoutput.html#formatted-string-literals|Formatted String Literals]] (//f-strings//) |
| * Available in Python >= 3.6 |
| * [[https://docs.python.org/3/reference/lexical_analysis.html#f-strings|More documentation]] |
| * [[https://docs.python.org/3/library/string.html#formatspec|Format Specification Mini-Language]] |
| * See also the [[https://pyformat.info/|PyFormat site]] |
| |
| * [[https://docs.python.org/3/tutorial/inputoutput.html#the-string-format-method|The String format() Method]] |
| * [[https://docs.python.org/3/library/string.html#formatspec|Format Specification Mini-Language]] |
| * See also the [[https://pyformat.info/|PyFormat site]] |
| |
| * [[https://pyformat.info/|PyFormat site]]: string formatting using the //old style// and the //String ''format()'' method// |
| * <wrap hi>Hint</wrap>: this can also be used as an **easy documentation for //f-strings// format**! |
| |
| * [[https://docs.python.org/3/tutorial/inputoutput.html#the-string-format-method|Old string formatting]] |
==== Splitting (complex) strings ==== | ==== Splitting (complex) strings ==== |
| |