Probleme mit PyQT, Python und Shell-commands [Anfänger]

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
deets

@jerch

"Closures are a poor man's objects. And objects are a poor man's closures".

Partial benutzt ein Objekt, und erreicht dadurch die Aufbewahrung des Zustandes. Aber eben *kein* Closure. Wenn du die Begriffe zur Unkenntlichkeit aufweichen willst, wem ist damit geholfen? Das alles ist irgendwie programmieren...
lunar

@jerch: deets hat bereits festgestellt, dass Du den falschen Schluss aus "Beispiel 2" gezogen hast. Es folgt daraus eben nicht, dass "partial()" "closure-like" ist. Du hast vielmehr gezeigt, dass man mit Funktionsabschlüssen Objektexemplare implementieren kann (und umgekehrt natürlich). Was Du mit "Zwischennamensraum" bezeichnet hast, ist nichts anderes, als der Namensraum eines Objektexemplars (im Falle von Python alle an "self" gebundenen Namen).

"partial()" selbst ist dennoch kein Funktionsabschluss, und dem auch nicht ähnlicher als jedwedes andere Objekt, schon weil das wesentliche konstituierende Element eines Funktionsabschlusses, nämlich das Vorkommen freier Variablen, bei der Verwendung von "partial()" gar nicht gegeben ist. Auch ist dieser "Zwischennamensraum" nicht die eigentliche Funktionalität [1] eines Funktionsabschlusses, sondern nur ein ganz normaler Namensraum, den man halt zusammen mit einem Funktionsabschluss nutzen kann (beispielsweise um Objekte zu implementieren).

Die Funktionalität eines Funktionsabschlusses besteht - nur um das nochmals klarzustellen - ausschließlich in der Bindung freier Variablen in einem Ausdruck an den umgebenden Namensraum. Dass Funktionsabschlüsse benutzt werden können, um Objekte zu implementieren, und diese Konzepte mithin von gleicher Mächtigkeit sind, ist nicht die konstituierende Eigenschaft eines Funktionsabschlusses. Anders gesagt, der Terminus "Funktionsabschluss" wird nicht darüber definiert, dass man damit Objekte implementieren kann. Der Zusammenhang zwischen "partial()" und einem Funktionsabschluss ist also in etwa derselbe wie zwischen zwei Programmiersprachen: Man kann jede Sprache A in jeder anderen Sprache B implementieren (vorausgesetzt, beide sind gleich mächtig), doch trotzdem sind A und B noch immer unterschiedliche Sprachen.
Antworten