Seite 1 von 1

from tkinter import *

Verfasst: Montag 9. August 2021, 15:48
von timm4444
Ich habe eine Frage: Wieso ist

Code: Alles auswählen

from tkinter import *
schlecht und wie kann man das verbessern?

Re: from tkinter import *

Verfasst: Montag 9. August 2021, 16:05
von rogerb
@timm4444,

weil dann alle Namen die im Modul tkinter definiert sind, auch im aktuellen Modul definiert sind.

Man kann dann nicht so einfach nachvollziehen von welchem Modul diese Namen kommen,
welche Namen eigentlich importiert wurden und
ob dadruch vielleicht schon existierende Namen überschrieben wurden.

Zum Beispiel:
Im aktuellen Modul machst du:

Code: Alles auswählen

def cool_func():
    print("Cool!")
Jetzt machst du:

Code: Alles auswählen

from other_module import *
und in dem anderen Modul gibt es die Funktion auch:

Code: Alles auswählen

def cool_func():
    print("Not so Cool at all!")
Da wirst du dich vielleicht wundern, warum sich deine Funktion auf einmal anders verhält.

Daher sollte man zum Beispiel folgendes machen:

Code: Alles auswählen

import tkinter as tk

app = tk.Tk()
Dadurch sind alle Objekte aus dem tkinter Modul über tk. ansprechbar

Re: from tkinter import *

Verfasst: Montag 9. August 2021, 16:16
von timm4444
Danke für die gute Erklärung mit bsb. Ich sehe gerade, dass das PyCharm auch so geändert hat.