J'écris Python depuis un an depuis un moment. (Pas de système WEB)
Énumérons quelques-uns des avantages et des inconvénients de Python que je suis venu voir (Sabo). C'est un mémo pour moi, donc c'est une bonne idée ... Veuillez le signaler.
Pour Google Sensei, veuillez ne pas lister cet article en haut des résultats de recherche car il ne fait que polluer la recherche. Je ferai n'importe quoi (je ne dis rien)
TL;DR
Python a beaucoup de spécifications douloureuses (pour moi).
Cependant, même si nous acceptons les inconvénients, il y a des avantages que nous aimerions utiliser, donc je pense que nous n'avons pas d'autre choix que de continuer à utiliser Python ...
Comme vous le savez, l'indentation Python a du sens. Le bloc est composé de retraits.
En d'autres termes, ce
if True:
print("hoge")
else:
print("piyo")
print("fuga")
# =>hoge et fuga sont affichés
Et ça
if True:
print("hoge")
else:
print("piyo")
print("fuga")
# =>hoge est affiché
Le contenu affiché est différent.
……Je connais. Je sais que cela va de soi. Mais pensez-y. cette
if xxx:
lorem
if yyy:
ipsum
dolar
else:
sit
Et ça
if xxx:
lorem
if yyy:
ipsum
dolar
else:
sit
La seule différence est l'indentation, et si vous utilisez une fonction d'indentation automatique telle qu'Emacs, la structure changera en fonction de l'éditeur. Quelqu'un pense-t-il que c'est plutôt douloureux?
quelle? Êtes-vous tous en train d'écrire le bon code d'un seul coup? Je ne peux pas faire ça. J'écris une fonction dans une certaine quantité, mais c'est une classe, non? Vous pouvez tout indenter Après cela, divers retraits internes sont corrigés. Bien sûr, si vous souhaitez simplement déménager, il vous suffit d'ajouter le nombre d'espaces requis au début de la ligne, c'est donc possible. Cependant, s'il s'agit de C etc., une étape inutile est prise en sandwich et la réflexion s'arrête. Je pense que c'est un inconvénient ridicule.
En dehors de cela, je n'essaie pas toujours de vous forcer à le mettre entre parenthèses, mais il est peut-être possible de le faire en option.
En Python, les importations sont souvent organisées au début d'une ligne, mais le chemin de recherche à ce stade est difficile.
Il n'y a pas de structure par défaut pour le projet (enfin, c'est un langage de script, donc il ne peut pas être aidé), mais il peut être difficile de décider. Cependant, il est NG que le chemin de recherche change en fonction de la façon dont il est appelé.
Après tout, pour la tranquillité d'esprit, il est nécessaire d'éditer sys.path et de l'ajouter sous le répertoire courant.
C’est ma responsabilité, mais chaque fois que j’oublie cette tâche et que je cherche comment l’imopérer.
Python a des cartes et des filtres dérivés de langages fonctionnels. Il est adaptable aux classes qui implémentent iterable et fonctionne comme son nom l'indique.
lst: list = [1, 2, 3, 4, 5, 6]
lst2 = list(map(lambda x: x*2, lst))
lst3 = list(filter(lambda x: x % 2 == 0, lst))
print(lst2) # => [2, 4, 6, 8, 10, 12]
print(lst3) # => [2, 4, 6]
As-tu remarqué? Je convertis volontairement la sortie telle que la carte en liste.
Eh bien, ce n'est pas douloureux, mais c'est subtil.
Après tout, la seule condition est que lambda x: iterable-> iterable
, donc c'est le type de sortie de la carte qui est itérable, il est donc inévitable que la conversion soit nécessaire.
Cependant, en réalité, il a une fonction pratique appelée notation d'inclusion. Même chose que ci-dessus
lst: list = [1, 2, 3, 4, 5, 6]
lst2 = [x * 2 for x in lst]
lst3 = [x for x in lst if x % 2 == 0]
print(lst2) # => [2, 4, 6, 8, 10, 12]
print(lst3) # => [2, 4, 6]
Peut être écrit.
Il semble que Python ne soit pas utilisé en coupant l'environnement virtuel pour chaque projet. Par conséquent, j'utilise Pyenv pour changer de version et pipenv pour changer de bibliothèque pour chaque environnement.
Le problème est que si vous faites cela, le disque sera de plus en plus mangé, comme avoir une bibliothèque pour chaque environnement virtuel.
J'utilise le SSD M.2 avec priorité sur la vitesse, et même s'il est bon marché, il est sobre dans un environnement d'environ 250 Go.
Ce n'est pas un problème pour les personnes qui sont toujours en retrait dans des environnements tels que Anaconda et Miniconda et Jupyter.
Découvrez ce que vous voulez faire-> Il existe de nombreux modèles où vous pouvez trouver une bibliothèque. Pour être honnête, je pense que la plupart des choses ont une bibliothèque.
Comme je vis dans un système de langage naturel, j'utilise parfois MeCab, Human ++, etc., mais comme il existe des wrappers pour eux, Il peut être utilisé comme un objet Python sans penser à rien. Pratique.
S'il s'agit d'un analyseur morphologique, vous pouvez toujours l'implémenter vous-même, mais c'est très utile car vous ne voulez pas utiliser de wrapper pour un analyseur de syntaxe tel que KNP.
Existe-t-il également une demande pour la conversion demi-largeur pleine largeur? Cela correspond également à cela, donc je peux le résoudre en appelant diverses bibliothèques créées par mes prédécesseurs.
La bibliothèque d'apprentissage automatique est particulièrement riche, donc si vous voulez le faire, Python est une bonne idée.
Numpy,Pandas
Une bibliothèque qui peut être une raison d'utiliser Python par lui-même. Le calcul matriciel est trop fort ... Il est trop facile à représenter graphiquement ...
Puisqu'il peut être exécuté dans un environnement virtuel, vous n'avez pas à vous soucier de la version de Glibc lorsque vous exécutez le programme créé. bien. bien.
J'utilise personnellement Arch Linux maintenant, donc c'est encore mieux.
Je me suis beaucoup plaint ci-dessus, mais à la fin, les avantages sont si grands que nous ne pouvons pas quitter Python. Je pense que si Numpy est également dans d'autres langues ... mais je ne me sens pas comme Ruby ou Perl, alors Python est également un candidat en tant que langage de script pratique.
Je me demande s'il n'y a pas d'autre choix que de l'utiliser tout en résolvant les problèmes résolus par la conception ...
Recommended Posts