First-class citizens là các thực thể cho phép hỗ trợ tất cả các phép toán tạo điều kiện cho các thực thể khác.
Các thực thể này thường được dùng: khi truyền đối số, trả về giá trị từ hàm, sửa đổi có điều kiện & gán giá trị.
Trong bài viết này, chúng ta sẽ xem triển khai & sử dụng first-class citizens trong Python 3.x hoặc các phiên bản trước đó. Cũng như, chúng ta sẽ học những thực thể nào nhận được thẻ First Class citizens.
Những công dân này bao gồm Biến cùng với Hàm.
Hãy trước tiên làm quen với các kiểu dữ liệu là First-class citizens
- Số nguyên (Integers)
- Kiểu số thực (Floating type)
- Số phức (Complex Numbers)
- Chuỗi (Strings)
Tất cả bốn kiểu trên được trao thẻ First-class citizens trong Python 3.x hoặc các phiên bản trước đó.
Ví dụ
# Khai báo số nguyên
print("hello world")
int_inp = int(input())
print("Đây là First class Citizen của " + str(type(int_inp)))
# Khai báo kiểu số thực
float_inp = float(input())
print("Đây là First class Citizen của " + str(type(float_inp)))
# Khai báo số phức
complex_inp = complex(input())
print("Đây là First class Citizen của " + str(type(complex_inp)))
# Khai báo Chuỗi
str_inp = input()
print("Đây là First class Citizen của " + str(type(str_inp)))
Đầu vào
2 23.4 4+7j tutorialspoint
Kết quả
Đây là First class Citizen của <class 'int'> Đây là First class Citizen của <class 'float'> Đây là First class Citizen của <class 'complex'> Đây là First class Citizen của <class 'str'>
Bây giờ hãy xem một số hàm được gọi là first class citizens.
First class objects được xử lý thống nhất trong ngôn ngữ Python. Vì là hướng đối tượng, mọi thực thể tham chiếu đến một object mặc định có thể được tham chiếu và hủy tham chiếu tại bất kỳ thời điểm nào. Lưu trữ có thể thực hiện bằng cấu trúc dữ liệu hoặc cấu trúc điều khiển.
Bây giờ chúng ta sẽ xem liệu Python có hỗ trợ first-class functions hay không. Vì bất kỳ ngôn ngữ nào được nói là hỗ trợ first-class functions khi nó đối xử với hàm như first-class objects.
Ví dụ
# Chương trình Python
# Hàm được đối xử như object
def comp_name(text):
return text.isupper()
print(comp_name("TUTORIALSPOINT"))
new_name = comp_name # Tham chiếu hàm với object
print(new_name("TutorialsPoint"))
Kết quả
True False
Ví dụ
# Chương trình Python
# Hàm được truyền làm đối số cho hàm khác
def new_inp(text):
return text.upper()
def old_inp(text):
return text.lower()
def display(func):
# Lưu hàm trong biến thông thường
code = func("Love Coding, Learn everything on Tutorials Point")
print(code)
display(new_inp) # Tham chiếu trực tiếp bằng cách truyền hàm làm đối số
display(old_inp)
Kết quả
LOVE CODING, LEARN EVERYTHING ON TUTORIALS POINT love coding, learn everything on tutorials point
Ở đây rõ ràng thấy rằng hàm Python có thể được tham chiếu bằng object và cũng có thể được truyền làm đối số cho hàm khác, điều này cho thấy rõ trong Python hàm là First Class Citizens và có thể được tham chiếu/hủy tham chiếu bằng thực thể object.
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về các First-class citizens trong Python: kiểu dữ liệu cơ bản và hàm, với khả năng truyền như đối số, gán cho biến, trả về từ hàm.