Commencez par démarrer l'interpréteur python.
Pour Windows, démarrez ʻIDLE (GUI Python) ou
Python (ligne de commande) `à partir du menu Démarrer. Cependant, vous devez installer Python à l'avance.
Pour Linux et MacOS (idem pour Windows si la variable d'environnement PATH est définie)
/home/user$ python
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
Regardons la définition globale avec globals ()
.
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
Vous pouvez également voir uniquement le nom de la définition globale avec dir ()
.
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
Jetons un coup d'œil à l'aide sur ce qu'est «globals».
>>> help(globals)
Help on built-in function globals in module __builtin__:
globals(...)
globals() -> dictionary
Return the dictionary containing the current scope's global variables.
globals
est une fonction intégrée incluse dans le module __ builtin__
, qui semble renvoyer un dictionnaire contenant des variables globales dans la portée actuelle (plage actuellement visible).
Jetons un œil à la définition de __builtins__
.
>>> __builtins__
<module '__builtin__' (built-in)>
>>> type(__builtins__)
<type 'module'>
>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']
>>> help(__builtins__)
Help on built-in module __builtin__:
NAME
__builtin__ - Built-in functions, exceptions, and other objects.
FILE
(built-in)
DESCRIPTION
Noteworthy: None is the `nil' object; Ellipsis represents `...' in slices.
CLASSES
object
basestring
str
unicode
buffer
bytearray
classmethod
complex
dict
enumerate
file
float
frozenset
int
bool
list
long
memoryview
property
reversed
set
slice
staticmethod
super
tuple
type
xrange
class basestring(object)
| Type basestring cannot be instantiated; it is the base for str and unicode.
(Omis parce que c'est long)
J'ai pu connaître la liste globale des fonctions et les définitions d'exceptions.
Voyons ce que fait l'un d'eux, «zip».
>>> zip
<built-in function zip>
>>> type(zip)
<type 'builtin_function_or_method'>
>>> dir(zip)
['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
>>> help(zip)
Help on built-in function zip in module __builtin__:
zip(...)
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
Return a list of tuples, where each tuple contains the i-th element
from each of the argument sequences. The returned list is truncated
in length to the length of the shortest argument sequence.
Il semble qu'il listera le i-ème élément des données de séquence données sous forme de tap. Utilisons-le.
>>> zip((1, 2, 3), [True, False, None], "ABC")
[(1, True, 'A'), (2, False, 'B'), (3, None, 'C')]
Une liste de taples avec le premier élément, taples avec le deuxième élément et taples avec le troisième élément s'affiche.
__builtins__
semble être un module, mais que faire si vous changez__builtins__
en une définition différente?
Je vais jouer un peu avec.
>>> __builtins__ = None
>>> __builtins__
>>> globals()
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
globals()
NameError: name 'globals' is not defined
>>> dir()
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
dir()
NameError: name 'dir' is not defined
>>>
Oups. La fonction intégrée ne peut plus être utilisée.
Lorsque vous essayez d'appeler une fonction, l'interpréteur Python vérifie la définition locale (locals ()) ou la définition globale (globals ()) pour une définition de fonction, et sinon, une autre définition de fonction intégrée dans la définition globale __builtins__
. Il semble qu'il vérifie pour tout et appelle la fonction.
De plus, la fonction intégrée qui ne peut plus être utilisée semble être redéfinie en supprimant (del) __builtins__
.
>>> del __builtins__
>>> globals()
{'__builtins__': {'bytearray': <type 'bytearray'>, 'IndexError': <type 'exceptions.IndexError'>, 'all': <built-in function all>, 'help': Type help() for interactive help, or help(object) for help about object., 'vars': <built-in function vars>, 'SyntaxError': <type 'exceptions.SyntaxError'>, 'unicode': <type 'unicode'>, 'UnicodeDecodeError': <type 'exceptions.UnicodeDecodeError'>, 'memoryview': <type 'memoryview'>, 'isinstance': <built-in function isinstance>, 'copyright': Copyright (c) 2001-2014 Python Software Foundation.
All Rights Reserved.
Copyright (c) 2000 BeOpen.com.
All Rights Reserved.
(Omis parce que c'est long)
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
Le contenu affiché a changé depuis la première fois que je l'ai essayé, mais il semble qu'il puisse être utilisé sans problème.
À propos, __name__
dans la définition globale est une variable globale qui contient
main __ '' lorsqu'elle est lancée en tant que commande et le nom du package lorsqu'il est importé en tant que package.
Vous voyez la description ʻif name == ' main__': ʻ dans votre script Python.
>>> __name__
'__main__'