eine Funktion in Python definieren wird es aufrufbar machen. Was es nach der Fertigstellung tut, ist nur relevant, wenn Sie es tatsächlich aufrufen (mit dem() -Operator). Ohne Definition einer return-Anweisung gibt die Funktion None zurück. Wie hier beschrieben: Python -- return, return None, and no return at all.
Wenn Sie die mitgelieferten Befehle ausführen, geht es in die Luft, sobald Sie versuchen, die Funktion func aufzurufen, da etwas nicht definiert ist. Ich befürchte, dass pycharm einige ungültige Hervorhebungen macht. d und d2 sind aufrufbar, d3 jedoch nicht. Da Sie beim Zuweisen von d3 func aufrufen, ist es hier fehlerhaft und d3 existiert nicht.
Python 2.7.12 (default, Oct 10 2016, 12:50:22)
[GCC 5.4.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
dlopen("/usr/lib/python2.7/lib-dynload/readline.dll", 2);
import readline # dynamically loaded from /usr/lib/python2.7/lib-dynload/readline.dll
>>>
>>> def func():
... something
...
>>> d = { 'func': func }
>>> d['func']()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in func
NameError: global name 'something' is not defined
>>>
>>> d2 = { 'type': { 'func': func } }
>>> d2['type']['func']()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in func
NameError: global name 'something' is not defined
>>>
>>> d3 = { 'type': { 'func': func() } }
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in func
NameError: global name 'something' is not defined
>>> d3['type']['func']()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd3' is not defined
Sowohl 'd2 ['func']' und 'd3 ['func']' sollten Fehler werfen. Sie greifen nicht vorhandene Schlüssel ('func'). Du meinst 'd2 ['type'] ['func']' und 'd3 ['type'] ['func']'? – Abdou
Ihre letzten beiden Beispiele sollten nicht funktionieren. '" func "' ist kein direkter Schlüssel von 'dict()' –
Entschuldigung, ich habe gerade aktualisiert. –