h-Datei analog zu C ?

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
maksimilian
User
Beiträge: 86
Registriert: Freitag 2. November 2018, 20:59

Hallo Ihr,

ich möchte in einem Projekt, welches aus mehreren py-Dateien besteht, globale Konstanten zentral definieren. Eine Möglichkeit wäre natürlich, eine Text-Datei zu definieren und diese einzulesen. Gibt es eine elegantere Möglichkeit ?

maksimilian
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein Modul, in dem die stehen, und das du dann entsprechend ueberall importierst ist die Loesung, die man in Python ueblicherweise waehlt.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Normalerweise macht man das via import.

Da wäre dann einmal die Datei mit den Einstellungen. Nennen wir sie settings.py

Code: Alles auswählen

DB_USER = 'me'
DB_PASSWORD = 'geheim'
DB_CONNECTION = ''
Und jetzt der Code der die Daten verwendet

Code: Alles auswählen

import settings

print(settings.DB_USER)
maksimilian
User
Beiträge: 86
Registriert: Freitag 2. November 2018, 20:59

@ deets, /me

Danke für Eure Antworten. Ich wollte nur wissen, ob es außer dem Modulkonzept eine weitere Möglichkeit gibt. Leider muss man die importierten Settings immer mit dem Namen der Setting-Datei als Präfix versehen. Python ist halt ein anderes Konzept als C.

maksimilian
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Muss man nicht. from modul import KONSTANTE geht auch. Aber nicht * importieren!!!
maksimilian
User
Beiträge: 86
Registriert: Freitag 2. November 2018, 20:59

Nun ja, da muss man abwägen. Entweder für alle im Skript verwendeten Konstanten den Präfix oder entsprechend viele Importanweisungen einfügen. Danke auch für diesen Hinweis

maksimilian
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

maksimilian hat geschrieben: Dienstag 27. November 2018, 10:32... viele Importanweisungen einfügen ...
Es geht auch so:

Code: Alles auswählen

from foo import bar, baz, zig, zag
In specifications, Murphy's Law supersedes Ohm's.
maksimilian
User
Beiträge: 86
Registriert: Freitag 2. November 2018, 20:59

Na gut, das ist schon besser. Ich möchte es jetzt dabei bewenden lassen und aus einer Mücke keinen Elefanten machen :) Es gibt mit Python sicher gravierendere Probleme (z.B. dieses verdammte Indentation).

maksimilian
Benutzeravatar
snafu
User
Beiträge: 6862
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

maksimilian hat geschrieben: Dienstag 27. November 2018, 17:19 Es gibt mit Python sicher gravierendere Probleme (z.B. dieses verdammte Indentation).
Die erzwungenen Einrückungen sehe ich nicht als Fluch, sondern als Segen. Gerade bei simplen Editoren ist es viel einfacher, nur die Einrückungen zu verschieben, wenn man den Code neu strukturiert. Viel besser als Klammerpärchen jedes Mal neu anordnen zu müssen.
Benutzeravatar
__blackjack__
User
Beiträge: 14034
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Was mir bei solchen Aussagen immer ein wenig Angst macht ist wie der Code bei den Leuten wohl aussehen mag, die das als ein so grosses Problem ansehen, denn ich bemerke die erzwungene Einrückung überhaupt nicht, weil ich auch in den Programmiersprachen mit Klammern sauber einrücke (oder der Editor/die IDE macht das eh schon automatisch), weil ich das ja auch selber später immer noch lesen und verstehen möchte.

Das ist also nur wirklich erzwungen wenn man freiwillig nicht sowieso schon einrückt. Einrückung ist dazu da um dem Leser die Code-Struktur zu vermitteln. Im Gegensatz zu vielen anderen Programmiersprachen glaubt halt auch der Compiler dem Programmierer. (Ist ein Zitat von irgendwem :-))
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

maksimilian hat geschrieben: Dienstag 27. November 2018, 17:19 Na gut, das ist schon besser. Ich möchte es jetzt dabei bewenden lassen und aus einer Mücke keinen Elefanten machen :) Es gibt mit Python sicher gravierendere Probleme (z.B. dieses verdammte Indentation).
Genau. Weil Einrueckungen so total unwichtig sind, definieren sich die Leute in Sprachen die sie nicht brauchen, und alles auf eine Zeile schreiben koennten, droelfzig verschiedene Coding-Conventions und streiten sich darum mehre Jahrzehnte.
maksimilian
User
Beiträge: 86
Registriert: Freitag 2. November 2018, 20:59

Hallo Ihr, bitte den Ball flach halten. Ich wollte mit meiner in Klammern gesetzten Anmerkung keinen Sturm auslösen. Nur zur Klarstellung, ich habe schon immer meine Implementierungen klar strukturiert (und kommentiert!). Nur ist es sehr ärgerlich, wenn mir in einem Python-Skipt im Editor (bei mir Notepad++) wieder mal ein Blank oder Tab reingeraten ist und die Editierung wiederholt werden muss. Für mich wäre das Verwenden von Klammern und Semikolons kein Problem. Vielleicht gibt es einen komfortablen Editor, welcher Tabs gleich bei der Eingabe durch eine definierte Zahl von Blanks ersetzt, und ich nur zu faul zum Suchen bin.

maksimilian
Benutzeravatar
noisefloor
User
Beiträge: 4187
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Vielleicht gibt es einen komfortablen Editor, welcher Tabs gleich bei der Eingabe durch eine definierte Zahl von Blanks ersetzt, und ich nur zu faul zum Suchen bin.
Notepad++ kann das. Muss du nur in den Einstellungen so einstellen. Du musst also noch nicht mal Suchen, sondern einfach nur machen...

Einrückungen sind nun mal _essentiell_ wichtig in Python. Wenn dich das stört, dann ist Python halt nicht deine Sprache.

Gruß, noisefloor
Benutzeravatar
snafu
User
Beiträge: 6862
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Man kann bei fast allen Editoren (den Standard Windows-Editor mal ausgenommen) einstellen wie er sich bei Tabs verhalten soll. Also ab in die Einstellungen und Leerzeichen statt Tabs wählen und die Anzahl auf 4 setzen. Und wenn du schon da bist: Zeilenlänge ist 80. Man kann sich über die Einstellungen eine Begrenzung dafür anzeigen lassen.

Ich nutze übrigens auch unter Windows GEdit. Findet sich bei Interesse hier: https://wiki.gnome.org/Apps/Gedit#Download
Benutzeravatar
ThomasL
User
Beiträge: 1378
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

maksimilian hat geschrieben: Mittwoch 28. November 2018, 12:32 Vielleicht gibt es einen komfortablen Editor, welcher Tabs gleich bei der Eingabe durch eine definierte Zahl von Blanks ersetzt
Nicht nur einen, sogar viele, einer davon ist z.B. Sublime Text https://www.sublimetext.com
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten