Seite 1 von 1

Variable erst später deklarieren

Verfasst: Mittwoch 19. Dezember 2007, 23:34
von wuf
Hallo Forum-Freunde

Ich habe folgende Frage an Euch:

Gibt es in Python eine Möglichkeit eine
Variable zu verwenden bevor sie deklariert
wurde. In diesem Fall ist die Variable die
Liste mit dem Namen unter_liste.

Zum Beispiel:

Code: Alles auswählen

# Hier wird die Hauptliste deklariert

haupt_liste = [
    133,
    'hallo',
    unter_liste,
    ]

# Hier wird erst die Unter-Liste deklariert

unter_liste = [
    Wert-1,
    Wert-2,
    Wert-x
    ]
Gruss wuf :wink:

Verfasst: Mittwoch 19. Dezember 2007, 23:49
von Hobbes Hobson
Warum drehst du das nicht einfach um?


bzw

Code: Alles auswählen

# Hier wird die Hauptliste deklariert
unter_liste = []

haupt_liste = [
    133,
    'hallo',
    unter_liste,
    ]

# Hier wird erst die Unter-Liste deklariert

unter_liste.append(
    Wert-1,
    Wert-2,
    Wert-x
    )

oder was möchtest du erreichen?

Verfasst: Donnerstag 20. Dezember 2007, 00:04
von mitsuhiko
Du kannst sowas machen:

Code: Alles auswählen

>>> unter_liste = []
>>> liste = [1, 2, unter_liste, 3]
>>> unter_liste[:] = [4, 5, 6]
>>> liste
[1, 2, [4, 5, 6], 3]
Oder du drehst es einfach um ;-)

Verfasst: Donnerstag 20. Dezember 2007, 01:05
von wuf
Hallo Hobbes Hobson und mitsuhiko

Erstmals besten Dank für Eure sofortigen Antworten!

Ich bin dran mein eigenes auf Tkinter basierendes
Menü-Modul zu erstellen. Es sollte möglichst einfach
und übersichtlich konfigurierbar sein. Auch soll es
möglich sein den einzelnen Menüitems, wenn gewünscht,
ein farbige Grafik-Image hinzuzufügen. Hier geht es
jetzt hauptsächlich darum die einzenen Menüs, Unter-
menüs und Unter-Unter-Menüs zu konfigurieren. Da
möchte ich auf eine Art Top-Down Struktur. Zuerst
Hauptmenu dann die Untermenu zum Hauptmenu und
weiter die Untermenüs zu den Untermenüs des Haupt-
menü. Ihr sieht die Beschreibung des Konfigurier-
ablauf wirk schon verwirrend.

Natürlich sind Eure Ideen auch umsetzbar. Für meine
Anwendung dachte ich nur es gäbe eine Möglichkeit
dem Compiler mittels einer Syntax gesagt zu können,
das der ensprechende Listenname oder Variablenname
erst später angegeben wird. Ich hoffe, dass ich mich
einigermassen verständlich ausdrücken konnte.

Hier etwa meine Vorstellung in einer Pseudokode ähnlichen
Darstellung:

Code: Alles auswählen

#~~ Konfiguration des Hauptmenü
haupt_menu = [{
    menu_name_1: sub_menu_1,
    menu_name_2: sub_menu_2,
    menu_name_3: sub_menu_3,
    }]

#~~ Konfiguration des 1. Untermenüs
#   vom Hauptmenü
sub_menu__1 = [{
    sub_menu_name_1: action,
    sub_menu_name_2: action,
    sub_menu_name_1: sub_menu_a,
    }]

#~~ Konfiguration des 2. Untermenüs
#   vom Hauptmenü
sub_menu__2 = [{
    sub_menu_name_1: action,
    sub_menu_name_2: action,
    sub_menu_name_1: action,
    }]

#~~ Konfiguration des 3. Untermenüs
#   vom Hauptmenü
sub_menu__3 = [{
    sub_menu_name_1: action,
    sub_menu_name_2: action,
    sub_menu_name_3: action,
    }]

#~~ Konfiguration des erweiterten Untermenüs
#   von Untermenu-1
sub_menu_a =  [{
    sub_menu_name_1: action,
    sub_menu_name_2: action,
    sub_menu_name_3: action,
    }]
Gruss wuf :wink: [/quote]

Verfasst: Donnerstag 20. Dezember 2007, 07:49
von Pablo Escobar
naja du könntest deine untermenüs auslagern ^^
sprich für jede menü ebene eine datei.py einrichten
und die sachen entsprechend importieren
so würdest du es ein bisserl dezentralisieren
hättest dafür aber eventuell eine große anzahl an dateien
die frage ist nur ob das der feine stil ist und ob das ein
akzeptabler umweg wäre, da es dir bei deinem "Top-Down" Problem
nicht wirklich weiterhilft °_^

Verfasst: Donnerstag 20. Dezember 2007, 09:11
von Hyperion
Wieso klammerst Du Dich an Python-code? Wenn Du das ganze so gestalten willst, wie vorgestellt, dann nimm XML oder nen INI Format und definiere Dir da Deine Struktur! Da spielt die Reihenfolge ja keine Rolle.

Verfasst: Donnerstag 20. Dezember 2007, 10:04
von BlackJack
Ich wollte nur noch mal anmerken, dass es in Python keine Deklaration gibt [1]_. Code wird von oben nach unten abgearbeitet und wenn ein Name verwendet wird, dann muss der natürlich vorher an ein Objekt gebunden werden.

.. _[1] Bis auf eine sehr Böse™ Ausnahme, die ich hier totschweige, die aber auch nicht zur Lösung des Problems beiträgt.

Verfasst: Donnerstag 20. Dezember 2007, 10:08
von keppla
BlackJack hat geschrieben:[1] Bis auf eine sehr Böse™ Ausnahme, die ich hier totschweige, die aber auch nicht zur Lösung des Problems beiträgt.
Aber du erwartest jetzt nicht, dass wir dich nicht nerven, bis du es verrätst? Argh, Neugier kann so grausam sein...
Vielleicht nur ein Tipp?

Verfasst: Donnerstag 20. Dezember 2007, 10:22
von BlackJack
Hm, vielleicht kann ich ja vom Thema ablenken, indem ich etwas über meine Weltanschauung sage. Also völlig OT: Ich bin Globalisierungskritiker. ;-)

Edit: Wobei mir gerade noch eine Ausnahme einfällt: Ein ``from __future__ import ...`` kann man auch als Deklaration ansehen.

Verfasst: Donnerstag 20. Dezember 2007, 11:16
von keppla
BlackJack hat geschrieben:Hm, vielleicht kann ich ja vom Thema ablenken, indem ich etwas über meine Weltanschauung sage. Also völlig OT: Ich bin Globalisierungskritiker. ;-)
Ja, ich verstehe deine Kritik ;)