15 votes

from sys import argv - quelle est la fonction de "script"

Je suis en train de lire "Learn Python the Hard Way" et j'ai été perturbé par la partie "script" de la deuxième ligne.

from sys import argv
script, filename = argv

D'après ce que je comprends, la deuxième ligne dit : script y filename comprend argv . J'ai essayé d'exécuter mon code sans la partie "script" et cela a fonctionné parfaitement. Je ne suis pas sûr de l'utilité de cette partie.

16voto

Waleed Khan Points 7472

Généralement, le premier argument d'un exécutable en ligne de commande est le nom du script, et le reste sont les arguments attendus.

Ici, argv est une liste qui est censée contenir deux valeurs : le nom du script et un argument. En utilisant la notation de déballage de Python, vous pouvez écrire

script = argv[0]
filename = argv[1]

comme

script, filename = argv

tout en lançant également des erreurs s'il y a un nombre inattendu d'arguments (comme un ou trois). Cela peut être une bonne idée, en fonction de votre code, car cela garantit également qu'il n'y a pas d'arguments inattendus.

Cependant, le code suivant ne donnera pas lieu à filename contenant réellement le nom du fichier :

filename = argv

Cela s'explique par le fait que filename est maintenant la liste des arguments. Pour illustrer :

script, filename = argv
print("Script:", script)  # Prints script name
print("Filename:", filename)  # Prints the first argument

filename = argv
print("Filname:", filename)  # Prints something like ["my-script.py", "my-file.txt"]

5voto

Burhan Khalid Points 50578

D'autres ont expliqué ce qu'est script mais l'instruction python s'appelle déballage et s'applique généralement aux tuples ou aux séquences.

Il s'agit d'un raccourci permettant d'attribuer une variable à chaque valeur contenue dans le tuple (ou la séquence) situé à droite de la balise = signe.

Ce n'est pas quelque chose de spécifique à argv :

>>> a,b = ('Hello','World')
>>> a
'Hello'
>>> b
'World'

Une chose à garder à l'esprit est que le nombre de variables sur le côté gauche doit correspondre au nombre d'éléments dans la séquence sur la droite, sinon vous obtenez :

>>> a,b,c = ('Hello','World')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
>>> a,b = ('Hello','World','!')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

3voto

Max Points 5042

argv est une liste des arguments de votre programme. Le comportement standard de l'interpréteur de commandes inclut le nom du programme lui-même en tant que premier argument de la commande argv .

Python peut assigner plusieurs valeurs à la fois si le nombre de variables à gauche est égal à la taille de la liste à droite (il peut aussi gérer d'autres cas, mais c'est le plus basique). Par exemple

script, filename = argv

est la même chose que

script = argv[0]
filename = argv[1]

Notez également que script soulèvera un ValueError si argv n'a pas exactement deux éléments.

2voto

kindall Points 60645

Le premier élément dans argv est le nom du script Python que vous exécutez. Tout argument supplémentaire (le nom du fichier, dans ce cas) est un argument passé à ce script.

Les noms suivants sont attribués à ces deux arguments script y filename . Il est tout à fait possible que script n'est plus jamais utilisé ; il s'agit essentiellement d'un espace réservé. Si vous le supprimez, cependant, vous feriez filename = argv[1] à la place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X