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