methode replace mögliche warum?

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
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

hallo miteinander
eine frage zu dieser code ausschnitt

Code: Alles auswählen

b = os.path.join(a, 'excourse.py').replace('/', '=')
warum ist hier die replace methode möglich? replace ist doch ein built-in function von string.

gruss kostonstyle
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

bin gerade mit replace am experentieren
folgendes:

Code: Alles auswählen

c = 'Hallo / Du / super / genie'.replace('/', '*')
c = 'Hallo / Du / super / genie'
c.replace('/', '*')
warum funktioniert die letzte zwei Zeile nicht oder erste schon?
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Strings sind immutable und os.path.join gibt einen String zurück.

Den Rest musst du selber herausfinden.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

ok....es leuchtet mir nun einbisschen ein
nun wieso kann man replace einfach hinten an schreiben, was ist das für eine art von methode?

noch eine frage zu module, wenn ich eine module einbinde, der in unter mehrere pakete befindet, welche __init__.py file für der compiler aus?

gruss kostonstyle
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

noch eine frage zu module, wenn ich eine module einbinde, der in unter mehrere pakete befindet, welche __init__.py file für der compiler aus?
bitte?

replace ist eine Methode.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

Replace ist eine Methode, aber warum kann man ein einfach hinter einen string .replace schreiben?
Ein Beispiel zu module frage

Code: Alles auswählen

package1->__init__.py
    |
    |
    package2->__init__.py
         |
         |
         package3->__init__.py
         Hier befindet zum Bespiel das Module math.
ich binde nun in file.py das module math ein. welche __init__.py datei von diesen 3 pakete führt der compiler aus?

Gruss kostonstyle
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

kostonstyle hat geschrieben:ok....es leuchtet mir nun einbisschen ein
nun wieso kann man replace einfach hinten an schreiben, was ist das für eine art von methode?

Code: Alles auswählen

x = a()
y = x.b()
z=x.c()
ist das selbe wie

Code: Alles auswählen

z = a().b().c()
Du kannst also mit dem Rückgabewert von a() sofort weiter machen, ohne ihn in eine zwischen-variable speichern zu müssen.
kostonstyle hat geschrieben: noch eine frage zu module, wenn ich eine module einbinde, der in unter mehrere pakete befindet, welche __init__.py file für der compiler aus?
In sys.path() stehen mehrere Verzeichnisse, die nacheinander nach dem gesuchten Modul durchsucht werden. Der erste Treffer zählt.
Bottle: Micro Web Framework + Development Blog
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

aha, dann führt es nur die __init__.py datei aus, indem sich das module befindet?
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Module befinden sich nicht in py-Dateien. py-Dateien sind Module. Oder teile von Paketen.

Wenn du mit "import rtfm" ein Modul mit dem Namen "rtfm" importierst, dann sucht Python in allen Verzeichnissen in sys.path so lange, bis er entweder eine Datei namens "rtfm.py" oder ein Verzeichnis mit dem Namen "rtfm" und einer "__init__.py" Datei findet. Je nach dem, was er zuerst findet, wird entweder die rtfm.py oder die rtfm/__init__.py aus geführt.

Normalerweise sind Modulnamen aber einzigartig und es sollte keine Frage der Reihenfolge der sys.path Einträge sein, was importiert wird. Die Suche ist nicht rekursiv, das heißt "from rtfm import dau" importiert etwas anderes als "import dau"
Bottle: Micro Web Framework + Development Blog
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

Code: Alles auswählen

Normalerweise sind Modulnamen aber einzigartig und es sollte keine Frage der Reihenfolge der sys.path Einträge sein, was importiert wird. Die Suche ist nicht rekursiv, das heißt "from rtfm import dau" importiert etwas anderes als "import dau"
wenn das module dau im paket rtfm befindet, wird aber zuerst __init__.py ausgeführt und danach erst dau oder?
jetzt verstehe ich es langsam from ist immer ein paket und import kann eine Klasse oder eine Funktion sein.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Defnull hat geschrieben:

Code: Alles auswählen

x = a()
y = x.b()
z=x.c()
ist das selbe wie

Code: Alles auswählen

z = a().b().c()
Nein. Du meinst:

Code: Alles auswählen

z = y.c()
MfG
HWK
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

also __init__.py wird ausgeführt ein module von package importiert wird. Damit sämtlichen Variablen initialisiert.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

kostonstyle hat geschrieben:also __init__.py wird ausgeführt ein module von package importiert wird. Damit sämtlichen Variablen initialisiert.
Sollte ich dir hiermit zu nahe treten bedauere ich das, aber wenn du Legastheniker sein solltest dann schreib es in die Signatur, so dass man sich darauf einstellen kann. Sollte das nicht der Fall sein dann bitte ich dich, deine Beiträge so zu verfassen, dass zumindest elementare Grammatikregeln eingehalten werden ("Dieser Satz kein Verb").

Du bist hier nicht im Chat und kannst dir somit mit dem Formulieren durchaus etwas Zeit lassen. Es hilft weder dir noch uns wenn wir raten müssen, was du mit deinem Beitrag eigentlich gemeint hast.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

entschuldige für die unverständliche Formulierung. Deutsch ist nicht meine Muttersprache. Habe auch vergessen, den Satz nochmals durch zulesen.
Also nochmals von Anfang
Wenn ich ein Module importiere und der befindet sich im Paket xy, dann wird zuerst die __init__.py ausgeführt um die Variablen zu aktualisieren. Nein ok habe jetzt die Frage selber beantwortet.
Vielen Dank leute
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

kostonstyle hat geschrieben:Deutsch ist nicht meine Muttersprache.
Dann bin ich mal so frei, dich darauf aufmerksam zu machen, dass es ein Modul (ohne e), aber zwei Module (mit e) sind, und das das Geschlecht neutral ist, also "das Modul", und nicht "der Modul".
kostonstyle hat geschrieben:Wenn ich ein Module importiere und der befindet sich im Paket xy, dann wird zuerst die __init__.py ausgeführt um die Variablen zu aktualisieren.
Naja, in der __init__.py kann man auch andere Sachen machen als "Variablen aktualiseren", genau genommen "alles" ;-)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dauerbaustelle hat geschrieben:Naja, in der __init__.py kann man auch andere Sachen machen als "Variablen aktualiseren", genau genommen "alles" ;-)
Man sollte sich das aber IMHO zweimal ueberlegen.
Das gilt auch fuer "Variablen aktualisieren", eigentlich sogar insbesondere dafuer, denn aktualisieren riecht fuer mich verdaechtig nach Logik an einer Stelle an der sie nicht wirklich erwartet wird.
Antworten