Sys.argv d'ou vient argv?

Résolu
sbg -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis en phase d'apprentissage en Python et j'essaye d'évoluer d'une façon autonome, c.a.d. une fois les notions de base acquises trouver mes solutions en na vigant dans le monde Python (à l'instar de ce qu'on fait à l'aide du man dans Unix). Or, j'ai bcp de mal a trouver la logique que nous permet d'"enquêter qui est qui" dans le monde Python.

L'exemple ci-dessous illustre cela:

>>> import sys

>>> dir('sys')
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

>>> for arg in sys.argv: print arg
...
py_quicklook.py
-p
bef
-e
(...)


Démarche/question (dites moi qu'est-ce que vas pas dans mon raisonnement):

- Je comprends (?!) que "sys" est un package comprenant des modules;
- Par ailleurs, je comprends que "tout est un objet dans Python";
- J'utilise donc dir('') pour connaître les attributs et methodes liées à cet objet, en pensant que les methodes/functions sont les "calls des modules".

Or, je n'ai rien que montre que je peux "faire appel" à "argv" ?!...


En espérant avoir été claire et concise.
Un grand merci d'avance,


S.

4 réponses

Utilisateur anonyme
 
Je ne suis pas un spécialiste Python mais je crois que tout n'est pas objet dans Python, loin de là, il y a un savant mélange de procédural et objet

en l'occurence sys.argv est une liste, liste de paramètres passé au système lors de l'appel d'un script python genre
python script.py toto tata

voir ici https://docs.python.org/3/library/sys.html
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
mais je crois que tout n'est pas objet dans Python, loin de là
En python tout est objet.

en l'occurence sys.argv est une liste, liste de paramètres passé au système lors de l'appel d'un script python genre
python script.py toto tata

Oui, et donc cela devrait être restitué par la fonction dir : l'objet de la question ^^.
0
Utilisateur anonyme
 
Ha bon, tout objet...
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Oui tout est objet ;-))). Même les int (type natif).
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,
Or, je n'ai rien que montre que je peux "faire appel" à "argv" ?!...
Normal, tu as fait dir('sys') ce qui équivalent à dir(str) puisque 'sys' est un string.
Tu voulais faire dir(sys) qui là retournera tous les attributs et méthodes du module sys. Et tu auras le fameux argv ;-))).

Cdlt,
0
sbg
 
Merci pour votre réactivité. Votre réponse me fait progresser.

Toutefois en essence ma question est:

Comment connaître ce dont je dispose (function/methode), ici = "argv" dans la boite "sys"?

Un autre exemple,

>>>import matplotlib.pyplot as mpl
>>> dir('mpl')
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']


je comprends que les fonctions dont je dispose sont celles ennonces... mais non, il y (plein) d'autres:

mpl.subplots_adjust
mpl.figtext
mpl.savefig
...

Mais comment les trouver?!!!
0
sbg
 
Merci Fiddy, tu m'as donné la solution!
Si simple, si facile, et pourtant j'etais sur des rails.

Cdlt,
0