Maison  >  Article  >  développement back-end  >  Savez-vous pourquoi Python a une instruction pass ?

Savez-vous pourquoi Python a une instruction pass ?

coldplay.xixi
coldplay.xixiavant
2020-10-30 16:54:062440parcourir

La colonne

Tutoriel vidéo Python explique pourquoi Python a besoin d'une instruction pass.

Savez-vous pourquoi Python a une instruction pass ?

Concernant l'instruction pass en Python, elle semble très simple (seulement 4 lettres) et même un débutant sans aucune expérience en programmation peut en maîtriser rapidement son utilisation.

L'introduction du document officiel est très simple. Les trois exemples suivants peuvent nous permettre de comprendre rapidement comment l'utiliser :

Savez-vous pourquoi Python a une instruction pass ?
En termes simples, pass est une opération nulle Lorsque l'interpréteur l'exécute, il ne fait rien d'autre que vérifier si la syntaxe est légale et l'ignore.

Par rapport aux opérations non nulles telles que return, break, continue et rendement, la plus grande différence est qu'elle ne change pas l'ordre d'exécution du programme. C'est comme un commentaire que l'on écrit, sauf qu'il occupe une ligne de code et n'a aucun impact sur le scope dans lequel il se situe.

Cependant, si vous avez des bases dans d'autres langages, vous pourriez être curieux :

Pourquoi Python a-t-il une instruction pass si unique, mais pas les autres langages ?

Pourquoi Python est-il conçu de cette façon ?

Est-ce pour résoudre les problèmes courants rencontrés par la plupart des langages de programmation, ou s'agit-il d'une nouvelle fonctionnalité créée en raison de ses propres nouvelles découvertes ?

En d'autres termes :

Pourquoi Python a-t-il une instruction pass, quels problèmes résout-il (avantages) et quels problèmes cela causerait-il (inconvénients) sans elle ?

Ensuite, cet article analysera sous deux dimensions.

1. Aux gens : en tant qu'espace réservé

Je le considère comme une manière concise et complète de commenter, ce qui équivaut à dire "

Réservez d'abord une place ici, puis revenez plus tard Ajoutez l'implémentation de code spécifique ".

Par exemple, dans une structure if-elif-else multicouche, nous pouvons d'abord écrire les conditions de jugement, puis écrire pass dans le bloc correspondant, puis l'améliorer lentement plus tard.

Par exemple, dans l'exemple donné ci-dessus, nous pouvons d'abord écrire le nom de la classe/fonction et ses paramètres d'entrée, puis sauter (passer) le code principal et le remplir lentement plus tard.

pass est facile à écrire, et comme il s'agit d'un mot-clé, l'EDI vous donnera une distinction de couleur visible, c'est donc plus pratique que d'écrire des commentaires.

pass sert d'espace réservé, ce qui nous facilite principalement la conception de la structure du code local et a un certain effet de rappel auxiliaire.

Cependant, comme manière de commenter, il est trop fin et inférieur à l'écriture "#todo: xxxx". Cette dernière sera également mise en évidence en couleur par l'IDE et aura une signification plus claire. Bien que simple à écrire, il introduit également une passe de mot-clé apparemment redondante.

Ainsi, du point de vue des espaces réservés, le pass n'est pas un élément de conception nécessaire dans les langages de programmation.

Avec lui, nous pouvons exprimer la sémantique de "il y a quelque chose ici, mais sautez-le pour l'instant", mais sans cela, il peut être remplacé par du contenu d'annotation.

2. Pour les machines : Par souci d'exhaustivité grammaticale

Pour l'utilisation de l'élément précédent, la position où pass apparaît dans le code est théoriquement illimitée.

Cependant, lorsque nous utilisons pass le plus souvent, c'est essentiellement sur la ligne à côté des deux points, et il n'y a qu'une seule instruction dans le bloc de code en retrait à ce niveau. (Voir les 3 exemples précédents. Pour plus de commodité, nous ne prenons comme exemple que la fonction vide)

On imagine ce qui se passerait si on ne l'écrivait pas ?

La réponse est qu'une erreur d'indentation sera signalée :

IndentationError: expected an indented block

# 将函数体的 pass 去除,会报错def func():func()复制代码
Parce que Python utilise l'indentation pour diviser les blocs de code (pour la raison, veuillez cocher "Pourquoi Python utilise-t-il l'indentation pour diviser les blocs de code?") , et les deux points marquent l'apparition d'un nouveau bloc de code indenté, donc cet exemple signalera un bloc de code indenté manquant.

Et si on la remplaçait par l'annotation mentionnée ci-dessus ?

# 将函数体的 pass 换成注释def func():
    # todo:此处有东西,以后补上func()复制代码
Écrire comme ceci signalera également une erreur :

IndentationError: expected an indented block

La raison est que le commentaire n'est pas un contenu grammatical valide, il sera ignoré par l'interpréteur Python (ignorer), contrairement à l'instruction pass "Contenu de syntaxe valide, mais ignoré".

En d'autres termes, le bloc de code indenté doit contenir un contenu grammaticalement significatif. Les exemples suivants sont valides :

def func():
    """这是一个字符串"""def func2():
    123456复制代码
Python Lors de la définition d'une fonction, elle doit inclure le corps de la fonction, c'est-à-dire qu'elle contient. à la fois la sémantique de déclaration et la sémantique de définition. Cela ne peut pas être comme certains langages qui ne peuvent utiliser que la sémantique de déclaration, c'est-à-dire écrite comme

. void test();

Cependant, comme Python n'utilise pas d'accolades, il ne peut pas définir directement une fonction vide comme certains langages, qui s'écrit

. void test(){}

Sur la base de l'analyse ci-dessus, Python doit avoir un corps de fonction légal lors de la définition d'une fonction vide, donc une instruction pass qui représente un no-op est conçue. Il est destiné à compléter la syntaxe et, avec les deux points, équivaut à une paire d'accolades vides dans d'autres langues.

Du point de vue de l'intégrité grammaticale, il s'agit d'un élément de conception nécessaire. S'il n'est pas disponible, il doit être remplacé par une déclaration vide similaire ou un symbole spécial.

Pour les humains, passer peut signifier « ignorer temporairement ». En tant qu'espace réservé temporaire, il sera éventuellement remplacé par l'implémentation réelle du code ; pour les machines, cela peut signifier « ignorer directement » n'est utilisé que pour terminer. la logique grammaticale et ne sera pas remplacé par d’autres codes.

Les autres langues n'ont pas de déclaration ou de symbole spécial pour représenter ce type d'espace réservé (c'est-à-dire que la sémantique fait défaut), mais elles n'ont pas besoin de se donner la peine de concevoir un mot-clé pour compléter l'intégrité grammaticale (c'est-à-dire grammaticalement complet).

Retour à la question du début de cet article : Pourquoi Python a-t-il une instruction pass, quels problèmes résout-il (avantages) et quels problèmes cela causera-t-il (inconvénients) sans elle ?

Python utilise l'instruction pass pour prendre en charge des blocs de code purement sans opération (fonctions vides, classes vides, blocs de contrôle de boucle vides, etc. Avec elle, des expressions supplémentaires peuvent être créées). avec une sémantique d’espace réservé.

Le premier est destiné aux machines et doit être présent, équivalent au rôle des accolades vides dans d'autres langues ; le second est destiné aux humains et n'est pas nécessaire et peut être exprimé avec des commentaires, mais parce que. Python a conçu cette instruction, cette utilisation est parfois assez pratique.

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer