On dit que Python est livré avec une batterie, donc il a beaucoup de fonctions intégrées et de bibliothèques standard.D'un autre côté, je pense qu'il y a beaucoup de fonctions qui sont trop riches pour voir le jour.
La motivation originale pour écrire ceci est la fonction d'impression, qui devrait être évaluée davantage.
Lisons une fois ce qui suit: Tutoriel Python aussi bien que Mini-visite de la bibliothèque standard Mini-visite de la bibliothèque standard, partie 2
print Cet enfant est très célèbre, mais les arguments peuvent être des shaders.
En Python2, l'instruction print est passée de Python3 à la fonction print.Je me demandais ce que cela signifiait à part casser la rétrocompatibilité, mais si vous regardez de plus près, cela a évolué pour devenir une fonction très pratique. T:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
- sep -
Vous pouvez définir un délimiteur, similaire à join
:
print('a', 'b', 'c', 'd', sep='_')
# '_'.join(['a', 'b', 'c', 'd'])
>>> a_b_c_d
- end - Vous pouvez spécifier ce qu'il faut mettre à la fin de la sortie. La valeur par défaut est bien sûr «\ n»:
print('Hello ', end=''); print('World')
>>> Hello World
- file -
C'est le point le plus en mouvement. ** La sortie de fichier est possible avec print
**:
f = open('output.txt', 'w')
print('Hello World', file=f)
Quand vous google, il est souvent présenté comment utiliser write ()
ou writeline ()
, mais à partir de maintenant vous pouvez utiliser print
!
- flush -
Vous pouvez vider la mémoire tampon. Par exemple, l'écriture d'un fichier n'est pas lorsque vous exécutez print (..., file = f)
, mais lorsque la mémoire tampon est pleine. Probablement pour les performances, Si vous voulez voir le fichier écrit pendant l'exécution, vous voulez qu'il soit sorti immédiatement. Dans ce cas, définissez flush
sur True.
** - Technique d'appariement - ** Par exemple, supposons que vous souhaitiez imprimer le nombre de boucles sur la console lorsque vous faites quelque chose:
for i in range(100):
print('rep = {0}'.format{i})
#Quelque chose comme ce qui suit...
>>> rep = 0
rep = 1
rep = 2
rep = 3
...
Mais c'est un gaspillage d'espace sur la console avec la sortie alignée verticalement. ** Écrasons la sortie: **
for i in range(100):
print('rep = {0}'.format{i}, '\r', end='', flush=True)
#Quelque chose comme ce qui suit...
\ r
est une séquence d'échappement qui renvoie la position du curseur au début de la ligne. Cela écrase la sortie et tient sur une seule ligne. C'est pratique.
pprint
** pretty-print, abrégé pprint
**. Comme son nom l'indique, cela rend la sortie mignonne. Probablement la définition de" cute "ici est" une sortie qui ne correspond pas à la largeur de la console est divisée en plusieurs lignes. Cela semble être "l'état de sortie":
from pprint import pprint
pprint('There should be one-- and preferably only one --obvious way to do it.'.split())
>>> ['There',
'should',
'be',
'one--',
'and',
'preferably',
'only',
'one',
'--obvious',
'way',
'to',
'do',
'it.']
Je ne sais pas si c'est mignon, mais ça peut être utile, ça ne semble pas aussi polyvalent que la fonction print
.
shelve
Il est courant de sauvegarder le résultat du calcul numérique dans un fichier txt, csv, etc., mais si vous essayez de le relire avec Python, ce sera un type de chaîne, vous devez donc suivre la procédure de conversion en int / float ... Non. ** shelve
peut enregistrer et développer des objets en Python tels qu'ils sont: **
import shelve
zen_string = 'There should be one-- and preferably only one --obvious way to do it.'
zen_list = zen_string.split()
#Créer un nouvel objet Helve
obj = shelve.open('./test')
#Remplacez comme type dict
obj['string'], obj['list'] = zen_string, zen_list
#sauvegarder(close)
obj.close()
#Déploiement
obj_restore = shelve.open('./test')
print(list(obj_restore.keys()))
>>> ['string', 'list']
print(obj_restore['string'])
>>> 'There should be one-- and preferably only one --obvious way to do it.'
Cela devrait être utile si vous vivez en Python! Mais est-il polyvalent car il n'est pas accessible à partir d'autres langages et outils?
collections.deque
list est un conteneur pratique, mais ajouter / supprimer des éléments autres que la fin est très inefficace. collections.deque
peut exécuter append et pop aux deux extrémités à grande vitesse:
import numpy as np
from collections import deque
a = np.linspace(0, 1, 100000)
b = deque(a)
# IPython
%timeit -n5 a.pop(0)
>>> 5 loops, best of 3: 35.6 µs per loop
%timeit -n5 b.popleft()
>>> 5 loops, best of 3: 147 ns per loop
** 200 fois ou plus ** </ font> est rapide. Si vous utilisez Python avec Procon, je pense que c'est essentiel.
La commodité d'IPython a été évoquée dans de nombreux endroits: Comment utiliser IPython
Vous pouvez vous référer à l'aide en ajoutant ?
Après la commande, vous pouvez utiliser la commande shell telle quelle, et c'est pratique comme la commande magique.
IPython.embed Arrêtez-vous au milieu de l'exécution du code et entrez IPython.
from IPython import embed
tmp = []
for i in range(100):
tmp.append(i)
if i == 50:
# i ==Entrez avec IPython à 50 ans
embed()
# IPython
In [1]: tmp
Out[1]:
[0,
1,
2,
...
50]
# exit()Ou Ctrl-Lorsque je quitte IPython avec D ou quelque chose du genre, l'exécution reprend
Par exemple, si une erreur étrange se produit, vous pouvez vérifier le contenu de l'objet en insérant ʻembed () `juste avant cela. Pour ceux qui veulent sortir du débogage d'impression mais le débogueur a un seuil élevé ... J'adorerais.
J'ai énuméré certaines des choses que j'utilise beaucoup et qui ne sont pas très connues. S'il y a quelque chose de bon, je l'ajouterai. S'il y a quelque chose de bon, faites-le moi savoir.
Recommended Posts