Biến toàn bộ là gì

Khai báo biến toàn cục trong Python là gì? Biến cục bộ, biến nonlocal được sử dụng trong Python như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!

Biến trong Python là gì?

Biến trong Python là các container lưu trữ giá trị dữ liệu. Python không có lệnh cho khai báo biến. Một biến được tạo ra vào lần đầu tiên bạn gán một giá trị cho nó. Ví dụ:

x = 5
y = "John"
print[x]
print[y]

Biến không cần được khai báo với bất kỳ kiểu type, và thậm chí có thể thay đổi kiểu sau khi thiết lập chúng.

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]

Nếu muốn xác định kiểu dữ liệu của một biến, bạn có thể áp dụng phương pháp ép kiểu như ví dụ sau:

x = str[3] # x sẽ là '3'
y = int[3] # y sẽ là 3
z = float[3] # z sẽ là 3.0

Xác định kiểu biến trong Python

Bạn có thể lấy kiểu dữ liệu của một biến bằng hàm

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
8. Ví dụ:

x = 5
y = "John"
print[type[x]]
print[type[y]]

Giờ chúng ta sẽ đi sâu vào tìm hiểu biến toàn cục [global], cục bộ [local] và nonlocal trong Python.

Biến toàn cục trong Python

Trong ngôn ngữ lập trình 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 hay biến global. Biến toàn cục có thể được truy cập từ bên trong hoặc bên ngoài hàm.

Hãy xem ví dụ về cách tạo biến toàn cục trong Python.

#Khai báo biến x:
x = "Biến toàn cục" 

#Gọi x từ trong hàm vidu[]
def vidu[]:
    print["x trong hàm vidu[] :", x]

vidu[]

#Gọi x ngoài hàm vidu[]
print["x ngoài hàm vidu[]:", x]

Trong ví dụ trên, ta khai báo biến x là biến toàn cục, và định nghĩa hàm

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9 để in biến x. Cuối cùng ta gọi hàm
x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9 để in giá trị của biến
x = str[3] # x sẽ là '3'
y = int[3] # y sẽ là 3
z = float[3] # z sẽ là 3.0
1. Chạy code trên ta sẽ được kết quả là:

x trong hàm vidu[]: Biến toàn cục
x ngoài hàm vidu[]: Biến toàn cục

Chuyện gì sẽ xảy ra nếu bạn thay đổi giá trị của x trong hàm?

x = 2 
def vidu[]:
   x=x*2    
   print[x]

vidu[]

Nếu chạy code này bạn sẽ nhận được thông báo lỗi:

UnboundLocalError: local variable 'x' referenced before assignment

Lỗi này xuất hiện là do Python xử lý

x = str[3] # x sẽ là '3'
y = int[3] # y sẽ là 3
z = float[3] # z sẽ là 3.0
1 như một biến cục bộ và
x = str[3] # x sẽ là '3'
y = int[3] # y sẽ là 3
z = float[3] # z sẽ là 3.0
1 không được định nghĩa trong
x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9.

Để thay đổi biến toàn cục trong một hàm bạn sẽ phải sử dụng từ khóa global. Chúng tôi sẽ nói kỹ hơn trong bài về từ khóa global.

Biến cục bộ trong Python

Biến được khai báo bên trong một hàm hoặc trong phạm vi cục bộ được gọi là biến cục bộ hay biến local.

def vidu[]:
    y = "Biến cục bộ"
vidu[]
print[y]

Khi chạy code trên bạn sẽ nhận được thông báo lỗi:

NameError: name 'y' is not defined

Lỗi này xuất hiện là do chúng ta đã cố truy cập vào biến cục bộ y trong phạm vi toàn cục, nhưng y chỉ làm việc trong hàm

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9 hoặc phạm vi cục bộ.

Thông thường, để tạo một biến cục bộ, chúng ta sẽ khai báo nó trong một hàm như ví dụ dưới đây:

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
0

Chạy code trên ta sẽ được kết quả

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
1

Chúng ta quay trở lại xem xét vấn đề trước đó, lúc

x = str[3] # x sẽ là '3'
y = int[3] # y sẽ là 3
z = float[3] # z sẽ là 3.0
1 là một biến toàn cục và chúng ta muốn thay đổi
x = str[3] # x sẽ là '3'
y = int[3] # y sẽ là 3
z = float[3] # z sẽ là 3.0
1 trong
x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9.

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

Ở đây, chúng ta sẽ học cách dùng biến cục bộ và toàn cục trong cùng một code.

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
2

Chạy code trên ta sẽ có đầu ra:

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
3

Trong code trên, chúng ta khai báo

x = str[3] # x sẽ là '3'
y = int[3] # y sẽ là 3
z = float[3] # z sẽ là 3.0
1 là biến toàn cục và
x = 5
y = "John"
print[type[x]]
print[type[y]]
0 là biến cục bộ trong
x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9 và dùng toán tử * để thay đổi biến toàn cục và in cả giá trị của x và y. Sau khi gọi hàm
x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9 giá trị của x sẽ thành 4 vì được nhân đôi.

Ví dụ sử dụng biến toàn cục và cục bộ trùng tên:

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
4

Sau khi chạy code trên ta có đầu ra:

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
5

Trong code trên, chúng ta sử dụng cùng tên x cho cả biến cục bộ và biến toàn cục. Khi in cùng biến x chúng ta nhận được hai kết quả khác nhau vì biến được khai báo ở cả hai phạm vi, cục bộ [bên trong hàm

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9] và toàn cục [bên ngoài hàm
x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9].

Khi chúng ta in biến trong hàm

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9 nó sẽ xuất ra
x = 5
y = "John"
print[type[x]]
print[type[y]]
6, đây được gọi là phạm vi cục bộ của biến. Tương tự khi ta in biến bên ngoài hàm
x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
9 sẽ cho ra
x = 5
y = "John"
print[type[x]]
print[type[y]]
8, đây là phạm vi toàn cục của biến.

Biến nonlocal trong Python

Từ nonlocal này mình không biết dịch sang tiếng Việt sao cho chuẩn. Trong Python, biến nonlocal được sử dụng trong hàm lồng nhau nơi mà phạm vi cục bộ không được định nghĩa. Nói dễ hiểu thì biến nonlocal không phải biến local, không phải biến global, bạn khai báo một biến là nonlocal khi muốn sử dụng nó ở phạm vi rộng hơn local, nhưng chưa đến mức global.

Để khai báo biến nonlocal ta cần dùng đến từ khóa nonlocal.

Ví dụ:

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
6

Chạy code trên bạn sẽ có đầu ra:

x = 4 # x là một kiểu int
x = "Sally" # x giờ là kiểu str
print[x]
7

Trong code trên có một hàm lồng là

x = 5
y = "John"
print[type[x]]
print[type[y]]
9, ta dùng từ khóa
#Khai báo biến x:
x = "Biến toàn cục" 

#Gọi x từ trong hàm vidu[]
def vidu[]:
    print["x trong hàm vidu[] :", x]

vidu[]

#Gọi x ngoài hàm vidu[]
print["x ngoài hàm vidu[]:", x]
0 để tạo biến nonlocal. Hàm
x = 5
y = "John"
print[type[x]]
print[type[y]]
9 được định nghĩa trong phạm vi của
#Khai báo biến x:
x = "Biến toàn cục" 

#Gọi x từ trong hàm vidu[]
def vidu[]:
    print["x trong hàm vidu[] :", x]

vidu[]

#Gọi x ngoài hàm vidu[]
print["x ngoài hàm vidu[]:", x]
2.

Lưu ý: Nếu chúng ta thay đổi giá trị của biến nonlocal, sự thay đổi sẽ xuất hiện trong biến cục bộ.

Đừng quên làm bài tập Python bạn nhé.

  • Hàm any[] trong Python
  • Hàm ascii[] trong Python
  • Hàm abs[] trong Python: Trả về giá trị tuyệt đối của một số
  • Hàm bool[] trong Python

Thứ Ba, 27/12/2022 17:10

4,221 👨 30.841

#Python

2 Bình luận

Sắp xếp theo

Xóa Đăng nhập để Gửi

  • Nguyễn Bảo

    ghi thiếu dòng code nhiều quá nhennn

    Thích · Phản hồi · 1 · 22:28 05/11

  • Nguyễn Hữu Thương

    lần đầu  dùng pc để truy  cập  quản trị  mạng.  rất  bất ngờ . bố cục quá tuyệt  vời


    Thích · Phản hồi · 0 · 06:52 02/07

Bạn nên đọc

  • Những di động cảm ứng giá rẻ
  • Cách gửi 38 loại file bị cấm từ Outlook
  • Đây chính là lý do Elon Musk muốn tiến hành một vụ "tấn công hạt nhân" nhắm vào sao Hỏa
  • Biến gỗ thành vật liệu đàn hồi như cao su
  • Sony tung ra phần mềm mới xem video trực tuyến
  • Thay đổi tên sở hữu trong Windows XP

Python

  • Viết chương trình tính số cách leo cầu thang bằng Python
  • Viết chương trình di chuyển số 0 bằng Python
  • Lập trình công cụ phân tích thời gian sử dụng smartphone bằng Python
  • Viết chương trình tính căn bậc hai của một số bằng Python
  • Tìm hiểu chương trình Python đầu tiên
  • Viết chương trình biến nhiều số nguyên thành một số nguyên duy nhất bằng Python
Xem thêm

Python 3

  • Python cơ bản
    • Python là gì? Tại sao nên chọn Python?
    • Cách cài đặt Python trên Windows, macOS, Linux
    • Từ khóa và định danh
    • Cách viết lệnh, thụt lề và chú thích
    • Kiểu dữ liệu: chuỗi, số, list, tuple, set và dictionary
    • Tìm hiểu chương trình Python đầu tiên
    • Mảng trong Python
    • Cách sử dụng List comprehension
  • Điều khiển luồng và vòng lặp
    • Lệnh if, if...else, if...elif...else
    • Vòng lặp for
    • Vòng lặp while
    • Lệnh break và continue
    • Lệnh pass
    • Các kỹ thuật vòng lặp
  • Hàm Python
    • Các hàm trong Python
    • Các hàm Python tích hợp sẵn
    • Hàm Python do người dùng tự định nghĩa
    • Tham số hàm Python
    • Hàm đệ quy trong Python
    • Hàm vô danh, Lambda
    • Các loại biến trong Python
    • Từ khóa global
    • Module
    • Pakage
  • File trong Python
    • Làm việc với File
    • Quản lý File và thư mục
    • Error [Lỗi] và Exception [Ngoại lệ]
    • Xử lý ngoại lệ - Exception Handling
  • Class và Object trong Python
    • Lập trình hướng đối tượng - OOP
    • Tìm hiểu Class và Object
    • Kế thừa [Inheritance]
    • Đa kế thừa [Multiple Inheritance]
    • Nạp chồng toán tử
  • Python nâng cao
    • Ma trận trong Python
    • Đối tượng Iterator trong Python
    • Generator trong Python
    • Closure trong Python
    • Decorator trong Python
    • @property trong Python
    • RegEx trong Python
  • Datetime trong Python
    • Datetime trong Python
    • Hàm datetime.strftime[]
    • Hàm datetime.strptime[]
    • Ngày giờ hiện tại
    • Chuyển đổi timestamp
    • Module time
    • Hàm time.sleep[]
  • Bài tập Python
    • Hơn 100 bài tập Python có lời giải [code mẫu]
    • Giải phương trình bậc 2 một ẩn bằng Python
  • Trắc nghiệm Python
    • Python Quiz - Phần 1
    • Python Quiz - Phần 2
    • Python Quiz - Phần 3
    • Python Quiz - Phần 4
    • Python Quiz - Phần 5
    • Python Quiz - Phần 6
    • Python Quiz - Phần 7
    • Python Quiz - Phần 8
    • Python Quiz - Phần 9
    • Python Quiz - Phần 10
    • Python Quiz - Phần 11

  • Công nghệ
    • Ứng dụng
    • Hệ thống
    • Game - Trò chơi
    • iPhone
    • Android
    • Linux
    • Nền tảng Web
    • Đồng hồ thông minh
    • Chụp ảnh - Quay phim
    • macOS
    • Phần cứng
    • Thủ thuật SEO
    • Kiến thức cơ bản
    • Raspberry Pi
    • Dịch vụ ngân hàng
    • Lập trình
    • Dịch vụ công trực tuyến
    • Dịch vụ nhà mạng
    • Nhà thông minh
  • Download
    • Ứng dụng văn phòng
    • Tải game
    • Tiện ích hệ thống
    • Ảnh, đồ họa
    • Internet
    • Bảo mật, Antivirus
    • Họp, học trực tuyến
    • Video, phim, nhạc
    • Mail
    • Lưu trữ đám mây
    • Giao tiếp, liên lạc, hẹn hò
    • Hỗ trợ học tập
    • Máy ảo
  • Tiện ích
  • Khoa học
    • Khoa học vui
    • Khám phá khoa học
    • Bí ẩn - Chuyện lạ
    • Chăm sóc Sức khỏe
    • Khoa học Vũ trụ
    • Khám phá thiên nhiên
  • Điện máy
    • Tủ lạnh
    • Tivi
    • Điều hòa
    • Máy giặt
  • Cuộc sống
    • Kỹ năng
    • Món ngon mỗi ngày
    • Làm đẹp
    • Nuôi dạy con
    • Chăm sóc Nhà cửa
    • Kinh nghiệm Du lịch
    • Halloween
    • Mẹo vặt
    • Giáng sinh - Noel
    • Tết 2023
    • Quà tặng
    • Giải trí
    • Là gì?
    • Nhà đẹp
    • TOP
    • Phong thủy
  • Video
    • Công nghệ
    • Cisco Lab
    • Microsoft Lab
    • Video Khoa học
  • Ô tô, Xe máy
    • Giấy phép lái xe
  • Làng Công nghệ
    • Tấn công mạng
    • Chuyện công nghệ
    • Công nghệ mới
    • Trí tuệ nhân tạo [AI]
    • Anh tài công nghệ
    • Bình luận công nghệ
    • Tổng hợp
  • Học CNTT
    • Quiz công nghệ
    • Microsoft Word 2016
    • Microsoft Word 2013
    • Microsoft Word 2007
    • Microsoft Excel 2019
    • Microsoft Excel 2016
    • Hàm Excel
    • Microsoft PowerPoint 2019
    • Microsoft PowerPoint 2016
    • Google Sheets - Trang tính
    • Photoshop CS6
    • Photoshop CS5
    • HTML
    • CSS và CSS3
    • Python
    • Học SQL
    • Lập trình C
    • Lập trình C++
    • Lập trình C#
    • Học HTTP
    • Bootstrap
    • SQL Server
    • JavaScript
    • Học PHP
    • jQuery
    • Học MongoDB
    • Unix/Linux
    • Học Git
    • NodeJS

Giới thiệu | Điều khoản | Bảo mật | Hướng dẫn | Ứng dụng | Liên hệ | Quảng cáo | Facebook | Youtube | DMCA

Giấy phép số 362/GP-BTTTT. Bộ Thông tin và Truyền thông cấp ngày 30/06/2016. Cơ quan chủ quản: CÔNG TY CỔ PHẦN MẠNG TRỰC TUYẾN META. Địa chỉ: 56 Duy Tân, Dịch Vọng Hậu, Cầu Giấy, Hà Nội. Điện thoại: 024 2242 6188. Email: info@meta.vn. Chịu trách nhiệm nội dung: Lê Ngọc Lam.

Bản quyền © 2003-2022 QuanTriMang.com. Giữ toàn quyền. Không được sao chép hoặc sử dụng hoặc phát hành lại bất kỳ nội dung nào thuộc QuanTriMang.com khi chưa được phép.

Chủ Đề