Übernahme von Variablen zur Verwendung in importierte Module

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@pythonscript: Das Schlüsselwort `def` leitet eine Funktionssignatur ein. Eine Funktion ist keine Variable. Zwar ist eine Funktion allgemein gesprochen ein Name, der wie jeder andere auch in andere Module importiert werden kann und auch ein beliebiges Objekt binden kann, aber ich habe irgendwie das Gefühl, du hälst `def` für eine Art `#define` in C, wenn du "Variable" sagst, und das ist schlichtweg falsch. ;)

EDIT: Ansonsten schließe ich mich meinen Vorrednern an. Programmieren auf gänzliche neuem Terrain hat zwar anfangs häufig was mit Ausprobieren zu tun, aber deine hier präsentierten wild geratenen Versuche zeugen vielleicht von einer ernstgemeinten Herangehensweise, stellen aber sicher kein ernstzunehmendes Grundverständnis hinsichtlich des Themas "Programmierung" dar. Wenn du halbwegs wissenschaftlich an die Sache herangehen willst (deiner Ausdruckweise nach vermute ich mal einen akademischen Hintergrund ;P ), dann arbeite doch ab und zu mal mit Querverweisen (sprich: Links), wo klar wird, dass du dich wirklich mit der von dir benannten Literatur beschäftigt hast und man zudem einschätzen könnte, woraus du genau deine Schlüsse gezogen hast.
pythonscript
User
Beiträge: 10
Registriert: Samstag 2. Juli 2011, 19:12

Vielen Dank für den Hinweis. Vielleicht hab ich mich auch missverständlich ausgedrückt; habe aber gerade auch nicht mehr gefunden, wo ich Def als eine Variable bezeichnet habe, sonst hätte ich das gern korrigiert. Ich kann mich eigentlich auch nur daran erinnern davon gesprochen zu haben, dass bei Def die Variablen MIT übergeben werden oder habe ich das falsch verstanden (der Hinweis kam ja letztlich von cofi), dann korrigiert mich bitte.

Was meine Qüllen anbelangt, so orientiere ich mich derzeit im wesentlichen an Kaiser & Ernesti 2008: Python – Das umfassende Handbuch, Summerfield 2008, Programming in Python 3 (ich weiss, das ist eine andere Version, aber trotzdem), sowie Lutz & Ascher 2007, Einführung in Python nebst der mitgelieferte Python v2.6.5 documentation und diversen Internetqüllen, wie python.org

Die Bücher sind zwar nicht die allerneusten, aber sie scheinen mir seriöse Quellen. Wenn das nicht der Fall ist, dann korrigiert mich bitte ebenfalls.

Vielleicht fasse ich den Begriff Funktion lediglich etwas anders, da es bei mir auch darum geht Funktionen anderer Software zuzugreifen (Nähere Infos hierzu unter: Writing Geoprocessing Scripts With ArcGIS). Aber ich denke das Prinzip ist das gleiche, respektive in Anlehnung an den Funktionsbegriff.

die

Code: Alles auswählen

arcpy.AddMessage
-Zeilen waren jetzt nur Platzhalter und mein Test ob die Variablen suaber übergeben werden, da würde dann letztlich der ausführende Code rein kommen versteht sich


Aber um jetzt einfach auch mal bei der Sache zu bleiben (ich habe das Gefuehl sie geraet immer wieder aus dem eigentlichen focus) vielleicht noch kurz zu den von mir "wild geratenen Versuch", als den er ja bezeichnet wird. Eigentlich habe ich ja den einen (also singulären) Versuch hier zur Diskussion gestellt:
http://www.python-forum.de/viewtopic.ph ... 51#p202751
Danach kamen aber in erster Linie allgemeine Kritik, die meine grundsätzliche Kompetenz in Frage gestellt hat (ich habe dann ja eingestanden, dass ich kein Vollprofi bin), die Kritik hat sich nun aber nur bedingt auf meinen Code bezogen.
Ist der Versuch denn jetzt so wirr oder "unsauber"´programmiert? Ich hätte jetzt gedacht das sei von der Realisierung jetzt eigentlich so in Ordnung oder doch nicht?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Die Kritik hat sich eher weniger an deiner Person abgearbeitet, sondern das ist eher generell eine Schlechte Idee™.

Wenn es um solche "Debugging" Funktionen geht, kann man sich mittels `globals()` und `locals()` Dictionaries aller Namen erstellen lassen.
Dass das nicht gleich kam, hat schlicht und einfach damit zu tun, dass hier regelmässig Anfänger aufschlagen, die Ganz Schleunigst™ mit ihrem Problem fertig werden müssen (und 2 Monate danach am besten nochmal mit demselben Problem antanzen) und trotz aller Warnungen problematische Sachen als "passt perfekt" übernehmen.

Wenn es aber nicht um Debugging geht, das per se tief in den Interna graben muss, sollte man das aber lassen, wenn man keine gute Begründung hat. Eine weitere Idee, die aber auch eher suboptimal ist, ist, dass man sich ein Dictionary mit einer "Umgebung" zusammenstellt und die den Funktionen übergibt, schlägt in diesselbe Kerbe wie `globals()` und `locals()` - und prinzipiell auch wie der frühere Vorschlag der Klasse - von oben, aber ist etwas selektiver.

Zu den Büchern: Das Galileo-Buch hat hier einen eher schlechten Ruf, werf mal die Forensuche nach "Galileo" und "Openbook" an.
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

OT: *ugh* ESRI ... wer bei denen die Python-Schnittstelle verbrochen hat, gehört mit mindestens 10 Jahren Java bestraft ;) :D
pythonscript
User
Beiträge: 10
Registriert: Samstag 2. Juli 2011, 19:12

@frabron: Und ich werde die Vermutung nicht los, dass sich der Post hier auch deswegen bisweilen ein bischen im Kreis dreht; obwohl man eigentlich kaum eine andere Chance hat als die ESRI-Macken irgendwie zu umschiffen und auszubueglen.
Ich versuche auch schon seit einer geschlagenen Woche Matplotlib in ArcGIS zum laufen zu bringen; auch das fordert wieder jede Menge Improvisationskuenste, aber das ist ein anderes Thema....
Antworten