Computer >> Máy Tính >  >> Lập trình >> Python

Sự khác biệt giữa các hàm dir (), global () và local () trong Python là gì?


local () trả về cho bạn một từ điển của các biến được khai báo trong phạm vi cục bộ trong khi freeship () trả về cho bạn một từ điển các biến được khai báo trong phạm vi toàn cục. Ở phạm vi toàn cầu, cả local () và global () đều trả về cùng một từ điển cho không gian tên chung. Để nhận thấy sự khác biệt giữa hai hàm, bạn có thể gọi chúng từ bên trong một hàm. Ví dụ:

def fun():
    var = 123
    print "Locals: ", locals()
    print "Vars: ", vars()
    print "Globals: ", globals()
fun()

Điều này sẽ cho kết quả:

Locals:  {'var': 123}
Globals:  {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'fun': <function fun at 0x00000000
037E3DD8>, '__doc__': None, '__package__': None}

vars () trả về từ điển của không gian tên hiện tại (nếu được gọi không có đối số) hoặc từ điển của đối số. Sự khác biệt chính giữa local () và vars () là vars () cũng có thể lấy một đối số và trả về từ điển cho đối tượng được yêu cầu. Ví dụ:nếu bạn muốn các thuộc tính của một đối tượng trong một dict, bạn có thể chuyển đối tượng đó và lấy thuộc tính dict cho trường hợp đó.

Hàm vars () cho đối tượng tương tự như thuộc tính __dict__ cho cùng một đối tượng. __dict__ trả về tất cả các thuộc tính đã xác định cho đối tượng. Ví dụ:

class A():
    def __init__(self, id):
        self.id = id
a = A(1)
print "__dict__: ", a.__dict__
print "vars(a): ", vars(a)

Điều này sẽ cho kết quả:

__dict__:  {'id': 1}
vars(a):  {'id': 1}