Hướng dẫn what is the default scope of variable in python? - phạm vi mặc định của biến trong python là gì?

Trong Python, các biến là các thùng chứa để lưu trữ các giá trị dữ liệu. Chúng là tham chiếu, hoặc con trỏ, đến một đối tượng trong bộ nhớ, điều đó có nghĩa là bất cứ khi nào một biến được gán cho một thể hiện, nó sẽ được ánh xạ tới trường hợp đó. Không giống như các ngôn ngữ khác như C/C ++/Java, Python không phải là người đánh máy tĩnh. Chúng tôi không cần phải khai báo các biến trước khi sử dụng chúng hoặc khai báo loại của chúng. Một biến được tạo ngay khi chúng ta chỉ định giá một giá trị cho nó.example: & nbsp; & nbsp;
Example: 
 

Python3

age = ________ 9 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

I love Geeksforgeeks
0= ________ 12 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

I love Geeksforgeeks
3= ________ 15 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

I love Geeksforgeeks
6
I love Geeksforgeeks
7

I love Geeksforgeeks
6
I love Geeksforgeeks
9

I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
1

Đầu ra: & nbsp; & nbsp; 
 

45
1456.8
John

Lưu ý: Để biết thêm về các biến bấm vào đây. & NBSP; To know more about variables click here.
 

Phạm vi của biến

Vị trí nơi chúng ta có thể tìm thấy một biến và cũng truy cập nó nếu được yêu cầu được gọi là phạm vi của một biến. & NBSP;scope of a variable.
 

Các biến toàn cầu và địa phương

Các biến toàn cầu là các biến được xác định và khai báo bên ngoài bất kỳ chức năng nào và không được chỉ định cho bất kỳ chức năng nào. Chúng có thể được sử dụng bởi bất kỳ phần nào của chương trình.example: & nbsp; & nbsp;
Example: 
 

Python3

Me too.
I love Geeksforgeeks
2
Me too.
I love Geeksforgeeks
3

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Me too.
I love Geeksforgeeks
7=
Me too.
I love Geeksforgeeks
9

Traceback (most recent call last):
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in 
    f() 
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f
    print(s) 
UnboundLocalError: local variable 's' referenced before assignment
0

Output:   
 

I love Geeksforgeeks

Bây giờ giả sử một biến có cùng tên được xác định bên trong phạm vi hàm cũng như nó sẽ in giá trị được đưa ra bên trong hàm chứ không phải giá trị toàn cầu. & NBSP;
 

Python3

Me too.
I love Geeksforgeeks
2
Me too.
I love Geeksforgeeks
3

Me too.
I love Geeksforgeeks
7=
Me too.
I love Geeksforgeeks
9

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Me too.
I love Geeksforgeeks
7=
Me too.
I love Geeksforgeeks
9

Traceback (most recent call last):
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in 
    f() 
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f
    print(s) 
UnboundLocalError: local variable 's' referenced before assignment
0

I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Output:   
 

Me too.
I love Geeksforgeeks

Bây giờ giả sử một biến có cùng tên được xác định bên trong phạm vi hàm cũng như nó sẽ in giá trị được đưa ra bên trong hàm chứ không phải giá trị toàn cầu. & NBSP;
The question is, what will happen if we change the value of s inside of the function f()? Will it affect the global s as well? We test it in the following piece of code:
 

Python3

Me too.
I love Geeksforgeeks
2
Me too.
I love Geeksforgeeks
3

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Me too.
I love Geeksforgeeks
7=
Me too.
I love Geeksforgeeks
9

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Me too.
I love Geeksforgeeks
7=
Me too.
I love Geeksforgeeks
9

Traceback (most recent call last):
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in 
    f() 
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f
    print(s) 
UnboundLocalError: local variable 's' referenced before assignment
0

I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Output:   
 

Bây giờ giả sử một biến có cùng tên được xác định bên trong phạm vi hàm cũng như nó sẽ in giá trị được đưa ra bên trong hàm chứ không phải giá trị toàn cầu. & NBSP;

Me too.
I love Geeksforgeeks
4
Me too.
I love Geeksforgeeks
7=
Traceback (most recent call last):
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in 
    f() 
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f
    print(s) 
UnboundLocalError: local variable 's' referenced before assignment
6global keyword. We only need to use global keyword in a function if we want to do assignments / change them. global is not needed for printing and accessing. Why? Python “assumes” that we want a local variable due to the assignment to s inside of f(), so the first print statement throws this error message. Any variable which is changed or created inside of a function is local, if it hasn’t been declared as a global variable. To tell Python, that we want to use the global variable, we have to use the keyword global, as can be seen in the following example:
 

Python3

Biến S được định nghĩa là chuỗi mà tôi yêu thích GeekSforGeeks, trước khi chúng ta gọi hàm f (). Câu lệnh duy nhất trong f () là câu lệnh in (s). Vì không có S cục bộ, giá trị từ toàn cầu sẽ được sử dụng. Câu hỏi là, điều gì sẽ xảy ra nếu chúng ta thay đổi giá trị của S bên trong hàm f ()? Nó sẽ ảnh hưởng đến toàn cầu? Chúng tôi kiểm tra nó trong phần mã sau: & nbsp;

Traceback (most recent call last):
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in 
    f() 
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f
    print(s) 
UnboundLocalError: local variable 's' referenced before assignment

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Để làm cho chương trình trên hoạt động, chúng tôi cần sử dụng từ khóa toàn cầu. Chúng ta chỉ cần sử dụng từ khóa toàn cầu trong một chức năng nếu chúng ta muốn thực hiện các bài tập / thay đổi chúng. Toàn cầu là không cần thiết để in và truy cập. Tại sao? Python, giả sử rằng chúng tôi muốn một biến cục bộ do sự gán cho s bên trong f (), vì vậy câu lệnh in đầu tiên ném thông báo lỗi này. Bất kỳ biến nào được thay đổi hoặc tạo bên trong một hàm là cục bộ, nếu nó đã được tuyên bố là một biến toàn cầu. Để nói với Python, rằng chúng tôi muốn sử dụng biến toàn cầu, chúng tôi phải sử dụng từ khóa toàn cầu, như có thể thấy trong ví dụ sau: & nbsp;

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Me too.
I love Geeksforgeeks
2
Value of a using nonlocal is : 10
Value of a without using nonlocal is : 5
5

Traceback (most recent call last):
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in 
    f() 
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f
    print(s) 
UnboundLocalError: local variable 's' referenced before assignment
0

I love Geeksforgeeks
6
Me too.
I love Geeksforgeeks
6

Output:   
 

Python is great!
Look for Geeksforgeeks Python Section
Look for Geeksforgeeks Python Section

Me too.
I love Geeksforgeeks
4
Value of a using nonlocal is : 10
Value of a without using nonlocal is : 5
7
Value of a using nonlocal is : 10
Value of a without using nonlocal is : 5
8
 

Python3

Me too.
I love Geeksforgeeks
4
Me too.
I love Geeksforgeeks
7= age 5

Biến S được định nghĩa là chuỗi mà tôi yêu thích GeekSforGeeks, trước khi chúng ta gọi hàm f (). Câu lệnh duy nhất trong f () là câu lệnh in (s). Vì không có S cục bộ, giá trị từ toàn cầu sẽ được sử dụng. Câu hỏi là, điều gì sẽ xảy ra nếu chúng ta thay đổi giá trị của S bên trong hàm f ()? Nó sẽ ảnh hưởng đến toàn cầu? Chúng tôi kiểm tra nó trong phần mã sau: & nbsp;

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6452453454

Traceback (most recent call last):
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in 
    f() 
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f
    print(s) 
UnboundLocalError: local variable 's' referenced before assignment

Để làm cho chương trình trên hoạt động, chúng tôi cần sử dụng từ khóa toàn cầu. Chúng ta chỉ cần sử dụng từ khóa toàn cầu trong một chức năng nếu chúng ta muốn thực hiện các bài tập / thay đổi chúng. Toàn cầu là không cần thiết để in và truy cập. Tại sao? Python, giả sử rằng chúng tôi muốn một biến cục bộ do sự gán cho s bên trong f (), vì vậy câu lệnh in đầu tiên ném thông báo lỗi này. Bất kỳ biến nào được thay đổi hoặc tạo bên trong một hàm là cục bộ, nếu nó đã được tuyên bố là một biến toàn cầu. Để nói với Python, rằng chúng tôi muốn sử dụng biến toàn cầu, chúng tôi phải sử dụng từ khóa toàn cầu, như có thể thấy trong ví dụ sau: & nbsp;

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6452
I love Geeksforgeeks
04454

Me too.
I love Geeksforgeeks
2
Value of a using nonlocal is : 10
Value of a without using nonlocal is : 5
5

Me too.
I love Geeksforgeeks
4
Value of a using nonlocal is : 10
Value of a without using nonlocal is : 5
7
Value of a using nonlocal is : 10
Value of a without using nonlocal is : 5
8

Me too.
I love Geeksforgeeks
4
Me too.
I love Geeksforgeeks
7= age 5

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6452
I love Geeksforgeeks
18454

Me too.
I love Geeksforgeeks
7= =1

Traceback (most recent call last):
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 13, in 
    f() 
  File "/home/370cac45bae7f1e6096520b7a0edb604.py", line 3, in f
    print(s) 
UnboundLocalError: local variable 's' referenced before assignment
0

I love Geeksforgeeks
6452
I love Geeksforgeeks
22454

I love Geeksforgeeks
29

I love Geeksforgeeks
6452
I love Geeksforgeeks
22454

I love Geeksforgeeks
34

I love Geeksforgeeks
6452
I love Geeksforgeeks
22454

Output:   
 

global :  1
Inside f() :  1
global :  1
Inside g() :  2
global :  1
Inside h() :  3
global :  3

Hãy xem xét ví dụ dưới đây để hiểu rõ hơn về chủ đề. & Nbsp; & nbsp;

=5= =7
Example: 
 

Python3

Me too.
I love Geeksforgeeks
2 456

Me too.
I love Geeksforgeeks
4=5=
I love Geeksforgeeks
00

Me too.
I love Geeksforgeeks
2
I love Geeksforgeeks
07

Me too.
I love Geeksforgeeks
4
Value of a using nonlocal is : 10
Value of a without using nonlocal is : 5
7
I love Geeksforgeeks
10

I love Geeksforgeeks
54
I love Geeksforgeeks
55

Me too.
I love Geeksforgeeks
4=5=
I love Geeksforgeeks
14

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
61

I love Geeksforgeeks
6452
I love Geeksforgeeks
2222

I love Geeksforgeeks
65

I love Geeksforgeeks
6 452
I love Geeksforgeeks
68
I love Geeksforgeeks
42=
I love Geeksforgeeks
44

Me too.
I love Geeksforgeeks
2
I love Geeksforgeeks
46

Me too.
I love Geeksforgeeks
4=5=
I love Geeksforgeeks
50

Me too.
I love Geeksforgeeks
4
Me too.
I love Geeksforgeeks
2
I love Geeksforgeeks
53

I love Geeksforgeeks
54=55____8
I love Geeksforgeeks
59

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
61

Me too.
I love Geeksforgeeks
4
I love Geeksforgeeks
6
I love Geeksforgeeks
64

I love Geeksforgeeks
65

Output:   
 

Value of a using nonlocal is : 10
Value of a without using nonlocal is : 5

Phạm vi mặc định của một biến là gì?

Theo mặc định, một biến có quyền truy cập mặc định. Công cụ sửa đổi quyền truy cập mặc định có nghĩa là chúng tôi không khai báo rõ ràng Trình sửa đổi truy cập cho một lớp, trường, phương thức, v.v. Một biến hoặc phương thức được khai báo mà không có bất kỳ công cụ sửa đổi kiểm soát truy cập nào có sẵn cho bất kỳ lớp nào khác trong cùng một gói.default access. Default access modifier means we do not explicitly declare an access modifier for a class, field, method, etc. A variable or method declared without any access control modifier is available to any other class in the same package.

Phạm vi khác nhau của một biến trong Python là gì?

Không phải tất cả các biến có thể được truy cập từ bất cứ nơi nào trong một chương trình.Phần của một chương trình trong đó một biến có thể truy cập được gọi là phạm vi của nó.Có bốn loại phạm vi chính và là cơ sở cho quy tắc LegB.LegB là viết tắt của địa phương -> Bao quanh -> Toàn cầu -> tích hợp.four major types of variable scope and is the basis for the LEGB rule. LEGB stands for Local -> Enclosing -> Global -> Built-in.

Phạm vi của Python là gì?

Trong Python, khái niệm về phạm vi có liên quan chặt chẽ đến khái niệm về không gian tên.Như bạn đã học được cho đến nay, một phạm vi Python xác định vị trí trong chương trình của bạn có thể nhìn thấy tên của bạn.Phạm vi Python được triển khai dưới dạng từ điển ánh xạ tên cho các đối tượng.Những từ điển này thường được gọi là không gian tên.determines where in your program a name is visible. Python scopes are implemented as dictionaries that map names to objects. These dictionaries are commonly called namespaces.

Phạm vi của một biến được xác định trong python chính () là gì?

Vì var được khai báo bên trong một hàm, trong trường hợp này là Main (), var chỉ tồn tại bên trong phạm vi cục bộ của main ().local scope.