Examiner les fonctions intégrées (fonctions intégrées standard) à partir de globals

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__'

Recommended Posts

Examiner les fonctions intégrées (fonctions intégrées standard) à partir de globals
Fonctions intégrées
Fonctions intégrées de Python
Fonction intégrée Python ~ Zip ~
Fonctions intégrées Wrap Python
Étude de Python Hour3: Fonctions