Les arguments de la fonction (en Python par exemple)
Ce sont [fonction] arguments? Quels sont-ils utilisés?
J'ai commencé à apprendre le Python très récemment, je suis nouveau en programmation et je m'excuse pour cette question fondamentale.
Dans chaque tutoriel Python je passe par ce qu'ils parlent arguments. j'ai cherché la réponse à cette question et ont trouvé beaucoup de réponses, mais ils sont juste un peu trop dur pour moi de understatnd. J'ai peut-être simplement pas certains arrière-plan conceptuel.
Alors... quand j'définir une fonction, quelles sont les choses dans la parenthèse est-il utilisé?
Exemple:
def hi( This is the part that i dont get):
print 'hi'
Edit:
Deux de suivi des questions liées à celle-ci ont été plus tard fermé et fusionné ici, d'où l'partielle hors contexte, caractéristique de certaines de ses réponses.
Le suivi des questions étaient les suivantes: [paraphrase]
- Pouvez arguments uniquement être utilisés pour l'entrée ?
ce sont d'autres exemples de l'utilisation d'arguments ? - Pourquoi utiliser des arguments, plutôt que d'avoir l'appel de la fonction raw_input ?
- Pourquoi le concept de l'argument de passage décrit comme une telle chose de puissant? il me semble que nous sommes simplement les utiliser pour remplacer les trucs de l'utilisateur pourrait avoir taper sur le clavier.
- Veuillez stop poser la même question à plusieurs reprises. J'ai fusionné les deux autres (identiques) questions que vous avez posées dans les six dernières heures dans celui-ci. Encore une fois, ne pas post de nouveau à cette question.
- Pourquoi le
down-votes
? Certes, cette question était un peu faible, et celui d'un débutant qui n'a apparemment pas passer une quantité excessive de temps à essayer de comprendre les choses. Jamais le moins, à cette question, bien que de nature conceptuelle, est très bien portée avec StackOverflow, et, en effet, correspond à une véritable et probablement non atypique obstacle débutants rencontre comme ils tamiser à travers des tutoriels et d'autres livres, mais par manque de vocabulaire adapté. (Et aussi de nombreux tutoriels supposer qu'un tel évident commun de connaissances sur les concepts de base sont facilement comprises). Soyons tous pluswelcoming
! - Je pense que les downvotes sont justifiées par l'échec manifeste de l'utilisateur de lire la FAQ, en plus de l'absence de l'effort et la répétition de l'affichage de la même question, ce qui m'a forcé à le signaler et ont le modérateur de les fusionner. Si les gens pensaient qu'il était hors sujet, il aurait été voté fermé, pas downvoted. C'était une mauvaise question, pas un mauvais sujet pour une question, et a été traitée de la sorte par la communauté. (Il y a aussi, je pense, des préjugés à l'égard de personnes qui semblent être de langue maternelle anglaise, mais n'en faites pas un effort pour utiliser la langue clairement. Il a certainement des bugs moi.)
Vous devez vous connecter pour publier un commentaire.
En quelques mots, ils sont des données qui est "passé" dans la fonction pour lui dire quoi faire. Wikipédia a des détails.
http://en.wikipedia.org/wiki/Function_argument
Par exemple, votre
hi()
fonction pourriez avoir besoin de savoir à qui dire bonjour à:Ou une fonction mathématique pourrait avoir besoin d'une valeur de fonctionner sur:
Dans ce cas pour l'utilisation d'arguments, c'est simplement une démonstration sur la façon de les utiliser, pas la plus efficace peut-être que vous avez démontré. Les fonctions sont très utiles. par exemple, si je voulais ajouter deux nombres:
Fonctions sont utiles pour l'exécution de tâches répétitives, disons que dans votre exemple, vous avez eu à dire bonjour à des centaines de noms, au lieu d'avoir à faire une boucle de que
raw_input()
fonction pour lire leur nom et leur ajouter du texte, il vous suffit d'appeler une fonction pour effectuer la tâche et passer des arguments (les personnes nom).Par votre deuxième question, les arguments sont juste les variables passées à la fonction, de sorte que quelle que soit la variable de passer de l'extérieur, par exemple je passe les numéros 1 et 3 de ma fonction
add
à l'intérieur de cette fonction, ils sont simplement appelésnum1 num2
.Dans votre cas avec le passage trop d'arguments donnerait ceci:
Bonne chance! et n'hésitez pas à tirer sur moi un email si vous avez besoin de plus d'aide (sbrichards (at) mit.edu)
Ce n'est pas un Python question, mais plutôt une programmation générique question. Très basique.
Avant de répondre à la question sur arguments, et compte tenu des autres questions que vous avez posées, il est utile de discuter de la concept de variables.
Une variable est un nom de morceau de la mémoire où l'information d'intérêt pour le sous-programme peuvent être stockées et récupérées. En d'autres termes, c'est un nom symbolique, choisi par le programmeur, qui est associé à son contenu. À l'aide de diverses constructions de langage généralement connu comme affectations, le programmeur peut lire ou écrire le contenu d'une variable.
Il est important de noter que la valeur (le contenu) d'une variable ne doit pas être défini lorsque le programme est écrit. Il est seulement nécessaire au moment de l'exécution. Cela permet au programme de décrire les actions à effectuer sur des éléments symboliques sans connaître exactement la valeur de ces éléments. Considérons cet extrait de code, partie d'un grand programme:
À la fois que le programme est écrit, on n'a pas besoin de connaître la valeur réelle de ball_radius; pourtant, avec l'hypothèse que cette variable contient la valeur numérique d'une hypothétique de la balle, le modèle est capable de décrire comment calculer le ballon de volume. Dans ce mode, lorsque le programme est en cours d'exécution, et en quelque sorte (plus sur cela plus tard) le ball_radius variable a été initialisée avec une certaine valeur appropriée, la variable ball_volume peut aussi être initialisé et utilisé, ici, dans l'instruction conditionnelle (si), et éventuellement ci-dessous. (À un certain point, la variable peut aller hors-de-portée, mais ce concept qui contrôle particulier lorsque les variables sont accessibles à le programme est bien au-delà de cette introduction).
Dans certaines langues, le type de données qui peuvent être associés à une variable particulière doit être explicitement défini et ne peut pas changer. Par exemple, certaines variables peuvent contenir que des valeurs entières, les autres variables de la chaîne de valeurs (texte) etc. En Python il n'y a pas de telles restrictions, une variable peut être affecté et ré-attribuée à n'importe quel type de données, mais bien sûr, le programmeur doit garder la trace de cette par exemple pour éviter de transmettre certaines données de texte à une fonction mathématique.
Les données stockées à l'intérieur de la variable peuvent provenir de sources très différentes. Beaucoup de ces exemples, des tutoriels et de la documentation d'introduction de données provenant de l'entrée de clavier (comme lors de l'utilisation de raw_input comme mentionné dans certains de vos questions). C'est parce qu'elle permet à des tests interactifs, par les gens qui essaient de sortir ces tutoriel extraits. Mais l'utilité des programmes de serait plutôt limité si les variables seulement obtenir leurs données à partir de la saisie utilisateur interactive. Il existe de nombreuses autres sources et c'est ce qui rend la programmation tellement puissant: les variables peuvent être initialisées avec des données de:
En un mot, Arguments, également appelé Paramètres, sont variables passé à la fonction qui [généralement] sont utilisés pour fournir de sortie différents et le comportement de la fonction. Par exemple:
Dans l'exemple ci-dessus,
my_name
est juste comme n'importe quelle variable locale de lasay_hello
fonction, ce qui permet à la fonction de définir ce qu'il va faire avec la valeur sous-jacente lorsque la fonction est appelée, au moment de l'exécution.Au moment de l'exécution, la fonction peut être appelée avec une valeur immédiate (une valeur qui est "codée en dur" dans la logique, comme
"Sam"
dans l'exemple), ou avec [la valeur] une autre variable (par exemple,customer_name
). Dans les deux cas, la valeur de la fonction de my_name variable est affectée de la valeur, "Sam" et "M. Peter Clark", respectivement. Dans ce dernier cas, cette valeur est ce que l'customer_name
variable contient. Notez que le noms des variables utilisées dans la fonction (my_name
) et lorsque la fonction est appelée (customer_name
) n'ont pas besoin d'être le même. (que l'on appelle le "paramètre formel(s)" et "paramètres", respectivement)Noter que, bien que généralement la plupart des arguments passés comme entrée à une fonction, dans certaines conditions, ils peut être utilisé comme sortie, c'est à dire de fournir de nouveaux/modifiés valeurs au niveau de la logique qui a appelé la fonction. Cela requiert de l'aide, implicitement ou explicitement, la bonne convention d'appel cahier des charges (Voir
Argument passing conventions
ci-dessous)Maintenant... au-delà de cette compréhension de base de l'objet de paramètres, les choses deviennent un peu plus compliqué que ça (mais pas beaucoup). Je vais discuter de ces concepts en général et de l'illustrer comme ils s'appliquent à Python.
Valeurs par défaut pour les arguments (aka "option", arguments)
Lorsque la fonction est déclarée, il peut spécifier la valeur par défaut pour certains paramètres. Ces valeurs sont utilisées pour les paramètres qui ne sont pas spécifiés lorsque la fonction est appelée. Pour des raisons évidentes, ces paramètres facultatifs sont offerts à la fin de la liste des paramètres (sinon le compilateur de langage/interprète peut avoir de la difficulté à trouver le paramètre qui est qui...)
Nombre Variable de paramètres
Dans certains cas, il peut être utile de définir une fonction de sorte qu'il peut accepter un nombre variable de paramètres. Bien que ces listes de valeurs de paramètre en fin de compte se passait dans une sorte de récipient (liste, tableau, collection...) divers langues propose des façons d'accéder à ces valeurs de paramètre.
Arguments Nommés (Mot-Clé Arguments)
Avec Python et quelques autres langues, il est possible explicitement le nom de la arguments lors de l'appel de la fonction. L'argument selon lequel le passage est par défaut basé sur une position de base ("1er argument, 2e argument etc.), Python vous permettra de nommer les arguments et les passer dans n'importe quel ordre. C'est essentiellement syntaxique, finesse, mais peut être utile, en combinaison avec des arguments par défaut pour les fonctions qui acceptent de très nombreux arguments. C'est aussi une belle auto-documentation fonctionnalité.
En Python, vous pouvez même passer d'un dictionnaire au lieu de plusieurs arguments nommés par exemple, avec do_greetingsas-est, imaginez que vous avez un dictionnaire comme:
En conclusion, et bien que les drôles de façons de passer des arguments, et la capacité pour des méthodes pour gérer un nombre variable d'arguments, qui sont des fonctions utiles de différentes langues, deux concepts clés doivent être mentionnés:
Argument en passant convention : par valeur ou par référence
Jusqu'à présent, toutes les fonctions que nous avons utilisé n'ai pas modifier la valeur des paramètres passés. On peut imaginer toutefois dans de nombreux cas, les fonctions de cette formation, que ce soit pour effectuer certaines de conversion ou de calcul sur les mêmes valeurs, pour son propre usage interne, ou à un changement de la valeur de la variable de sorte que les modifications sont répercutées au niveau de la logique qui a appelé la fonction. C'est là l'argument en passant des conventions viennent à portée de main...
les arguments qui sont passés en valeur peut être modifié par la fonction que pour ses propres calculs, mais ne sont pas modifiées au niveau de l'appel de la méthode.
les arguments qui sont passés par référence sera de refléter les modifications qui y sont apportées, au niveau de la méthode appelante.
Chaque langue précise les modalités que les arguments sont passés. Typique de la convention est de passer des entiers, numberic valeurs et d'autres types de base par la valeur et passer des objets par référence. La plupart offrent également des mots clés qui permettent la modification de leur défaut de convention.
En python tous les arguments sont passés par référence. Cependant quelques variables, les types sont immuables (nombres, chaînes, tuples...) et ils peuvent donc pas être modifié par la fonction.
Implicite "auto" ou "cet" argument des méthodes de la classe
Dans les langages orientés objets, des méthodes (c'est à dire des fonctions au sein d'une classe) recevoir un argument supplémentaire qui est la valeur de l'objet sous-jacent (l'instance de la classe), permettant la méthode à utiliser les différentes propriétés des membres de la classe dans son calcul et/ou de modifier la valeur de certaines de ces propriétés.
en Python, cet argument est déclaré au niveau de la définition de la méthode, mais il est passé implicitement. D'être déclaré, il peut être nommé plus quelque chose que l'on souhaite, bien que, par convention, ce qui est généralement appelé auto.
variables
concept. Il ne peut pas aider, mais là encore, vous semblez mon avatar 😉Les trucs dans les parenthèses sont appelées arguments. Fondamentalement, ce sont les variables que vous voulez que la fonction de travail. Par exemple, disons que vous avez une fonction, et que vous souhaitez imprimer un mot, quand vous l'appelez. Avec des arguments, vous pouvez définir ce que le mot sera. Voici un exemple:
maintenant, si je fais quelque chose comme ceci:
il apparaîtra à l'impression:
hi() est passé
'Hello!'
comme une variable appeléeword
, puis il imprime ce mot.Dans votre exemple, ils ne sont pas utilisés.
Si votre fonction doit se comporter différemment selon les arguments que vous donnez, alors que les arguments sont pour.
Cette affiche "Salut John Doe".
Maintenant, revenons à l'essentiel fonctions.
Un argument est une variable spéciale qui n'existe que dans cette fonction.
Dans votre exemple, vous avez une fonction qui prend 2 arguments:
Lorsque j'appelle cette fonction avec
add()
, j'ai du ajouter dans les parenthèses ce que je veuxnum1
etnum2
être. Dans votre cas, vous avez1
et3
, de sorte que vous appeler comme celaadd(1,3)
.Ce que vous dites, c'est que vous voulez l'appeler
add()
et vous souhaitez le premier argument,num1
être égale à1
, et le deuxième argument,num2
, être égale à3
.Fonctions serait inutile si vous ne pouvez pas leur donner des informations qu'ils doivent gérer.
Les Arguments sont de telles informations.