Hướng dẫn python import global variable from another file - python nhập biến toàn cục từ một tệp khác

Mặc dù tôi thực hiện bài kiểm tra theo ý tưởng của @robertspierre để đặt tất cả các biến toàn cầu vào tệp GLV.py và sau đó nhập nó vào các tệp khác nơi nó được sử dụng, mã demo được cung cấp dưới đây, hy vọng nó sẽ giúp:

  1. Tệp biến toàn cầu, GLV.PY:
# glv.py
glvB = True
glvA = 100
glvS = "tiger"
glvList = [1, 2, 3]
glvTuple = (1, "a")
glvDict = {"Name": "tiger", "age": 100}
  1. sub1.py, đó là một tệp sẽ nhập tệp GLV.py. Hai chức năng được xác định để hiển thị và thay đổi dữ liệu biến toàn cầu trong glv.py, showdata () và thay đổi (),
# sub1.py
import glv


def showData():
    print(f"*****glv in sub1*****\n"
          f"glvB={glv.glvB}\n"
          f"glvA={glv.glvA}\n"
          f"glvS={glv.glvS}\n"
          f"glvList={glv.glvList}\n"
          f"glvTuple={glv.glvTuple}\n"
          f"glvDict={glv.glvDict}\n")


def changeData():
    glv.glvB = False
    glv.glvA = 200
    glv.glvS = "bactone"
    glv.glvList = [4, 5, 6]
    glv.glvTuple = (2, "b")
    glv.glvDict = {"Name": "bactone", "age": 0}
  1. Sub2.py là một tệp khác:
# sub2.py

import glv


def showData():
    print(f"*****glv in sub2*****\n"
          f"glvB={glv.glvB}\n"
          f"glvA={glv.glvA}\n"
          f"glvS={glv.glvS}\n"
          f"glvList={glv.glvList}\n"
          f"glvTuple={glv.glvTuple}\n"
          f"glvDict={glv.glvDict}\n")


def changeData():
    glv.glvB = True
    glv.glvA = 300
    glv.glvS = "bactone"
    glv.glvList = [7, 8, 9]
    glv.glvTuple = (3, "c")
    glv.glvDict = {"Name": "bactone1", "age": 10}
  1. Cuối cùng, chúng tôi kiểm tra biến toàn cầu trong main.py:
import glv
import sub1
import sub2


def showData():
    print(f"*****initial global variable values*****\n"
          f"glvB={glv.glvB}\n"
          f"glvA={glv.glvA}\n"
          f"glvS={glv.glvS}\n"
          f"glvList={glv.glvList}\n"
          f"glvTuple={glv.glvTuple}\n"
          f"glvDict={glv.glvDict}\n")


if __name__ == "__main__":

    showData()  # show initial global variable
    sub1.showData()  # show global variable in sub1
    sub1.changeData()  # change global variable in sub1
    sub2.showData()  # show global variable in sub2
    sub2.changeData()  # change global variable in sub2
    sub1.showData()  # show global variable in sub1 again

Kết quả hóa ra là:

*****initial global variable values*****
glvB=True
glvA=100
glvS=tiger
glvList=[1, 2, 3]
glvTuple=(1, 'a')
glvDict={'Name': 'tiger', 'age': 100}

*****glv in sub1*****
glvB=True
glvA=100
glvS=tiger
glvList=[1, 2, 3]
glvTuple=(1, 'a')
glvDict={'Name': 'tiger', 'age': 100}

*****glv in sub2*****
glvB=False
glvA=200
glvS=bactone
glvList=[4, 5, 6]
glvTuple=(2, 'b')
glvDict={'Name': 'bactone', 'age': 0}

*****glv in sub1*****
glvB=True
glvA=300
glvS=bactone
glvList=[7, 8, 9]
glvTuple=(3, 'c')
glvDict={'Name': 'bactone1', 'age': 10}

Chúng ta có thể thấy tất cả các loại hoạt động của kiểu dữ liệu và sự thay đổi của biến toàn cầu được tự động tải lại.

Hướng dẫn python import global variable from another file - python nhập biến toàn cục từ một tệp khác

Tìm hiểu cách tạo các biến toàn cầu có thể được chia sẻ giữa các tệp/mô -đun trong Python.


Các biến toàn cầu được sử dụng trong lập trình để chia sẻ bộ nhớ giữa các phần khác nhau của ứng dụng, điều này cho phép một loạt các chức năng như theo dõi việc sử dụng tài nguyên giữa các lớp, lưu trữ số liệu thống kê về một ứng dụng và nhiều hơn nữa. Trong Python, chúng chủ yếu được sử dụng để chia sẻ các giá trị giữa các lớp và chức năng.

Hiểu các biến toàn cầu trong Python

Trong Python, một biến toàn cầu thông thường chỉ được sử dụng để chia sẻ giá trị trong các lớp và chức năng. Một biến- một lần được tuyên bố là toàn cầu trong một hàm hoặc lớp sau đó có thể được sửa đổi trong phân đoạn.

num = 1 
 
def increment(): 
    global num 
    num += 1 

Mã trên sẽ cho phép biến 'num' được sử dụng trong hàm đó, trong khi nếu bạn bỏ qua tuyên bố toàn cầu, nó sẽ không được xác định.

Tuy nhiên, nếu bạn cố gắng sử dụng logic này để khai báo một biến toàn cầu từ một lớp khác, nó sẽ không hoạt động như trong các ngôn ngữ khác như Java hoặc C ++.

Ví dụ: nếu chúng ta có một lớp có biến cần được truy cập từ trong một lớp nhập khẩu khác, sẽ không có cách nào để chúng tôi truy cập biến này bằng cách sử dụng từ khóa toàn cầu:

main.py

import test 
 
num = 1 
 
test.increment() 

test.py

def increment(): 
    global num 
    num += 1 

Như bạn có thể thấy ở trên, mặc dù chúng tôi cố gắng truy cập 'num' dưới dạng toàn cầu trong hàm tăng () sau khi nó được cung cấp một giá trị trong main.py, nó vẫn sẽ không được xác định và sẽ dẫn đến lỗi.

Chia sẻ các biến toàn cầu giữa các tệp/mô -đun trong Python

Mặc dù từ khóa toàn cầu chỉ được sử dụng để truy cập các biến từ trong cùng một mô -đun, có nhiều cách để sử dụng nó để chia sẻ các biến giữa các tệp. Ví dụ, chúng ta có thể có ảnh hưởng từ PHP và tạo ra một cái gì đó tương tự như các biến "Superglobals".

Để làm điều này, bạn có thể tạo một mô -đun mới đặc biệt để lưu trữ tất cả các biến toàn cầu mà ứng dụng của bạn có thể cần. Đối với điều này, bạn có thể tạo một chức năng sẽ khởi tạo bất kỳ toàn cầu nào trong số các giá trị mặc định này, bạn chỉ cần gọi chức năng này một lần từ lớp chính của mình, sau đó bạn có thể nhập tệp Globals từ bất kỳ lớp nào khác và sử dụng các toàn cầu đó khi cần.

Ví dụ: hãy tạo một hàm tương tự như ví dụ trên sẽ tăng biến toàn cầu. Đối với điều này, chúng tôi sẽ cần 3 lớp để chứng minh khái niệm; Một lớp chính, một lớp chứa chức năng gia tăng của chúng tôi và một lớp chứa các toàn cầu.

globals.py

def initialize(): 
    global num 
    num = 1 

main.py

import globals 
import test 
 
if __name__ == "__main__": 
    globals.initialize() 
    print( globals.num ) 
    test.increment() 
    print( globals.num ) 

test.py

# sub1.py
import glv


def showData():
    print(f"*****glv in sub1*****\n"
          f"glvB={glv.glvB}\n"
          f"glvA={glv.glvA}\n"
          f"glvS={glv.glvS}\n"
          f"glvList={glv.glvList}\n"
          f"glvTuple={glv.glvTuple}\n"
          f"glvDict={glv.glvDict}\n")


def changeData():
    glv.glvB = False
    glv.glvA = 200
    glv.glvS = "bactone"
    glv.glvList = [4, 5, 6]
    glv.glvTuple = (2, "b")
    glv.glvDict = {"Name": "bactone", "age": 0}
0

Khi chúng ta chạy Main.Py, đầu ra sẽ là:

# sub1.py
import glv


def showData():
    print(f"*****glv in sub1*****\n"
          f"glvB={glv.glvB}\n"
          f"glvA={glv.glvA}\n"
          f"glvS={glv.glvS}\n"
          f"glvList={glv.glvList}\n"
          f"glvTuple={glv.glvTuple}\n"
          f"glvDict={glv.glvDict}\n")


def changeData():
    glv.glvB = False
    glv.glvA = 200
    glv.glvS = "bactone"
    glv.glvList = [4, 5, 6]
    glv.glvTuple = (2, "b")
    glv.glvDict = {"Name": "bactone", "age": 0}
1

Như bạn có thể thấy, một khi chúng tôi đã khởi tạo biến toàn cầu trong Globals.py, sau đó chúng tôi có thể truy cập 'num' dưới dạng thuộc tính từ bất kỳ mô -đun nào khác trong ứng dụng và nó sẽ giữ lại giá trị của nó.

Nếu bạn gặp khó khăn khi hiểu cách thức hoạt động của nó, hãy để lại nhận xét bên dưới!


Bạn có thể nhập các biến từ một tệp khác trong Python không?

Làm cách nào để nhập một biến từ tệp này sang tệp khác trong Python?Nhập và sau đó sử dụng.để truy cập biến.từ nhập và sử dụng các biến.

Các biến toàn cầu có thể được truy cập từ các tệp khác không?

Các biến toàn cầu và tên hàm có liên kết bên ngoài.Chúng được truy cập từ các tệp khác bằng cách khai báo chúng với từ khóa bên ngoài.These are accessed from other files by declaring them with the keyword extern.

Các biến toàn cầu có thể được nhập khẩu không?

Nhập các biến toàn cầu.Nhập một biến hiện có để tiết kiệm thời gian.Nhập một biến thêm biến vào danh sách biến toàn cầu cho tạo tác hiện tại.Biến công khai này được khai báo và khởi tạo, để bạn không phải làm điều này trong mã.Importing a variable adds the variable to the global variable list for the current artifact. This public variable is declared and instantiated, so that you do not have to do this in the code.

Làm thế nào bạn có thể chia sẻ các biến toàn cầu trên mô -đun?

Để chia sẻ các biến toàn cầu trên các mô -đun trong một chương trình duy nhất, hãy tạo một mô -đun đặc biệt. Xem mô -đun cấu hình trong tất cả các mô -đun của ứng dụng của bạn.Mô -đun sẽ có sẵn dưới dạng biến toàn cầu trên các mô -đun.create a special module. Import the config module in all modules of your application. The module will be available as a global variable across modules.