[PYTHON] Untersuchen Sie integrierte Funktionen (integrierte Standardfunktionen) von Globals

Starten Sie zuerst den Python-Interpreter. Starten Sie unter Windows "IDLE (Python GUI)" oder "Python (Befehlszeile)" über das Startmenü. Sie müssen Python jedoch im Voraus installieren.

Für Linux und MacOS (dasselbe gilt für Windows, wenn die Umgebungsvariable PATH festgelegt ist)


/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.
>>>

Schauen wir uns die globale Definition mit globals () an.

>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}

Sie können auch nur den globalen Definitionsnamen mit dir () sehen.

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']

Werfen wir einen Blick auf die Hilfe zu "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 ist eine integrierte Funktion, die im Modul __ builtin__ enthalten ist und ein Wörterbuch mit globalen Variablen im aktuellen Bereich (derzeit sichtbarer Bereich) zurückzugeben scheint.

Werfen wir einen Blick auf die Definition von 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.
(Ausgelassen, weil es lang ist)

Ich konnte die globale Funktionsliste und die Ausnahmedefinitionen kennen.

Mal sehen, was einer von ihnen, "zip", macht.

>>> 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.

Es scheint, dass das i-te Element der angegebenen Sequenzdaten als Tap aufgeführt wird. Lass es uns benutzen.

>>> zip((1, 2, 3), [True, False, None], "ABC")
[(1, True, 'A'), (2, False, 'B'), (3, None, 'C')]

Eine Liste der Taples mit dem ersten Element, Taples mit dem zweiten Element und Taples mit dem dritten Element wird angezeigt.

__builtins__ scheint ein Modul zu sein, aber was ist, wenn Sie__builtins__ in eine andere Definition ändern? Ich werde ein wenig damit spielen.

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

Hoppla. Die eingebaute Funktion kann nicht mehr verwendet werden. Beim Versuch, eine Funktion aufzurufen, sucht der Python-Interpreter nach einer Funktionsdefinition in der lokalen Definition (local ()) oder einer globalen Definition (globals ()), andernfalls verfügt er über eine integrierte Funktionsdefinition in der globalen Definition __builtins__. Es scheint, dass es nach irgendwelchen sucht und die Funktion aufruft.

Darüber hinaus scheint die integrierte Funktion, die nicht mehr verwendet werden kann, durch Löschen von (del) __builtins__ neu definiert zu werden.

>>> 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.
(Ausgelassen, weil es lang ist)

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']

Der angezeigte Inhalt hat sich seit dem ersten Versuch geändert, aber es scheint, dass er problemlos verwendet werden kann.

Übrigens ist "name" in der globalen Definition eine globale Variable, die "__main __" enthält, wenn sie als Befehl gestartet wird, und den Paketnamen, wenn sie als Paket importiert wird. Sie sehen die Beschreibung if __name__ == '__ main __': in Ihrem Python-Skript.

>>> __name__
'__main__'

Recommended Posts

Untersuchen Sie integrierte Funktionen (integrierte Standardfunktionen) von Globals
Eingebaute Funktionen
Integrierte Funktionen von Python
In Python integrierte Funktion ~ Zip ~
Integrierte Funktionen von Wrap Python
Studie aus Python Hour3: Funktionen