Hướng dẫn can python functions change global variables? - Hàm python có thể thay đổi các biến toàn cục không?
Trong phạm vi Python, bất kỳ gán nào cho một biến chưa được khai báo trong phạm vi đó đều tạo ra một biến cục bộ mới trừ khi biến đó được khai báo sớm hơn trong hàm đề cập đến biến phạm vi toàn cầu với từ khóa 6. Show
Chúng ta hãy xem một phiên bản đã sửa đổi của mã giả của bạn để xem điều gì sẽ xảy ra:
Trên thực tế, bạn có thể viết lại tất cả 7 với biến có tên 8 và nó sẽ hoạt động giống hệt nhau.Thứ tự chỉ quan trọng theo thứ tự mà các chức năng của bạn thực hiện các hoạt động thay đổi giá trị của x toàn cầu. Do đó, trong ví dụ của chúng tôi, trật tự không quan trọng, vì 7 gọi 0. Trong ví dụ này, trật tự không quan trọng:
Lưu ý rằng 6 chỉ được yêu cầu để sửa đổi các đối tượng toàn cầu. Bạn vẫn có thể truy cập chúng từ trong một chức năng mà không cần khai báo 6. Vì vậy, chúng tôi có:
Lưu ý sự khác biệt giữa 3 và 4 - 4 đang truy cập vào toàn cầu X mặc dù không gọi 6 và mặc dù 3 cũng không sử dụng 6, nhưng nó tạo ra một bản sao cục bộ vì nó gán giá trị.Sự nhầm lẫn ở đây là lý do tại sao bạn không nên sử dụng các biến toàn cầu. Các biến toàn cầu và cục bộ cùng tênKiểm tra ví dụ này, Quảng cáo total = 100 def func1(): total = 15 print('Total = ', total) func1() print('Total = ', total) Output: Total = 100 Total = 100 Ở đây 'Tổng số' là một biến toàn cầu và hàm func () có một biến cục bộ cùng tên. Theo mặc định, một hàm ưu tiên cho biến cục bộ hơn biến toàn cầu nếu cả hai đều có cùng tên. Do đó, trong mã trên khi chúng tôi sửa đổi biến 'tổng' bên trong hàm thì nó không được phản ánh bên ngoài hàm. Bởi vì bên trong hàm func () Tổng biến được coi là biến cục bộ.total' is a global variable and func() function has a local variable with same name. By default a function gives preference to Nhưng điều gì sẽ xảy ra nếu muốn truy cập biến toàn cầu bên trong một hàm có biến cục bộ cùng tên? Sử dụng từ khóa toàn cầu † để sửa đổi biến toàn cầu bên trong một chức năngNếu chức năng của bạn có một biến cục bộ có cùng tên với biến toàn cầu và bạn muốn sửa đổi chức năng biến toàn cầu bên trong thì hãy sử dụng từ khóa 'toàn cầu' trước tên biến khi bắt đầu chức năng, tức là. global total Nó sẽ làm cho chức năng tham khảo tổng số biến toàn cầu bất cứ khi nào được truy cập. Kiểm tra ví dụ này, total = 100 def func(): # refer to global variable 'total' inside function global total if total > 10: total = 15 print('Total = ', total) func() print('Total = ', total) Output: Total = 100 Total = 15 Như bạn có thể thấy sửa đổi được thực hiện cho tổng số biến toàn cầu hiện có thể nhìn thấy bên ngoài chức năng. Khi chúng tôi sử dụng từ khóa toàn cầu với một biến bên trong hàm thì biến cục bộ sẽ được ẩn. Nhưng điều gì sẽ xảy ra nếu chúng ta muốn giữ Bot là biến cục bộ & toàn cầu với giống nhau và sửa đổi cả hai trong chức năng? Hãy xem làm thế nào để làm điều đó, Sử dụng Globals () để truy cập các biến toàn cầu bên trong hàmVì các từ khóa 'toàn cầu' ẩn biến cục bộ có cùng tên, vì vậy để truy cập cả biến cục bộ và toàn cầu bên trong một hàm, có một cách khác, tức là toàn cầu () Sử dụng nó để truy cập / sửa đổi biến toàn cầu mà không cần sử dụng từ khóa 'toàn cầu' I, e.'global' keywords hide the local variable with same name, so to access both the local & global variable inside a function there is an another way i.e. global() function. total = 100 def func3(): listOfGlobals = globals() listOfGlobals['total'] = 15 total = 22 print('Local Total = ', total) print('Total = ', total) func3() print('Total = ', total) Đầu ra: 0Như bạn có thể thấy rằng chúng tôi có biến cục bộ và biến toàn cầu với cùng tên, tức là tổng số và chúng tôi đã sửa đổi cả hai bên trong hàm. Bằng cách sử dụng từ điển được trả về bởi Globals () để tham khảo biến toàn cầu thay vì từ khóa 'toàn cầu'. Nó sẽ không ẩn biến cục bộ bên trong hàm.globals() to refer global variable instead of keyword 'global'. It will not hide local variable inside the function. Xử lý lỗi không liên lạcNếu chúng ta cố gắng truy cập một biến toàn cầu với từ khóa 'toàn cầu' hoặc toàn cầu () bên trong một hàm, tức là. 1Nó sẽ ném một lỗi như thế này, 2Để ngăn chặn lỗi này, chúng tôi cần sử dụng từ khóa 'toàn cầu' hoặc hàm toàn cầu (), tức là. 3Ví dụ hoàn chỉnh về biến toàn cầu và toàn cầu () trong Python 4Output: 5
Chức năng Python có thể truy cập các biến toàn cầu không?Bạn có thể truy cập các biến toàn cầu trong Python cả bên trong và bên ngoài hàm..
Các chức năng có thể sử dụng 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..
Một hàm có thể trả về một biến toàn cầu?Không, một hàm có thể đặt biến toàn cầu nhưng không thể trả về bất kỳ biến/ giá trị cục bộ nào có thể ảnh hưởng đến trạng thái toàn cầu. but cannot return any local variable/ value that can impact a global state.
Làm thế nào để bạn thay đổi một biến toàn cầu trong Python?Sử dụng từ khóa toàn cầu † để sửa đổi biến toàn cầu bên trong một hàm.Nếu chức năng của bạn có một biến cục bộ có cùng tên với biến toàn cầu và bạn muốn sửa đổi chức năng biến toàn cầu bên trong thì hãy sử dụng từ khóa 'toàn cầu' trước tên biến khi bắt đầu chức năng, tức là.. If your function has a local variable with same name as global variable and you want to modify the global variable inside function then use 'global' keyword before the variable name at start of function i.e. |