Hướng dẫn how do you pass a global variable to another file in python? - làm thế nào để bạn chuyển một biến toàn cục sang một tệp khác trong python?

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 how do you pass a global variable to another file in python? - làm thế nào để bạn chuyển một biến toàn cục sang một tệp khác trong python?

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!


tác giả người:Hướng dẫn
access_time sửa đổi:2 năm trước
Bar_chart Lượt xem:105410
Thêm thẻ: Pythonscope scope

Tiết kiệm tự động

Tìm kiếm kết nối trong thế giới của nó? Tham gia cộng đồng của chúng tôi và tìm các nhà phát triển, quản trị viên, kỹ sư, và những người CNTT khác ở đây!

gần

Khuyến khích

Xem điều gì đó bạn không đồng ý hoặc cảm thấy có thể được cải thiện?


Không tìm thấy những gì bạn đang tìm kiếm hoặc có một ý tưởng cho một hướng dẫn?

gần

Bạn có thể nhập một biến từ một tệp Python khác 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 sử dụng trong các tệp khác không?

Một biến toàn cầu có thể truy cập được cho tất cả các chức năng trong mọi tệp nguồn nơi nó được khai báo.Để tránh các vấn đề: Khởi tạo - Nếu một biến toàn cầu được khai báo trong nhiều tệp nguồn trong thư viện, nó sẽ được khởi tạo chỉ ở một nơi hoặc bạn sẽ gặp lỗi trình biên dịch.. To avoid problems: Initialization — if a global variable is declared in more than one source file in a library, it should be initialized in only one place or you will get a compiler error.

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.

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

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ã.Sau khi bạn nhập, bạn có thể chỉnh sửa biến nếu được yêu cầu.. This public variable is declared and instantiated, so that you do not have to do this in the code. After you import, you can edit the variable if required.