(Python3) Non oO (Utilisez-vous la bibliothèque standard?): 5 shaders

Fonctions d'ombrage

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.

Partons en voyage!

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.

Bonus: IPython

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.

à la fin

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

(Python3) Non oO (Utilisez-vous la bibliothèque standard?): 5 shaders
À propos de l'environnement de développement que vous utilisez
Le type Enum, qui entre dans la bibliothèque standard de Python 3.4, est toujours utile
Agréger les résultats des tests à l'aide de la bibliothèque Python QualityForward
Vérifiez le type de variable que vous utilisez
Qu'utilisez-vous lorsque vous testez avec Python?
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
Utilisation de l'application LibreOffice en Python (1) Où sont les macros?
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Comment déboguer une bibliothèque Python standard dans Visual Studio
Si vous pensez que la personne que vous mettez avec pip ne fonctionne pas → Utilisez-vous python3 par hasard?
Lorsque vous souhaitez utiliser plusieurs versions de la même bibliothèque Python (environnement virtuel utilisant venv)
pathlib L'utilisez-vous tous?
Tokenize à l'aide de la bibliothèque Hugging Face
[Python] Ajuster la norme de la carte des couleurs
Extraire le fichier targz en utilisant python
Essayez d'utiliser le module Python Cmd
Vérifiez le nom du fichier si l'importation Python vous dit que vous ne pouvez pas
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser l'API Kraken avec Python
Derrière le flyer: utiliser Docker avec Python
Travailler avec OpenStack à l'aide du SDK Python
Résumons le standard de codage Python PEP8 (1)
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Redémarrez le routeur en utilisant Python, Selenium, PhantomJS
Bibliothèque standard Python: seconde moitié (mémo d'apprentissage Python ⑨)
Depuis Python 3.4, pip devient le programme d'installation standard! ??
python setup.py tester le code en utilisant le multiprocessus
Bibliothèque standard Python: première moitié (mémo d'apprentissage Python ⑧)
Python open et io.open sont les mêmes
Obtenez la taille d'un fichier image sur le Web (Python3, aucune bibliothèque supplémentaire requise)
Comment obtenir le nom du bloc-notes que vous utilisez actuellement dans Google Colab
J'ai essayé d'utiliser la bibliothèque Python "pykakasi" qui peut convertir des kanji en romaji.
N'hésitez pas à transformer Python en utilisant la bibliothèque en une fonction AWS Lambda
Il y a des moments où vous pouvez raccourcir l'instruction if en utilisant max · min