Vấn đề về import trong python?

Cho mình hỏi về vấn đề import.

Với đoạn code bên dưới, nếu thay line 1 bằng import tkinter sẽ báo lỗi. Mình được dạy là 2 cách import này là như nhau, đều là import toàn bộ thư viện, vậy có gì sai ạ ?

Nếu đã import toàn bộ, tại sao phải dùng line2 mới chạy được ?

Mong mọi người giúp đỡ

from tkinter import*
from tkinter import messagebox
def hello():
	messagebox.showinfo('Xin Chao','Cac ban khoe khong')
	
tk = Tk()
btn = Button(tk, text ='click here', command = hello)
btn.pack()
from xxx import *
import xxx

Đều import toàn bộ tuy nhiên lại có sự khác biệt. Lệnh đầu tiên sẽ import toàn bộ và những thứ được import sẽ xuất hiện global trong current context
Lệnh import thứ hai cũng tương tự nhưng tất cả những thứ được import sẽ phải truy cập thông qua biến xxx
Thật ra nếu không làm việc với Python bạn cũng có thể tự suy luận được dựa vào cú pháp mà.

3 Likes

bạn xem hàm hello() có lệnh sau:

messagebox.showinfo('Xin Chao','Cac ban khoe khong')

Nếu bạn không import hàng thứ 2, thì messagebox ở đâu ra để python nó hiểu là bạn sử dụng tên messagebox? Khi bạn muốn sử dụng 1 class nào trong namespace nào thì bạn phải gõ cả namespace đứng trước. Trong trường hợp này nếu tinker thì bạn phải đánh tkinter.messagebox nếu không sử dụng hàng thứ 2 trong phần import.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?