Các biến trong khối Python có nằm trong phạm vi không?

Câu trả lời là Không, không có phạm vi khối trong python. Nếu bạn đến từ nền tảng ngôn ngữ lập trình như C, C++ hoặc Java thì không có thứ gọi là phạm vi khối trong python

Phạm vi khối là gì?

Nếu một biến được khai báo bên trong một khối mã dự định như vòng lặp For, vòng lặp While hoặc luồng điều kiện [nếu khác] Biến chỉ có thể được truy cập trong một khối

Python không có kiểm tra Phạm vi khối, hãy thử các ví dụ bên dưới

Luồng điều kiện

to_continue = True
if to_continue:
	variable = "block scope"
print[variable]

đầu ra

block scope

Trong vòng lặp While

while to_continue:
    variable = "block scope"
    print["Loop"]
    to_continue=False
print[variable]

đầu ra

Loop
block scope

Trong vòng lặp

for _ in range[5]:
    variable = "block scope"
    print["Loop"]
print[variable]

Hãy tự mình thử

đầu ra

Loop
Loop
Loop
Loop
Loop
block scope

Như chúng ta có thể thấy không có phạm vi khối trong python, Biến có thể được truy cập bên ngoài khối ngoại trừ các hàm [Điều này được giải thích bên dưới]

Phạm vi trong Python

Phạm vi là một khái niệm để cho phép hoặc hạn chế việc sử dụng các biến trong chương trình

Có 2 loại phạm vi

  • Phạm vi toàn cầu
  • Phạm vi cục bộ

Phạm vi toàn cầu

Biến được khai báo trong chương trình, Sẽ có thể truy cập được trên tất cả các phần của chương trình như trong Vòng lặp, Phạm vi điều kiện, chức năng, v.v.

global_variable = "testing"

def my_function[]:
  print ["Inside Function -> " + global_variable]

my_function[]
print["Outside Function -> " + global_variable]

Tự mình thử

đầu ra

Inside Function -> testing
Outside Function -> testing

Ví dụ trên cho thấy biến toàn cục có thể được truy cập từ bất kỳ đâu trong chương trình

Phạm vi cục bộ

Biến được khai báo bên trong hàm sẽ bị hạn chế bên trong hàm và không thể truy cập được bên ngoài hàm

________số 8_______

Tự mình thử

đầu ra

Inside Function -> testing

Trong ví dụ trên, chúng ta có thể thấy biến được khai báo bên trong hàm sẽ được truy cập bên trong hàm

Bạn có thể đã gặp trường hợp bạn đang cố truy cập vào một biến nhưng giá trị lại khác hoặc thậm chí không tồn tại. Điều này có thể là do bạn chưa biết về phạm vi biến

Vì vậy, đừng lo lắng, chúng tôi đã đề cập đến bạn trong bài viết này, nơi chúng tôi sẽ thảo luận về phạm vi của biến, loại phạm vi và từ khóa được liên kết với phạm vi biến Python

Phạm vi biến trong Python là gì?

Trong các ngôn ngữ lập trình, các biến cần được định nghĩa trước khi sử dụng chúng. Các biến này chỉ có thể được truy cập trong khu vực mà chúng được xác định, đây được gọi là phạm vi. Bạn có thể coi đây là một khối nơi bạn có thể truy cập các biến

Các loại phạm vi biến Python

Có bốn loại phạm vi biến trong Python, hãy cùng tìm hiểu từng loại

1. Phạm vi cục bộ

Các biến phạm vi cục bộ chỉ có thể được truy cập trong khối của nó

Hãy xem nó với một ví dụ

a = 10
def function[]:
  print[“Hello”]
  b = 20
function[]
print[a]
print[b]

đầu ra

Xin chào
10
Traceback [cuộc gọi gần đây nhất cuối cùng]
  File “main.py”, line 7, in
in[b]
TênLỗi. tên 'b' không được xác định

Trong ví dụ trên, chúng ta thấy Python in ra giá trị của biến a nhưng không tìm thấy biến b. Điều này là do b được định nghĩa là phạm vi cục bộ trong hàm nên chúng ta không thể truy cập biến bên ngoài hàm. Đây là bản chất của phạm vi địa phương

2. Phạm vi toàn cầu

Các biến được khai báo trong phạm vi toàn cầu có thể được truy cập từ bất kỳ đâu trong chương trình. Biến toàn cục có thể được sử dụng bên trong bất kỳ chức năng nào. Chúng ta cũng có thể thay đổi giá trị biến toàn cục

Msg = “This is declared globally”

def function[]:
  #local scope of function
  print[Msg]

function[]

đầu ra

Điều này được tuyên bố trên toàn cầu

Nhưng, điều gì sẽ xảy ra nếu bạn khai báo một biến cục bộ có cùng tên với biến toàn cục bên trong một hàm?

 msg = “global variable”

def function[]:
  #local scope of function
  msg = “local variable”
  print[msg]

function[]
print[msg]

đầu ra

biến cục bộ
biến toàn cục

Như bạn có thể thấy, nếu chúng ta khai báo một biến cục bộ có cùng tên với biến toàn cục thì phạm vi cục bộ sẽ sử dụng biến cục bộ

Nếu bạn muốn sử dụng biến toàn cục bên trong phạm vi cục bộ thì bạn sẽ cần sử dụng từ khóa “global” mà chúng ta sẽ thảo luận sau trong bài viết này

3. Phạm vi kèm theo

Phạm vi không cục bộ hoặc toàn cầu thuộc phạm vi kèm theo. Điều này sẽ được hiểu rõ hơn với một ví dụ

def vehicle[]:
  fun= “Start”
  def car[]:
    model= “Toyota”
    print[fun]
    print[model]
  car[]
vehicle[]

đầu ra

Bắt đầu
Toyota

Trong mã ví dụ, biến fun được sử dụng bên trong hàm car[]. Trong trường hợp đó, nó không phải là phạm vi cục bộ hay phạm vi toàn cầu. Đây được gọi là phạm vi kèm theo

4. Phạm vi tích hợp

Đây là phạm vi rộng nhất trong Python. Tất cả các tên dành riêng trong các mô-đun tích hợp Python đều có phạm vi tích hợp

Khi Python không tìm thấy mã định danh trong phạm vi cục bộ, bao quanh hoặc toàn cầu, thì Python sẽ tìm kiếm trong phạm vi tích hợp để xem liệu nó có được xác định ở đó không

a = 5.5
int[a]
print[a]
print[type[a]]

Python sẽ xem trong phạm vi cục bộ trước để xem biến nào được xác định trong phạm vi cục bộ, sau đó nó sẽ xem xét trong phạm vi kèm theo và sau đó là phạm vi toàn cầu

Nếu mã định danh không được tìm thấy ở bất cứ đâu thì cuối cùng, nó sẽ kiểm tra phạm vi tích hợp

Ở đây, các hàm int[], print[], type[] không cần được xác định vì chúng đã được xác định trong phạm vi tích hợp sẵn của Python

Từ khóa toàn cầu và không cục bộ

Hãy nhớ rằng chúng ta đã nói về vấn đề “Điều gì sẽ xảy ra nếu chúng ta khai báo các biến có cùng tên trong các phạm vi khác nhau?”

Hãy xem cách chúng ta có thể sử dụng chúng

1. từ khóa toàn cầu

Hãy xem xét ví dụ, trong đó lần đầu tiên chúng ta nhìn thấy vấn đề

a = 100
def method[]:
  a = 50
  print[a]
method[]
print[a]

đầu ra

50
100

Đoạn mã trên sẽ in các giá trị 50 và 100 vì trong biến phạm vi cục bộ, a được tham chiếu đến 50 và bên ngoài hàm method[], nó được tham chiếu đến biến toàn cục

Nhưng, nếu chúng ta muốn truy cập biến toàn cục bên trong hàm method[] thì sao?

a = 100
def method[]:
  global a
  a = 50
  print[a]
method[]
print[a]

đầu ra

50
50

Bây giờ chúng ta thấy rằng bằng cách sử dụng từ khóa toàn cầu, chúng ta có thể khai báo rằng chúng ta muốn sử dụng biến a được định nghĩa trong phạm vi toàn cầu

Vì vậy, khi gán giá trị 50 cho biến, chúng ta cũng đã thay đổi giá trị bên ngoài hàm

2. Từ khóa không cục bộ

Giống như từ khóa toàn cục, chúng tôi có từ khóa “không cục bộ” cho những lúc chúng tôi cần thay đổi một biến không cục bộ

Chúng ta sẽ xem các ví dụ có và không có từ khóa nonlocal

a = "global variable"
def method[]:
        a = "nonlocal variable"
        def function[]:
                a = "local variable"
                print[a]
        function[]
        print[a]
method[]
print[a]

đầu ra

biến cục bộ
biến không cục bộ
biến toàn cục

Trong hàm [], a đề cập đến “biến cục bộ”, trong phương thức [], a đề cập đến “biến không cục bộ” và bên ngoài các hàm này, a đề cập đến “biến toàn cục”

Bây giờ chúng tôi sử dụng biến không cục bộ

a = "global variable"
def method[]:
        a = "nonlocal variable"
        def function[]:
                nonlocal a
                a = "local variable"
                print[a]
        function[]
        print[a]
method[]
print[a]

đầu ra

biến cục bộ
biến cục bộ
biến toàn cục

Chúng tôi đã sử dụng từ khóa nonlocal trên biến “a” bên trong hàm[]

Đây là lý do tại sao khi chúng ta thay đổi giá trị biến không cục bộ, nó cũng thay đổi giá trị của biến “a” được xác định trong hàm method[]

Tóm lược

Đây là tất cả mọi thứ về phạm vi biến Python

Chúng tôi đã hiểu phạm vi biến và nhiều loại của nó, nơi chúng tôi đã thấy cùng một tên có thể có các giá trị khác nhau trong các phạm vi khác nhau như thế nào

Trong phần sau, chúng ta đã thấy cách bạn có thể sử dụng các từ khóa toàn cục và không cục bộ để giải quyết vấn đề có các giá trị khác nhau dưới cùng một tên biến

Các biến Python có nằm trong phạm vi không?

Biến được tạo trong phần thân chính của mã Python là biến toàn cục và thuộc phạm vi toàn cục . Các biến toàn cầu có sẵn từ bên trong bất kỳ phạm vi nào, toàn cục và cục bộ.

Biến phạm vi khối là gì?

Các biến và hàm trong phạm vi khối được được xác định bên trong một khối cụ thể hoặc bên trong dấu ngoặc nhọn { } và chúng chỉ có thể truy cập được bên trong khối cụ thể đó hoặc bên trong khối đó. The block-scoped variables were first introduced in EcmaScript2015 or es6.

Là các biến bên trong một chức năng hoặc một khối?

Các biến được khai báo bên trong hàm hoặc khối được gọi là biến cục bộ . Chúng chỉ có thể được sử dụng bởi các câu lệnh bên trong hàm hoặc khối mã đó. Các biến cục bộ không được biết đến với các chức năng bên ngoài của chính chúng.

Phạm vi của biến có phụ thuộc vào khối không?

Phạm vi xác định tuổi thọ của một biến. Tuổi thọ của một biến phụ thuộc vào phạm vi. Phạm vi của một biến tĩnh trong một hàm hoặc một khối được giới hạn trong hàm đó .

Chủ Đề