Tôi có thể gán một hàm cho một biến trong Python không?

Đây là một bài viết khác trong loạt Hàm trong Python. Hôm nay chúng ta sẽ nói về việc gán các chức năng cho các biến. Nếu bạn chưa đọc các phần trước, vui lòng làm như vậy. Họ đây rồi

1] Giới thiệu về Chức năng

2] Các hàm có tham số

3] Tuyên bố hoàn trả

4] Thông số bắt buộc

5] Thông số tùy chọn

6] Tham số tùy chọn có thể thay đổi

7] Đối số từ khóa

8] Số lượng tham số vị trí tùy ý

9] Số lượng tham số từ khóa tùy ý

10] Số lượng tùy ý của cả tham số vị trí và từ khóa

11] Hàm lồng nhau

12] Gọi hàm trong các hàm khác

Hàm là đối tượng hạng nhất, có nghĩa là chúng là đối tượng giống như bất kỳ đối tượng nào khác, điều đó có nghĩa là chúng có thể được sử dụng giống như các đối tượng khác. Dịch điều này sang tiếng Anh đơn giản, chúng ta có thể gán các hàm cho các biến và chuyển chúng làm đối số cho các hàm khác. Chúng cũng có thể được trả về từ các chức năng khác. Nếu bạn muốn đọc thêm về các hàm với tư cách là đối tượng hạng nhất, tôi có một bài viết về điều đó

Tìm hiểu cách tạo các ứng dụng GUI đẹp mắt

bằng Python sử dụng khung Kivy

Toàn diện, dành cho người mới bắt đầu Kivy, dễ làm theo

Tải sách tại đây [PDF] hoặc trên Amazon.

sách điện tử / bìa mềm [đen trắng] / paperback [full color]

Bây giờ hãy tập trung vào việc gán chức năng cho các biến. Nếu bạn gán một hàm cho một biến, bạn có thể sử dụng biến đó làm hàm

def double[number]:
    return number * 2

print[double[5]]

a = "abc"
print[a]

a = double
print[a[17]]

b = a
print[b[12]]

Đây là đầu ra

10
abc
34
24

Vì vậy, trong đoạn mã trên, biến a lần đầu tiên được gán một chuỗi. Sau đó, nó được gán chức năng kép. Từ thời điểm này, có thể sử dụng a làm chức năng kép. Cuối cùng, biến b đã được gán cùng một tham chiếu với a, vì vậy bây giờ nó cũng trỏ đến hàm kép. Cuối cùng, chúng ta có thể sử dụng double, a hoặc b và tất cả chúng đều tham chiếu đến cùng một chức năng

Thách đấu. Cho trước là hàm số

10
abc
34
24
4. Làm cách nào để gán hàm cho biến
10
abc
34
24
5, để bạn có thể gọi
10
abc
34
24
6 và nó chạy hàm
Finxter
0?

def f[]:
    print['Finxter']

# Assign function f to g
g[]

Đầu ra mong muốn của bạn là đầu ra của chức năng

10
abc
34
24
4

Finxter

Làm thế nào để thực hiện điều này theo cách Pythonic nhất?

Tổng quan. Chúng tôi kiểm tra hai phương pháp để thực hiện thách thức này. Bạn có thể chạy chúng trong sổ ghi chép Jupyter tương tác của chúng tôi hoặc đọc các giải thích sau trước

Nhấp để chạy mã này trong trình duyệt của bạn

Hãy đi sâu vào hai phương pháp

Phương pháp 1. Gán đối tượng chức năng cho tên biến mới

Một cách đơn giản để hoàn thành nhiệm vụ là tạo một tên biến mới g và gán đối tượng hàm f cho biến mới bằng câu lệnh f = g

Đây là đoạn mã giải quyết vấn đề

# Method 1
def f[]:
    print['Finxter']

# Assign function f to g
g = f

# Run g
g[]

Đầu ra là đầu ra dự kiến ​​của chức năng

10
abc
34
24
4

Finxter

Lý do là cả hai biến đều trỏ đến cùng một đối tượng hàm trong bộ nhớ. Bạn có thể thấy điều này trong công cụ hiển thị bộ nhớ sau

Nhấp vào tiếp theo để khám phá bộ nhớ thay đổi như thế nào với mã đang mở

Phương pháp 2. Hàm bao bọc Lambda

Bạn cũng có thể sử dụng hàm

Finxter
3 là đối tượng hàm ẩn danh không có tên. Hàm lambda nhận 0 hoặc nhiều đối số và trả về kết quả của biểu thức sau dấu hai chấm. Trong trường hợp của chúng tôi, hàm lambda chỉ đơn giản là bao bọc hàm ban đầu
Finxter
0, nghĩa là nó chạy bên trong
Finxter
0 và trả về giá trị trả về của
10
abc
34
24
4. Đối tượng chức năng mới hoạt động tương tự như
10
abc
34
24
4

Đây là cách phương pháp này giải quyết thách thức của chúng tôi

10
abc
34
24
0

Đầu ra là như nhau

Finxter

Hãy kiểm tra xem bạn hiểu các khái niệm được giới thiệu trong bài viết này đến đâu

[Câu đố Python] Kiểm tra kỹ năng đổi tên chức năng của bạn

Câu đố Python giúp bạn rèn luyện kỹ năng hiểu code nhanh chóng. Bạn có thể tìm ra câu đố mã này?

10
abc
34
24
2

Đầu ra của đoạn mã này là gì?

Giải trình. Mã dự phòng cho biết phong cách lập trình kém. Một cách tuyệt vời để tránh mã dư thừa được cung cấp bởi các chức năng

Các chức năng khái quát hóa một hành vi nhất định và đóng gói một chuỗi các hướng dẫn chương trình. Hàm lý tưởng giải quyết một mục tiêu cấp cao ngữ nghĩa duy nhất. Chẳng hạn, bạn có thể gói gọn một tác vụ phức tạp, chẳng hạn như tìm kiếm trên web, thành một hàm. Bằng cách này, nhiệm vụ phức tạp trở thành một nhiệm vụ đơn giản. gọi chức năng. Các chức năng cho phép người khác sử dụng lại mã của bạn và cho phép bạn sử dụng lại mã của người khác. Bạn đang đứng trên vai người khổng lồ

Bạn có thể định nghĩa một hàm với từ khóa

Finxter
8, theo sau là tên và các đối số của hàm. Trình thông dịch Python duy trì một bảng ký hiệu lưu trữ tất cả các định nghĩa hàm. Theo cách này, trình thông dịch có thể liên kết mỗi lần xuất hiện của tên hàm với chức năng đã xác định

Có thể đổi tên chức năng của bạn trong bảng ký hiệu. Điều này đơn giản như việc gán tên hàm cho một biến mới [e. g.

10
abc
34
24
4]. Khi gọi hàm, trình thông dịch Python sẽ tìm hàm đã đổi tên trong bảng và thực thi nó. Điều này làm cho cuộc sống của bạn dễ dàng hơn khi làm việc với mã của người khác mà bạn không được phép thay đổi

Bạn có thể kiểm tra đầu ra của câu đố này trên ứng dụng câu đố tương tác Finxter của chúng tôi. com. Bạn có phải là một lập trình viên bậc thầy?


Kiểm tra kỹ năng của bạn bây giờ

Video liên quan

Hàm Python. Hướng dẫn Python. Học lập trình Python


Xem video này trên YouTube

Chris

Trong khi làm việc với tư cách là nhà nghiên cứu về các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Bạn có thể gán một biến trong một hàm không?

Thông thường, khi bạn tạo một biến bên trong một hàm, biến đó là cục bộ và chỉ có thể được sử dụng bên trong hàm đó . Để tạo một biến toàn cục bên trong một hàm, bạn có thể sử dụng từ khóa toàn cầu.

Chúng ta có thể sử dụng một hàm làm giá trị biến không?

Có, một chức năng có thể được sử dụng như một giá trị biến

Bạn có thể đặt tên cho một hàm là một biến trong Python không?

Trong Python, hàm là đối tượng "hạng nhất''. chúng có thể được gán tên biến , chúng có thể được truyền dưới dạng đối số cho các hàm khác và thậm chí có thể được trả về từ các hàm khác.

Tại sao một chức năng được gán cho một biến?

Việc khai báo một hàm cho một biến cho phép bạn thay đổi luồng thực thi mà không cần thay đổi mã của mình bằng cách chỉ cần gán lại biến đó cho một hàm khác .

Chủ Đề