Sắc thái làm việc với phạm vi trong Python
Hãy xem xét các sắc thái quan trọng khi làm việc với biến cục bộ và biến toàn cục.
Giả sử chúng ta có biến toàn cục num.
Hãy tạo một hàm func,
hàm này sẽ in biến toàn cục num
ra console:
num = 1
def func():
print(num)
func() # sẽ in ra 1
Bây giờ hãy khai báo biến cục bộ num ở
dòng dưới hàm print. Sau khi
thực thi mã, một lỗi sẽ được in ra console.
Điều này xảy ra vì Python
bên trong hàm coi num
chỉ là một biến cục bộ, biến này
chưa được khai báo:
num = 1
def func():
print(num) # sẽ báo lỗi
num = 2
Bây giờ hãy viết lại mã bên trong hàm
để giá trị của biến num
tăng lên 2:
num = 1
def func():
num += 2 # sẽ báo lỗi
Lỗi được gây ra bởi biểu thức num += 2
đại diện cho cách viết sau:
num = num + 2
Tuy nhiên, bản thân biến cục bộ, mà việc cộng thêm được thực hiện, chưa được khai báo. Và do đó Python báo lỗi, vì không thể cộng một số vào một giá trị không tồn tại.
Kết quả thực thi mã sau đây sẽ là gì:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Kết quả thực thi mã sau đây sẽ là gì:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Kết quả thực thi mã sau đây sẽ là gì:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)