Làm thế nào để bạn gọi một biến bên trong một hàm trong python?

Trong Python, chúng ta có thể khai báo các biến trong ba phạm vi khác nhau. phạm vi cục bộ, phạm vi toàn cầu và phi cục bộ

Một phạm vi biến xác định khu vực mà chúng ta có thể truy cập vào một biến. Ví dụ,

def add_numbers():
    sum = 5 + 4

Ở đây, biến sum được tạo bên trong hàm, vì vậy nó chỉ có thể được truy cập bên trong nó (phạm vi cục bộ). Loại biến này gọi là biến cục bộ

Dựa trên phạm vi, chúng ta có thể phân loại các biến Python thành ba loại

  1. Biến cục bộ
  2. Biến toàn cục
  3. Biến không cục bộ

Biến cục bộ Python

Khi chúng ta khai báo các biến bên trong hàm thì các biến này sẽ có phạm vi cục bộ (trong hàm). Chúng tôi không thể truy cập chúng bên ngoài chức năng

Các loại biến này được gọi là biến cục bộ. Ví dụ,

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)

đầu ra

Local Hello
NameError: name 'message' is not defined

Ở đây, biến thông báo là cục bộ của hàm

# outside function 
def outer():
    message = 'local'

    # nested function  
    def inner():

        # declare nonlocal variable
        nonlocal message

        message = 'nonlocal'
        print("inner:", message)

    inner()
    print("outer:", message)

outer()
7, vì vậy nó chỉ có thể được truy cập trong hàm

Đó là lý do tại sao chúng tôi gặp lỗi khi cố gắng truy cập bên ngoài chức năng

# outside function 
def outer():
    message = 'local'

    # nested function  
    def inner():

        # declare nonlocal variable
        nonlocal message

        message = 'nonlocal'
        print("inner:", message)

    inner()
    print("outer:", message)

outer()
7

Để khắc phục sự cố này, chúng ta có thể biến biến có tên message thành toàn cầu


Biến toàn cục Python

Trong Python, một biến được khai báo bên ngoài hàm hoặc trong phạm vi toàn cục được gọi là biến toàn cục. Điều này có nghĩa là một biến toàn cục có thể được truy cập bên trong hoặc bên ngoài hàm

Hãy xem một ví dụ về cách một biến toàn cục được tạo trong Python

# declare global variable
message = 'Hello'

def greet():
    # declare local variable
    print('Local', message)

greet()
print('Global', message)

đầu ra

Local Hello
Global Hello

Lần này chúng ta có thể truy cập biến thông báo từ bên ngoài hàm

# outside function 
def outer():
    message = 'local'

    # nested function  
    def inner():

        # declare nonlocal variable
        nonlocal message

        message = 'nonlocal'
        print("inner:", message)

    inner()
    print("outer:", message)

outer()
7. Điều này là do chúng tôi đã tạo biến thông báo làm biến toàn cục

# declare global variable
message = 'Hello'

Bây giờ, tin nhắn sẽ có thể truy cập được từ bất kỳ phạm vi (khu vực) nào của chương trình


Biến không cục bộ Python

Trong Python, các biến không cục bộ được sử dụng trong các hàm lồng nhau có phạm vi cục bộ không được xác định. Điều này có nghĩa là biến có thể không nằm trong phạm vi cục bộ cũng như phạm vi toàn cầu

Chúng tôi sử dụng từ khóa

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
1 để tạo các biến không cục bộ. Ví dụ,

# outside function 
def outer():
    message = 'local'

    # nested function  
    def inner():

        # declare nonlocal variable
        nonlocal message

        message = 'nonlocal'
        print("inner:", message)

    inner()
    print("outer:", message)

outer()

đầu ra

________số 8

Trong ví dụ trên, có một hàm

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
2 lồng nhau. Chúng tôi đã sử dụng các từ khóa
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
1 để tạo một biến không cục bộ

Trong Python, chúng ta có thể định nghĩa biến bên ngoài lớp, bên trong lớp và thậm chí bên trong các phương thức. Hãy xem, cách sử dụng và truy cập các biến này trong suốt chương trình

Biến được định nghĩa bên ngoài lớp

Các biến được định nghĩa bên ngoài lớp có thể được truy cập bởi bất kỳ lớp nào hoặc bất kỳ phương thức nào trong lớp chỉ bằng cách viết tên biến




inner: nonlocal
outer: nonlocal
0

inner: nonlocal
outer: nonlocal
1

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
3

inner: nonlocal
outer: nonlocal
4
inner: nonlocal
outer: nonlocal
5
inner: nonlocal
outer: nonlocal
6

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
11
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
12
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
13

inner: nonlocal
outer: nonlocal
2

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
15

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
16
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
17

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10____111
Local Hello
NameError: name 'message' is not defined
11
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
13

inner: nonlocal
outer: nonlocal
2

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
Local Hello
NameError: name 'message' is not defined
15
Local Hello
NameError: name 'message' is not defined
16____217
Local Hello
NameError: name 'message' is not defined
18

Local Hello
NameError: name 'message' is not defined
19
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
11
inner: nonlocal
outer: nonlocal
02
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
13

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
05

inner: nonlocal
outer: nonlocal
06
inner: nonlocal
outer: nonlocal
5
inner: nonlocal
outer: nonlocal
08

inner: nonlocal
outer: nonlocal
09

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
11

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
16
inner: nonlocal
outer: nonlocal
13

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10____111
inner: nonlocal
outer: nonlocal
17
inner: nonlocal
outer: nonlocal
18

inner: nonlocal
outer: nonlocal
2

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
Local Hello
NameError: name 'message' is not defined
15
inner: nonlocal
outer: nonlocal
22
Local Hello
NameError: name 'message' is not defined
17
Local Hello
NameError: name 'message' is not defined
18

Local Hello
NameError: name 'message' is not defined
19
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
11
inner: nonlocal
outer: nonlocal
28
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
13

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
05

inner: nonlocal
outer: nonlocal
32
inner: nonlocal
outer: nonlocal
5
inner: nonlocal
outer: nonlocal
34

inner: nonlocal
outer: nonlocal
35

đầu ra.

Local Hello
Global Hello
4

 
Biến được định nghĩa bên trong lớp.

Các biến được định nghĩa bên trong lớp nhưng bên ngoài phương thức có thể được truy cập trong lớp (bao gồm tất cả các phương thức) bằng cách sử dụng thể hiện của lớp. Ví dụ – bản thân. var_name.
Nếu bạn muốn sử dụng biến đó ngay cả bên ngoài lớp, bạn phải khai báo biến đó là biến toàn cục. Sau đó, biến có thể được truy cập bằng cách sử dụng tên của nó bên trong và bên ngoài lớp và không sử dụng thể hiện của lớp.




inner: nonlocal
outer: nonlocal
0

inner: nonlocal
outer: nonlocal
37

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
39

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
41

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
16
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
17

inner: nonlocal
outer: nonlocal
2

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
inner: nonlocal
outer: nonlocal
46

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
inner: nonlocal
outer: nonlocal
48
inner: nonlocal
outer: nonlocal
5
inner: nonlocal
outer: nonlocal
50

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10____111
inner: nonlocal
outer: nonlocal
54
inner: nonlocal
outer: nonlocal
55

inner: nonlocal
outer: nonlocal
2

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
Local Hello
NameError: name 'message' is not defined
15
Local Hello
NameError: name 'message' is not defined
16____217
Local Hello
NameError: name 'message' is not defined
18

Local Hello
NameError: name 'message' is not defined
19
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
11
inner: nonlocal
outer: nonlocal
65
inner: nonlocal
outer: nonlocal
66
Local Hello
NameError: name 'message' is not defined
17
inner: nonlocal
outer: nonlocal
68

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
06
inner: nonlocal
outer: nonlocal
5
inner: nonlocal
outer: nonlocal
08

inner: nonlocal
outer: nonlocal
09

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
11

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
16
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
107

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10____1110

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
111

inner: nonlocal
outer: nonlocal
2

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
18
Local Hello
NameError: name 'message' is not defined
15
inner: nonlocal
outer: nonlocal
22
Local Hello
NameError: name 'message' is not defined
17
Local Hello
NameError: name 'message' is not defined
18

Local Hello
NameError: name 'message' is not defined
19
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
10
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
110

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
121

inner: nonlocal
outer: nonlocal
2

inner: nonlocal
outer: nonlocal
32
inner: nonlocal
outer: nonlocal
5
def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
125

inner: nonlocal
outer: nonlocal
35

đầu ra.

def greet():

    # local variable
    message = 'Hello'
    
    print('Local', message)

greet()

# try to access message variable 
# outside greet() function
print(message)
1

Các câu lệnh được đánh dấu là lỗi sẽ tạo ra lỗi khi thực thi vì biến không thể truy cập được ở đó