User Tools

Site Tools


other:python:misc_by_jyp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
other:python:misc_by_jyp [2023/12/08 15:51]
jypeter [Efficient looping with numpy, map and itertools] Added list comprehension
other:python:misc_by_jyp [2024/09/25 13:37] (current)
jypeter [Extra tutorials] Multithreading and Multiprocessing tuto
Line 5: Line 5:
 </​WRAP>​ </​WRAP>​
  
 +===== Extra tutorials =====
  
 +Only **when you have already read all the content of this page several times**, and you are looking for new ideas
 +
 +  * [[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://​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 =====
  
Line 26: Line 33:
  
  
 +===== 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 =====
  
Line 41: Line 56:
 ===== Playing with strings ===== ===== Playing with strings =====
  
 +==== String formatting ====
 +
 +  * 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>
 +>>>​ # Basic (but quick and efficient) printing
 +
 +>>>​ year = 1984
 +>>>​ print(year)
 +1984
 +>>>​ print('​[',​ year, 'is a famous book ]')
 +[ 1984 is a famous book ]
 +
 +>>>​ # Old style formatting
 +
 +>>>​ print('​[ %i is a famous book ]' % (year,))
 +[ 1984 is a famous book ]
 +>>>​ print('​[ %10i is a famous book ]' % (year,))
 +[       1984 is a famous book ]
 +>>>​ print('​[ %-10i is a famous book ]' % (year,))
 +[ 1984       is a famous book ]
 +>>>​ print('​[ %010i is a famous book ]' % (year,))
 +[ 0000001984 is a famous book ]
 +
 +>>>​ # Formatted string literals (f-strings)
 +
 +>>>​ print(f'​[ {year} is a famous book ]'​) ​
 +[ 1984 is a famous book ]
 +>>>​ print(f'​[ {year=} is a famous book ]')
 +[ year=1984 is a famous book ]
 +>>>​ print(f'​[ {year:10} is a famous book ]')
 +[       1984 is a famous book ]
 +>>>​ print(f'​[ {year:<​10} is a famous book ]')
 +[ 1984       is a famous book ]
 +>>>​ print(f'​[ {year:010} 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
 +
 +>>>​ 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))
 +[ 0000001984 is a famous book ]
 +>>>​ print('​[ {:10.2f} is a famous book  (yes, {}!) ]'​.format(year,​ year))
 +[    1984.00 is a famous book  (yes, 1984!) ]
 +>>>​ print('​[ {title:​10.2f} is a famous book  (yes, {title}!) ]'​.format(title=year))
 +[    1984.00 is a famous book  (yes, 1984!) ]
 +>>>​ print('​[ {title:​10.2e} is a famous book ]'​.format(title=year))
 +[   ​1.98e+03 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 ====
  
Line 544: Line 635:
 A few notes for a future section or page about about //data representation//​ (bits and bytes) on disk and in memory, vs //data format// A few notes for a future section or page about about //data representation//​ (bits and bytes) on disk and in memory, vs //data format//
  
-FIXME Add parts (pages 28 to 37) of this [[https://wiki.lsce.ipsl.fr/​pmip3/doku.php/other:​python:​jyp_steps#​part_2|old tutorial]] to this section+FIXME Add parts (pages 28 to 37) of this [[http://www.lsce.ipsl.fr/​Phocea/file.php?​class=page&​file=5/pythonCDAT_jyp_2sur2_070306.pdf|old tutorial]] to this section
  
 ==== Base notions ==== ==== Base notions ====
other/python/misc_by_jyp.1702050711.txt.gz · Last modified: 2023/12/08 15:51 by jypeter