Hướng dẫn can python function use variable outside? - Hàm python có thể sử dụng biến bên ngoài không?

Không giống như các ngôn ngữ sử dụng phạm vi từ vựng 'thực sự', Python chọn có 'không gian tên' cụ thể cho các biến, cho dù đó là global, nonlocal hoặc cục bộ. Có thể lập luận rằng việc làm cho các nhà phát triển có ý thức mã với các không gian tên như vậy trong tâm trí là rõ ràng hơn, do đó dễ hiểu hơn. Tôi sẽ lập luận rằng sự phức tạp như vậy làm cho ngôn ngữ trở nên khó sử dụng hơn, nhưng tôi đoán tất cả đều thuộc về sở thích cá nhân.

Dưới đây là một số ví dụ liên quan đến ____ ____ 6:-

>>> global_var = 5
>>> def fn():
...     print(global_var)
... 
>>> fn()
5
>>> def fn_2():
...     global_var += 2
...     print(global_var)
... 
>>> fn_2()
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 2, in fn_2
UnboundLocalError: local variable 'global_var' referenced before assignment
>>> def fn_3():
...     global global_var
...     global_var += 2
...     print(global_var)
... 
>>> fn_3()
7

Các mẫu tương tự cũng có thể được áp dụng cho các biến nonlocal, nhưng từ khóa này chỉ có sẵn cho các phiên bản Python sau.

Trong trường hợp bạn đang tự hỏi, nonlocal được sử dụng trong đó một biến không toàn cầu, nhưng không nằm trong định nghĩa chức năng mà nó đang được sử dụng. Ví dụ, một

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
1 trong một
x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
1, đây là một sự xuất hiện phổ biến một phần do thiếu các lambdas đa câu nói. Có một hack để bỏ qua việc thiếu tính năng này trong Pythons trước đó, tôi mơ hồ nhớ rằng nó liên quan đến việc sử dụng danh sách một phần tử ...

Lưu ý rằng việc viết thành các biến là nơi các từ khóa này là cần thiết. Chỉ đọc từ họ không mơ hồ, do đó không cần thiết. Trừ khi bạn có các

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
1 bên trong bằng cách sử dụng cùng một tên biến với các tên bên ngoài, điều mà chỉ nên tránh để thành thật.

Hướng dẫn can python function use variable outside? - Hàm python có thể sử dụng biến bên ngoài không?

Trong Python và hầu hết các ngôn ngữ lập trình, các biến được khai báo bên ngoài một hàm được gọi là các biến toàn cầu. Bạn có thể truy cập các biến như vậy bên trong và bên ngoài một hàm, vì chúng có phạm vi toàn cầu.

Đây là một ví dụ về biến toàn cầu:

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10

Biến

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4 trong mã trên được khai báo bên ngoài hàm:
x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
5.

Sử dụng chức năng

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
6, chúng tôi vẫn có thể truy cập
x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4 vì nó được khai báo trong phạm vi toàn cầu.

Chúng ta hãy xem một ví dụ khác cho thấy những gì xảy ra khi chúng ta khai báo một biến bên trong một hàm và cố gắng truy cập nó ở nơi khác.

def X():
    x = 10 

X()

def showX():
    print("The value of x is", x)
    
showX()
NameError: name 'x' is not defined

Trong ví dụ trên, chúng tôi đã khai báo

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4 bên trong một hàm và cố gắng truy cập nó trong một chức năng khác. Điều này dẫn đến một nameerror vì
x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4 không được xác định trên toàn cầu.

Các biến được xác định bên trong các hàm được gọi là biến cục bộ. Giá trị của chúng chỉ có thể được sử dụng trong hàm nơi chúng được khai báo.

Bạn có thể thay đổi phạm vi của biến cục bộ bằng cách sử dụng từ khóa global - mà chúng ta sẽ thảo luận trong phần tiếp theo.

Từ khóa global được sử dụng cho trong Python là gì?

Từ khóa toàn cầu chủ yếu được sử dụng vì hai lý do:

  • Để sửa đổi giá trị của một biến toàn cầu.
  • Để làm cho một biến cục bộ có thể truy cập bên ngoài phạm vi địa phương.

Hãy xem xét một số ví dụ cho từng kịch bản để giúp bạn hiểu rõ hơn.

Ví dụ #1 - Sửa đổi biến toàn cầu bằng cách sử dụng từ khóa global

Trong phần cuối cùng mà chúng tôi đã khai báo một biến toàn cầu, chúng tôi đã không cố gắng thay đổi giá trị của biến. Tất cả những gì chúng tôi đã làm là truy cập và in giá trị của nó trong một hàm.

Hãy thử và thay đổi giá trị của biến toàn cầu và xem điều gì sẽ xảy ra:

x = 10 

def showX():
    x = x + 2
    print("The value of x is", x)
    
showX()
# local variable 'x' referenced before assignment

Như bạn có thể thấy ở trên, khi chúng tôi cố gắng thêm 2 vào giá trị của

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4, chúng tôi đã gặp lỗi. Điều này là do chúng tôi chỉ có thể truy cập nhưng không sửa đổi
x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4.

Để khắc phục điều đó, chúng tôi sử dụng biến global. Đây là cách:

x = 10 

def showX():
    global x
    x = x + 2
    print("The value of x is", x)
    
showX()
# The value of x is 12

Sử dụng từ khóa global trong mã ở trên, chúng tôi có thể sửa đổi

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4 và thêm 2 vào giá trị ban đầu của nó.

Ví dụ #2 - Cách thực hiện một biến cục bộ có thể truy cập bên ngoài phạm vi cục bộ bằng cách sử dụng từ khóa global

Khi chúng tôi tạo một biến bên trong một hàm, không thể sử dụng giá trị của nó bên trong một hàm khác vì trình biên dịch không nhận ra biến.

Đây là cách chúng tôi có thể sửa lỗi sử dụng từ khóa global:

def X():
    global x
    x = 10 
    
X()
    
def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10

Để có thể truy cập

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4 có thể truy cập được ngoài phạm vi cục bộ của nó, chúng tôi đã khai báo nó bằng cách sử dụng từ khóa global:
x = 10 

def showX():
    x = x + 2
    print("The value of x is", x)
    
showX()
# local variable 'x' referenced before assignment
2.

Sau đó, chúng tôi đã gán một giá trị cho

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4. Sau đó chúng tôi đã gọi chức năng mà chúng tôi đã sử dụng để khai báo nó:
x = 10 

def showX():
    x = x + 2
    print("The value of x is", x)
    
showX()
# local variable 'x' referenced before assignment
4

Khi chúng tôi gọi hàm

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
6, in giá trị của
x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4 được khai báo trong hàm
x = 10 

def showX():
    x = x + 2
    print("The value of x is", x)
    
showX()
# local variable 'x' referenced before assignment
4, chúng tôi đã không gặp lỗi vì
x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 10
4 có phạm vi toàn cầu.

Bản tóm tắt

Trong bài viết này, chúng tôi đã nói về các biến toàn cầu và địa phương trong Python.

Các ví dụ cho thấy cách khai báo cả biến toàn cầu và địa phương.

Chúng tôi cũng đã nói về từ khóa global cho phép bạn sửa đổi giá trị của biến toàn cầu hoặc làm cho biến cục bộ có thể truy cập được ngoài phạm vi của nó.

Mã hóa hạnh phúc!



Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Bạn có thể sử dụng một biến bên ngoài một chức năng không?

Các biến được khai báo bên ngoài bất kỳ chức năng nào trở thành biến toàn cầu. Các biến toàn cầu có thể được truy cập và sửa đổi từ bất kỳ chức năng nào. Trong ví dụ trên, tên người dùng biến trở thành biến toàn cầu vì nó được khai báo bên ngoài bất kỳ chức năng nào.. Global variables can be accessed and modified from any function. In the above example, the variable userName becomes a global variable because it is declared outside of any function.

Bạn có thể sử dụng một biến trong một chức năng Python không?

Trong Python, các biến chỉ được tham chiếu bên trong một hàm là toàn cầu ngầm.Nếu một biến được gán một giá trị ở bất cứ đâu trong cơ thể của hàm, thì nó được coi là cục bộ trừ khi được tuyên bố rõ ràng là toàn cầu.variables that are only referenced inside a function are implicitly global. If a variable is assigned a value anywhere within the function's body, it's assumed to be a local unless explicitly declared as global.

Chức năng bên trong Python có thể truy cập biến bên ngoài không?

Phạm vi chức năng bên trong trong các hàm bên trong Python Python hoặc các hàm lồng nhau có thể truy cập các biến của hàm bên ngoài cũng như các biến toàn cầu.Biến chức năng bên trong có phạm vi cục bộ chỉ giới hạn trong hàm đó.Các biến hàm bên trong không thể được truy cập ở phạm vi hàm bên ngoài.Python Inner Functions or Nested Functions can access the variables of the outer function as well as the global variables. The inner functions variable has a local scope that is limited only to that function. Inner Functions variables can't be accessed at the outer function scope.

Biến nào có thể được sử dụng bên trong và bên ngoài chức năng?

Các biến được tạo ra bên ngoài một hàm đượ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.