Hướng dẫn how do you declare a global object in python? - làm thế nào để bạn khai báo một đối tượng toàn cục trong python?


Biến toàn cầu

Các biến được tạo ra bên ngoài một hàm (như trong tất cả các ví dụ trên) được gọi là các biến toàn cầu.

Các biến toàn cầu có thể được sử dụng bởi tất cả mọi người, cả bên trong các chức năng và bên ngoài.

Thí dụ

Tạo một biến bên ngoài hàm và sử dụng nó bên trong hàm

x = "tuyệt vời"

def myfunc (): & nbsp; in ("Python là" + x)
  print("Python is " + x)

myfunc()

Hãy tự mình thử »

Nếu bạn tạo một biến có cùng tên bên trong một hàm, biến này sẽ là cục bộ và chỉ có thể được sử dụng bên trong hàm. Biến toàn cầu có cùng tên sẽ vẫn như vậy, toàn cầu và với giá trị ban đầu.

Thí dụ

Tạo một biến bên ngoài hàm và sử dụng nó bên trong hàm

x = "tuyệt vời"

def myfunc (): & nbsp; in ("Python là" + x)
  x = "fantastic"
  print("Python is " + x)

myfunc()

Hãy tự mình thử »

Hãy tự mình thử »



Nếu bạn tạo một biến có cùng tên bên trong một hàm, biến này sẽ là cục bộ và chỉ có thể được sử dụng bên trong hàm. Biến toàn cầu có cùng tên sẽ vẫn như vậy, toàn cầu và với giá trị ban đầu.

Tạo một biến bên trong một hàm, với cùng tên với biến toàn cầu

def myfunc (): & nbsp; x = "tuyệt vời" & nbsp; in ("Python là" + x)

Thí dụ

Tạo một biến bên ngoài hàm và sử dụng nó bên trong hàm

x = "tuyệt vời"
  global x
  x = "fantastic"

myfunc()

Hãy tự mình thử »

Hãy tự mình thử »

Nếu bạn tạo một biến có cùng tên bên trong một hàm, biến này sẽ là cục bộ và chỉ có thể được sử dụng bên trong hàm. Biến toàn cầu có cùng tên sẽ vẫn như vậy, toàn cầu và với giá trị ban đầu.

Tạo một biến bên trong một hàm, với cùng tên với biến toàn cầu

def myfunc (): & nbsp; x = "tuyệt vời" & nbsp; in ("Python là" + x)

x = "tuyệt vời"

def myfunc (): & nbsp; in ("Python là" + x)
  global x
  x = "fantastic"

myfunc()

Hãy tự mình thử »

Hãy tự mình thử »



Tôi muốn sử dụng trên một đối tượng đã được khởi tạo bên trong một lớp từ một mô -đun độc lập. Tôi đang cố gắng làm điều này bằng cách làm cho tham chiếu đối tượng toàn cầu. Tôi nghĩ rằng tôi muốn sử dụng đối tượng hiện tại và không tạo ra một đối tượng mới.

Giả sử tôi có mã này trong một tệp mô -đun

import moduleFile
class A():
    def checkAdmin(self):
        global adminMenu
        adminMenu = SRMadminMenu()

class SRMadminMenu()
    def createAdminMenu(self):
        pass
        ####Put code to create menu here####

    def createSubMenu(self,MenuText):
        pass
        ####Create a submenu with MenuText####

Trong modulefile.py tôi có mã này

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")

Mã trong modulefile.py cho tôi lỗi sau.

NameError: global name 'adminMenu' is not defined

Trước khi đọc bài viết này, hãy chắc chắn rằng bạn đã có một số điều cơ bản về các biến Python Global, Local và Nonlocal.


Từ khóa toàn cầu là gì

Trong Python, từ khóa

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
5 cho phép bạn sửa đổi biến bên ngoài phạm vi hiện tại. Nó được sử dụng để tạo ra một biến toàn cầu và thay đổi biến trong bối cảnh cục bộ.


Quy tắc từ khóa toàn cầu

Các quy tắc cơ bản cho từ khóa

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
5 trong Python là:

  • Khi chúng ta tạo một biến bên trong một hàm, nó là cục bộ theo mặc định.
  • Khi chúng tôi xác định một biến bên ngoài một hàm, nó là toàn cầu theo mặc định. Bạn không phải sử dụng từ khóa
    def moduleFile_Admin_Menu():
        global adminMenu
        adminMenu.createSubMenu("Module Administration")
    
    5.
  • Chúng tôi sử dụng từ khóa
    def moduleFile_Admin_Menu():
        global adminMenu
        adminMenu.createSubMenu("Module Administration")
    
    5 để đọc và viết một biến toàn cầu bên trong một hàm.
  • Sử dụng từ khóa
    def moduleFile_Admin_Menu():
        global adminMenu
        adminMenu.createSubMenu("Module Administration")
    
    5 bên ngoài một chức năng không có hiệu lực.

Sử dụng từ khóa toàn cầu

Hãy lấy một ví dụ.

Ví dụ 1: Truy cập biến toàn cầu từ bên trong một hàm

c = 1 # global variable

def add():
    print(c)

add()

Khi chúng tôi chạy chương trình trên, đầu ra sẽ là:

1

Tuy nhiên, chúng ta có thể có một số kịch bản trong đó chúng ta cần sửa đổi biến toàn cầu từ bên trong một hàm.


Ví dụ 2: Sửa đổi biến toàn cầu từ bên trong hàm

c = 1 # global variable
    
def add():
    c = c + 2 # increment c by 2
    print(c)

add()

Khi chúng tôi chạy chương trình trên, đầu ra hiển thị lỗi:

UnboundLocalError: local variable 'c' referenced before assignment

Điều này là do chúng ta chỉ có thể truy cập biến toàn cầu nhưng không thể sửa đổi nó từ bên trong hàm.

Giải pháp cho điều này là sử dụng từ khóa

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
5.


Ví dụ 3: Thay đổi biến toàn cầu từ bên trong một hàm sử dụng toàn cầu

c = 0 # global variable

def add():
    global c
    c = c + 2 # increment by 2
    print("Inside add():", c)

add()
print("In main:", c)

Khi chúng tôi chạy chương trình trên, đầu ra sẽ là:

Inside add(): 2
In main: 2

Tuy nhiên, chúng ta có thể có một số kịch bản trong đó chúng ta cần sửa đổi biến toàn cầu từ bên trong một hàm.

Sau đó, chúng tôi tăng biến C thêm 2, tức là

NameError: global name 'adminMenu' is not defined
6. Sau đó, chúng tôi gọi hàm
NameError: global name 'adminMenu' is not defined
5. Cuối cùng, chúng tôi in biến toàn cầu c.2, i.e
NameError: global name 'adminMenu' is not defined
6. After that, we call the
NameError: global name 'adminMenu' is not defined
5 function. Finally, we print the global variable c.

Như chúng ta có thể thấy, sự thay đổi cũng xảy ra trên biến toàn cầu bên ngoài hàm,

NameError: global name 'adminMenu' is not defined
8.


Các biến toàn cầu trên các mô -đun Python

Trong Python, chúng tôi tạo một mô -đun duy nhất

NameError: global name 'adminMenu' is not defined
9 để giữ các biến toàn cầu và chia sẻ thông tin trên các mô -đun Python trong cùng một chương trình.

Dưới đây là cách chúng ta có thể chia sẻ các biến toàn cầu trên các mô -đun Python.

Ví dụ 4: Chia sẻ một biến toàn cầu trên các mô -đun Python

Tạo tệp

NameError: global name 'adminMenu' is not defined
9, để lưu trữ các biến toàn cầu

a = 0
b = "empty"

Tạo tệp

c = 1 # global variable

def add():
    print(c)

add()
1, để thay đổi các biến toàn cầu

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
0

Tạo tệp

c = 1 # global variable

def add():
    print(c)

add()
2, để kiểm tra các thay đổi về giá trị

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
1

Khi chúng tôi chạy tệp

c = 1 # global variable

def add():
    print(c)

add()
2, đầu ra sẽ

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
2

Ở trên, chúng tôi đã tạo ba tệp:

NameError: global name 'adminMenu' is not defined
9,
c = 1 # global variable

def add():
    print(c)

add()
1 và
c = 1 # global variable

def add():
    print(c)

add()
2.

Mô -đun

NameError: global name 'adminMenu' is not defined
9 lưu trữ các biến toàn cầu của a và b. Trong tệp
c = 1 # global variable

def add():
    print(c)

add()
1, chúng tôi nhập mô -đun
NameError: global name 'adminMenu' is not defined
9 và sửa đổi các giá trị của a và b. Tương tự, trong tệp
c = 1 # global variable

def add():
    print(c)

add()
2, chúng tôi nhập cả mô -đun
NameError: global name 'adminMenu' is not defined
9 và
c = 1 # global variable

def add():
    print(c)

add()
1. Cuối cùng, chúng tôi in và kiểm tra các giá trị của các biến toàn cầu cho dù chúng có thay đổi hay không.


Toàn cầu trong các chức năng lồng nhau

Dưới đây là cách bạn có thể sử dụng một biến toàn cầu trong chức năng lồng nhau.

Ví dụ 5: Sử dụng biến toàn cầu trong chức năng lồng nhau

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
3

Đầu ra là:

def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
4

Trong chương trình trên, chúng tôi đã khai báo một biến toàn cầu bên trong hàm lồng nhau

1
3. Bên trong hàm
1
4, x không có tác dụng của từ khóa toàn cầu.

Trước và sau khi gọi

1
3, biến X lấy giá trị của biến cục bộ i.e
1
6. Bên ngoài hàm
1
4, biến X sẽ có giá trị được xác định trong hàm
1
3 I.E
1
9. Điều này là do chúng tôi đã sử dụng từ khóa
def moduleFile_Admin_Menu():
    global adminMenu
    adminMenu.createSubMenu("Module Administration")
5 trong X để tạo biến toàn cầu bên trong hàm
1
3 (phạm vi cục bộ).

Nếu chúng ta thực hiện bất kỳ thay đổi nào bên trong hàm

1
3, các thay đổi sẽ xuất hiện bên ngoài phạm vi cục bộ, tức là
1
4.

Làm thế nào để bạn tuyên bố một biến toàn cầu trong Python?

Thông thường, khi bạn tạo một biến bên trong một hàm, biến đó là cục bộ và chỉ có thể được sử dụng bên trong hàm đó. Để tạo một biến toàn cầu bên trong một hàm, bạn có thể sử dụng từ khóa toàn cầu.use the global keyword.

Làm thế nào để bạn xác định một đối tượng toàn cầu?

Một đối tượng toàn cầu là một đối tượng luôn tồn tại trong phạm vi toàn cầu. Trong JavaScript, luôn có một đối tượng toàn cầu được xác định. Trong một trình duyệt web, khi các tập lệnh tạo các biến toàn cầu được xác định với từ khóa VAR, chúng được tạo thành thành viên của đối tượng toàn cầu.an object that always exists in the global scope. In JavaScript, there's always a global object defined. In a web browser, when scripts create global variables defined with the var keyword, they're created as members of the global object.

Chúng ta có thể tuyên bố một danh sách toàn cầu trong Python không?

Một danh sách toàn cầu có thể được khai báo trong Python bằng cách chỉ định một hàm để thực hiện và sau đó chỉ định rõ ràng các biến là toàn cầu trong hàm đó..

Bạn có thể tuyên bố một biến toàn cầu?

Bạn có thể tuyên bố toàn cầu, đó là, các biến số không thuộc về các biến số bằng cách tuyên bố chúng bên ngoài bất kỳ định nghĩa chức năng nào.Thường là tốt nhất để đặt tất cả các tuyên bố toàn cầu gần đầu chương trình, trước chức năng đầu tiên.Một biến chỉ được công nhận từ điểm mà nó được khai báo, đến cuối tệp.. It's usually best to put all global declarations near the beginning of the program, before the first function. A variable is recognized only from the point it is declared, to the end of the file.