Skip to content

Python

Setuptools

Deux methodes pour utiliser setuptools:

  • setup.py classique (documentation)
  • setup.py avec méthode setup() vide et un setup.cfg contenant toutes les confs (documentation)

!!! warning: Utiliser from setuptools import setup et plus from distutils import setup dans le setup.py !

Pip

Répertoire d'install des packages (ces flags sont bien sûr mutuellement exclusifs)

commande install dir
pip install --user ~/.local/lib/pythonx.x/site-packages
pip install -t ./toto ./toto
pip install /usr/local/lib/pythonx.x/dist-packages

Voir les répertoires d'install des pacakges:

  • pip show redis
  • pip list -v:

utf-8

https://blog.emacsos.com/unicode-in-python.html

les string unicode ont un type unicode

0) pour éviter de mettre u'blabla' devant chaque string pour avoir des unicode string en python 2.7

1
from __future__ import unicode_literals

1) pour traiter l'unicode en interne, il faut déclarer l'encoding dans le fichier .py

1
# coding=utf-8

ne pas oublier que quand un string unicode est mis dans un container (ex: une liste), python le représentera dans le stdout en hexa.

2) pour ecrire dans un fichier, il faut encoder en utf-8 afin de récupérer un type str

1
2
with open("urls.txt", "w") as file:
    file.write("日光灯".encode('utf-8'))

Passage par référence

1
2
3
4
5
6
7
def something(array):
    array.append("two")
    array = ["three","four"]

array = ["one"]
something(array)
print array

Il sera affiché ["one", "two"]. L'assignation de variable est locale

1
2
3
4
5
6
matrix = []
row = [0, 0]
for i in range(2):
    matrix.append(row)
matrix[1][1] = 1
print matrix

Il sera affiché: [[0,1], [0,1]] car on modifie le meme objet passé par reference

Inspect.getmembers() vs dir()

dir(Class) donne la liste des fonctions inspect.getmembers(Class) donne la liste des fonctions avec leurs arguments

python 2 vs python 3

fstrings

Easiest method ever for string rendering

1
2
myvar = 1234
f'myvar is {myvar}'

on peut mettre des expressions dans le string

1
2
myvar = 1234
f'myvar is {myvar+200}'

Autres

python 3.7 dataclass