Python est douloureux. Mais utilisez

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 ...

Python est difficile

Les spécifications du bloc sont douloureuses

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.

Les spécifications d'importation sont pénibles

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.

L'existence de la carte et du filtre est douloureuse

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.

le disque est épicé

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.

Python est bon

Bibliothèque riche

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 ...

L'environnement peut être isolé

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.

Nous utilisons toujours Python

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 ...

référence

Recommended Posts

Python est douloureux. Mais utilisez
Utilisez le tissu tel quel en python (fabric3)
Python est facile
Qu'est-ce que python
Python est une instance
Comment utiliser is et == en Python
Qu'est-ce que Python
python int est infini
Utilisez Thingsspeak de Python
Utilisez config.ini avec Python
[Python] Utiliser JSON avec Python
Utiliser fluentd de python
Utiliser des dates en Python
[Python] Qu'est-ce que Pipeline ...
Utiliser Valgrind avec Python
Utilisez MySQL depuis Python
Utiliser mecab avec Python 3
Utiliser le client LiquidTap Python ③
Utiliser DynamoDB avec Python
Utilisez Python 3.8 avec Anaconda
Utilisation méthodique du format [Python]
Utiliser python avec docker
Utiliser MySQL depuis Python
Utiliser le client LiquidTap Python ②
Utilisez BigQuery depuis Python.
Utiliser le profileur en Python
[Python] Qu'est-ce que virtualenv
Utilisez mecab-ipadic-neologd de Python
Utiliser le client LiquidTap Python ①
Re: Python lambda est inutile ^ H ^ H ^ H ^ H ^ H Difficile à utiliser
Voyons comment utiliser def en python
Utilisons Python Janome facilement
Le rond de Python n'est pas strictement rond
[Python] Débogage plus efficace!
Utiliser l'API Trello avec python
Utilisez matplotlib sur Ubuntu 12 et Python
Utiliser l'expression let en Python
Utiliser le protocole de mesure avec Python
python3: Comment utiliser la bouteille (2)
Comment utiliser __dict__ en Python
Utiliser la fonction de rappel en Python
Utiliser l'API Twitter avec Python
Utiliser le magasin de paramètres en Python
[Python] Utiliser une séquence de chaînes
[Python] Comment utiliser la liste 1
Utiliser le cache HTTP en Python
Utiliser TUN / TAP avec Python
Utiliser MySQL depuis Anaconda (python)
Python est un langage pour adultes
Utilisez l'ODM de MongoDB avec Python
Utiliser un dict clé de liste en Python
Comment utiliser Python Argparse
Utiliser Random Forest avec Python
La liste Python n'est pas une liste
Utilisez Spyder de Python IDE
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Python] Python et sécurité-① Qu'est-ce que Python?
Le cycle de publication de Python est plus rapide!
[Python] Est-ce que l'objet nul mais non vide est Vrai ou Chute?