Python gọi lại Lambda

Trường hợp này thường gặp khi tạo hàm callback trong vòng lặp. OP mong muốn biến vòng lặp được sử dụng trong lambda gọi lại của họ có giá trị như khi hàm được tạo, thay vào đó, nó có giá trị hiện tại tại thời điểm gọi, thông thường, giá trị cuối cùng của biến vòng lặp. Giải pháp là liên kết biến vòng lặp dưới dạng đối số mặc định

Có một lời giải thích tốt về điều này trong Câu hỏi thường gặp về Python chính thức.

Trong hướng dẫn về python này, chúng ta sẽ thảo luận về Hàm ẩn danh trong Python là gì, Hàm Lambda trong python là gì. Ngoài ra, chúng ta sẽ thấy những chủ đề dưới đây

  • Hàm ẩn danh với lambda trong Python
  • Hàm ẩn danh không có lambda
  • Hàm ẩn danh nhiều dòng trong Python
  • Hàm ẩn danh làm đối số trong Python
  • Hàm ẩn danh không có đối số
  • Ví dụ hàm ẩn danh trong Python
  • gọi lại chức năng ẩn danh python
  • Hàm ẩn danh nhiều đối số
  • Hàm ẩn danh trong từ điển Python
  • Hàm ẩn danh Python làm tham số
  • Bản đồ hàm ẩn danh trong Python
  • Hàm lambda Python không có if-else
  • Hàm lambda Python với bộ lọc
  • Hàm lambda Python với if-else
  • Ví dụ hàm lambda Python trên hình vuông
  • Ví dụ hàm lambda Python trên khối lập phương
  • Hàm lambda Python với giảm

Mục lục

Chức năng ẩn danh Python

Python có hai loại chức năng như

  1. chức năng bình thường

Một chức năng bình thường trong Python được xác định bằng cách sử dụng từ khóa “def”. Chúng ta có thể viết thành nhiều dòng và nó có thể có nhiều biểu thức

Thí dụ

Đây là một chương trình đơn giản hiển thị tên và sức mạnh của pokemon. Nó chấp nhận 2 đối số và hiển thị thông báo

def pokemon[name, power]:
    return print[f'This is {name}, he can {power}.']

pokemon['pikachu', 'thunderbolt']

đầu ra

Chương trình này chấp nhận tên và nguồn sau thông báo hiển thị đó. Đây là pikachu, anh ta có thể sấm sét

2. chức năng ẩn danh

  • Các hàm ẩn danh trong Python còn được gọi là hàm Lambda. Từ khóa được sử dụng là lambda và chúng được viết trong một dòng và nó chỉ có thể có một biểu thức. Các chức năng này không cần phải được xác định hoặc đặt tên và chúng được sử dụng một lần
  • Các hàm ẩn danh trong Python phổ biến đối với người dùng cao cấp vì nó tiết kiệm thời gian, công sức và bộ nhớ. mặc dù mã trở nên khó đọc hơn nhưng hoạt động hoàn toàn tốt

Hàm ẩn danh Python với lambda

Hãy cho chúng tôi xem cách tạo hàm ẩn danh Python với lambda

  • Hàm Lambda trong Python là hàm một lớp không có tên & được sử dụng cho tác vụ một lần
  • Các tác vụ một lần như thực hiện các phép tính số học, sắp xếp tên, vòng lặp, v.v.
  • Nó làm cho mã thực sự nhỏ nhưng mã trở nên khó đọc hơn vì lambda là một tính năng nâng cao

cú pháp

lambda parameter : action[parameter]

Thí dụ

Trong ví dụ dưới đây, có một bản nâng cấp miễn phí được cung cấp cho tất cả vũ khí mà người chơi có. Vì vậy, bất kể cấp độ vũ khí hiện tại sẽ được nâng cấp lên 2

Hàm ẩn danh Python với lambda

Mã số

weapon_level = [12, 14, 11, 9]
print["Weapon level before upgrade", weapon_level]
print["Weapon level before upgrade",list[map[lambda weapon: weapon + 2, weapon_level ]]]

Đọc Python trong khi lặp nhiều điều kiện

Hàm ẩn danh Python không có lambda

  • Các hàm ẩn danh trong Python được xác định bằng từ khóa 'lambda', vì vậy về mặt kỹ thuật không có phạm vi cho hàm ẩn danh nếu không có lambda
  • Nhưng có những trường hợp nói rằng nó có thể được thực hiện bằng cách sử dụng các hàm tạo
  • Constructor khởi tạo đối tượng của một lớp và được định nghĩa bằng từ khóa
    weapon_level = [12, 14, 11, 9]
    print["Weapon level before upgrade", weapon_level]
    print["Weapon level before upgrade",list[map[lambda weapon: weapon + 2, weapon_level ]]]
    4
  • Nhưng mặt khác nó không thỏa mãn điều kiện của hàm ẩn danh. Vì các chức năng ẩn danh tự hoàn thành, không có tên và chỉ được sử dụng cho tác vụ một lần
  • Tóm lại, Trình xây dựng không thể được coi là một chức năng ẩn danh

cú pháp

class [object]:
     def __init__[self, n1, n2]:
         self.n1 = n1
         self.n2 = n2 

Thí dụ

Đây là một ví dụ về hàm tạo Python trong đó tên và thứ hạng của người chơi sẽ được hiển thị

Hàm ẩn danh Python không có lambda

Mã số

class Game[]:
    def __init__[self, name, rank]:
       self.name = name
       self.rank = rank

p1 = Game['Alpha', 1]
p2 = Game['Delta', 4]
print[p1.name, p1.rank]

đầu ra

Vì chúng tôi chỉ in chi tiết của p1 nên đầu ra sẽ là Alpha 1

Chức năng ẩn danh Python nhiều dòng

  • Các hàm ẩn danh là các lệnh hoặc hàm đơn dòng được áp dụng cho một tác vụ cụ thể
  • Các hàm lambda trong Python có thể có nhiều đối số nhưng chỉ có một biểu thức
  • Vì vậy, sau khi đọc các câu lệnh trên, không có cách nào để tạo hàm lambda nhiều dòng
  • Nên tạo hàm bình thường nếu chương trình có nhiều biểu thức

Hàm ẩn danh làm đối số trong Python

  • Một đối số là đầu vào chống lại tham số
  • nếu có bất kỳ tham số nào được gán cho một hàm thì tham số đó cần một đối số người dùng làm giá trị
  • Trong chức năng bổ sung, nếu “a & b” được chỉ định làm tham số, thì người dùng cần cung cấp đầu vào sẽ được đặt trong “a & b“. hãy nói “2 & 3“. bây giờ nó sẽ cho kết quả là “2+3 = 5”

Thí dụ

Trong ví dụ dưới đây, người dùng sẽ cung cấp một đối số sẽ được thêm vào tổng hóa đơn

hàm ẩn danh làm đối số trong python

Mã số

bill = lambda tip: tip + 10
print[bill[5]]

Vì vậy, ở đây, chức năng được tạo & tham số 'mẹo' được thông qua. Bây giờ trong khi in, 5 là hóa đơn + 10 là tiền boa nên tổng số tiền là 15. Đây là 5 đối số

đầu ra

Trong ví dụ này, khách hàng đã mua mặt hàng 5 và trả 10 tiền boa. Vậy kết quả là 5 + 10 = 15. Đây 5 là đối số được cung cấp bởi người dùng

Đọc Python tạo tập hợp trống

Hàm ẩn danh Python không có đối số

  • Đối số là một giá trị cần được truyền trong khi gọi hàm
  • Đối số làm cho chương trình động
  • Nhưng đôi khi chúng tôi muốn cung cấp giá trị tĩnh cho chương trình. Trong tình huống đó, chức năng được tạo mà không có bất kỳ tham số nào & người dùng không cần cung cấp bất kỳ đối số nào. Ở đây trong ví dụ dưới đây, chúng ta sẽ thấy một hàm ẩn danh không có đối số

cú pháp

variable_name = lambda : value
print[variable_name[]] 

Thí dụ

Chúng tôi đang ở trong một thị trường trái cây nơi mỗi loại trái cây có một mức giá xác định khác nhau. Chúng tôi đang in tổng giá. Hàm ẩn danh này không có đối số. vì vậy bất kỳ chức năng nào sẽ được gọi là giá liên quan sẽ được áp dụng cho nó

Hàm ẩn danh Python không có đối số

Mã số

________số 8_______

đầu ra

Vì ở đây gọi táo và xoài nên áp dụng giá quy định 50 + 40. Tổng trở thành. 90

Gọi lại chức năng ẩn danh trong Python

  • Câu lệnh một lớp để gọi hàm được sử dụng rộng rãi trong giới lập trình viên
  • Trong phần này, một hàm được xác định trước được gọi một lần hoặc nhiều lần bằng cách sử dụng hàm lambda Python
  • Ví dụ phổ biến nhất là 'Máy tính', trong đó hàm được tạo và gọi thông qua hàm lambda trên từng phím riêng lẻ

Thí dụ

Đây là ví dụ về mô-đun máy tính trong đó một nút được in khi bấm vào. Ở back-end, nó đang gọi chức năng mỗi khi nhấp vào

gọi lại chức năng ẩn danh trong python

Mã số

from tkinter import *

numbers = "" 
def recClick[n]: 
    global numbers
    numbers = numbers + str[n] 
    rec.set[numbers] 

if __name__ == "__main__": 
    w = Tk[] 
    rec = StringVar[] 
    disp = Entry[w, textvariable=rec].pack[] 
    rec.set[''] 
    Button[w, text=' 1 ', command=lambda: recClick[1]].pack[]

    w.mainloop[] 

đầu ra

Đầu ra của code mở cửa sổ có “TextField” và “Button“. Nút tiếp tục in 1 trên trường văn bản. Bất cứ khi nào một nút được bấm, một chức năng được gọi

Hàm ẩn danh nhiều đối số

  • Nhiều đối số có thể được chuyển đến một hàm ẩn danh tương tự như các hàm thông thường
  • Không có hạn chế về việc truyền bao nhiêu đối số tùy ý nhà phát triển nhưng chỉ có thể có một biểu thức
  • Nói cách khác, nhiệm vụ sẽ chỉ là một nhiệm vụ bất kể các đối số được thông qua. Hãy hiểu nó tốt hơn với một ví dụ

Thí dụ

Trong ví dụ này, cửa hàng tạp hóa có nhiều mặt hàng. Người dùng đã mua một vài trong số chúng. trong khi thanh toán, người quản lý cửa hàng cung cấp các giá trị cho từng mặt hàng theo cách thủ công để tạo tổng hóa đơn

Hàm ẩn danh Python nhiều đối số

Mã số

grocery = lambda puls, frui, vege : puls + frui + vege
print["Total:",grocery[100, 150 , 75]]

đầu ra

Vì vậy, ở đây, nhiều đối số ở dạng 100, 50, 75 được truyền và đầu ra được tạo là 325, là tổng của tất cả các mục

Hàm ẩn danh trong từ điển Python

  • Các hàm ẩn danh Python được sử dụng để lưu trữ một bộ hướng dẫn trong từ điển Python và từ đó có thể được sử dụng khi cần
  • Nó được triển khai ở định dạng khóa-giá trị
  • Lambda chỉ được triển khai trên giá trị

cú pháp

lambda parameter : action[parameter]
0

Thí dụ

Sức khỏe trong trò chơi, tăng cường, nâng cấp, v.v. được lưu trữ trong từ điển và chúng được gọi bất cứ khi nào người dùng nhấp vào nút chuyên dụng. giống như khi người dùng nhấp vào biểu tượng trái tim, thanh sức khỏe sẽ tăng theo tỷ lệ phần trăm

Hàm ẩn danh Python trong từ điển

Mã số

lambda parameter : action[parameter]
1

đầu ra

Vì vậy, trong ví dụ này, sức khỏe hiện tại của người dùng đã tăng thêm 5 thanh, tốc độ là 2 lần và cấp độ được nâng cấp thêm 1. Vậy đầu ra của đoạn mã trên là 10, 200, 11

Hàm ẩn danh Python làm tham số

  • Tham số là tên được sử dụng trong khi tạo chức năng
  • weapon_level = [12, 14, 11, 9]
    print["Weapon level before upgrade", weapon_level]
    print["Weapon level before upgrade",list[map[lambda weapon: weapon + 2, weapon_level ]]]
    5 p & b là các tham số ở đây
  • Tham số đóng một vai trò quan trọng vì nó bổ sung tính linh hoạt cho chương trình
  • Các thông số cần đầu vào từ người dùng

Thí dụ

Trong ví dụ này, hàm lambda được gọi trong một hàm bình thường dưới dạng tham số. Tổng hóa đơn tại nhà hàng bao gồm sub_total [giá món ăn] + tip

Hàm ẩn danh Python làm tham số

Mã số

lambda parameter : action[parameter]
2

đầu ra

Giá cho thức ăn là 200 và 20 tip được cung cấp. Vậy tổng số tiền khách hàng phải trả là 200 + 20 = 220

Hàm ẩn danh sử dụng bản đồ trong Python

  • Chức năng Map được sử dụng để đơn giản hóa chương trình
  • Nó lấy chức năng theo sau là các lần lặp làm đối số
  • Bản đồ là một trong những chức năng được sử dụng rộng rãi bởi các lập trình viên tiên tiến vì nó tạo điều kiện thuận lợi để triển khai chức năng trên từng lần lặp riêng lẻ

cú pháp

lambda parameter : action[parameter]
3


Thí dụ

Do trục trặc trong trò chơi, 10 xu được thêm vào ví của mọi người. Người chơi đã có một số số dư, bây giờ thêm 10 người nữa vào nó. Hãy xem điều này trong một chương trình

Hàm ẩn danh Python sử dụng bản đồ

Mã số

lambda parameter : action[parameter]
4

Bạn có thể nghĩ tại sao chúng tôi đã sử dụng Danh sách ở đây. Không có danh sách, nó sẽ chỉ cung cấp cho chúng ta vị trí bộ nhớ của đầu ra. Đây là đầu ra mà không sử dụng danh sách

lambda parameter : action[parameter]
5

đầu ra

Vì vậy, số dư hiện tại của người dùng là [223, 112, 32, 71 ] nhưng sau khi chức năng được áp dụng, nó trở thành

weapon_level = [12, 14, 11, 9]
print["Weapon level before upgrade", weapon_level]
print["Weapon level before upgrade",list[map[lambda weapon: weapon + 2, weapon_level ]]]
6

Ví dụ hàm ẩn danh trong Python

Hàm ẩn danh Python là một trong những khái niệm quan trọng trong python có thể giúp bạn giảm dòng mã. Dưới đây là một vài ví dụ khác về các hàm ẩn danh trong Python

Thí dụ

  • Trong này, chúng tôi đang phân phối sôcôla và kem. Nhưng điều kiện là dưới 10 sẽ được chocolate & 10 trở lên sẽ được kem. Chúng tôi đã sử dụng bộ lọc & bản đồ ở đây. Bộ lọc dùng để phân loại học sinh theo độ tuổi
  • Bản đồ được sử dụng để hiển thị tuổi của học sinh sau 2 năm. điều đó có nghĩa là 2 được thêm vào mỗi lần lặp lại

Lọc

  • Nó là một chức năng được sử dụng để lọc các mục danh sách
  • Nó lấy chức năng & phép lặp làm đối số
  • Nếu trong trường hợp chức năng không được áp dụng thì Không nên cung cấp

cú pháp

lambda parameter : action[parameter]
6

ví dụ hàm ẩn danh trong python

Đoạn mã

lambda parameter : action[parameter]
7

đầu ra

  • Trong trường hợp đầu tiên, học sinh dưới 10 tuổi được hiển thị. Sô cô la. [7, 5, 6, 8, 4]
  • Trong trường hợp thứ hai, học sinh trên 10 được hiển thị. kem. [18, 10, 16, 12]
  • Trong trường hợp thứ ba, tuổi của học sinh sau 2 năm được hiển thị. [20, 12, 9, 18, 14, 7, 8, 10, 6]

Hàm lambda là một hàm ẩn danh có thể nhận nhiều đối số nhưng chỉ có một biểu thức

Hàm lambda Python không có if-else

Bây giờ, chúng ta có thể thấy hàm lambda không có if-else trong python

  • Trong ví dụ này, tôi đã lấy một biến làm số và sử dụng hàm lambda, sau đó sử dụng y > 5 và y < 25 điều kiện
  • Để có được đầu ra, tôi đã sử dụng print[number[10]] và print[number[30]]

Thí dụ

lambda parameter : action[parameter]
8

Điều kiện hợp lệ cho số 10 nên đầu ra là đúng và không hợp lệ cho số 30 nên đầu ra là sai. Bạn có thể tham khảo ảnh chụp màn hình bên dưới để biết đầu ra

Hàm lambda Python không có if-else

Hàm lambda Python với bộ lọc

Bây giờ, chúng ta có thể thấy hàm lambda với bộ lọc trong python

  • Trong ví dụ này, tôi đã lấy danh sách dưới dạng số và gán một số giá trị cho danh sách là số = [3,6,10, 25, 17, 9, 30, -5]
  • multiple_of_3 = list[filter[lambda n. n%3 == 0, number]] được sử dụng để lấy danh sách mới
  • Để có được danh sách mới, tôi đã thực hiện chức năng lọc. Phương thức filter[] xây dựng một iterator từ các phần tử của một iterable
  • Các hàm lambda chạy trên tất cả các số trong danh sách và trả về kết quả
  • n%3 == 0 được sử dụng để lấy bội số của 3 từ danh sách đã cho
  • Để có được đầu ra, tôi đã sử dụng print[multiple_of_3]

Thí dụ

lambda parameter : action[parameter]
9

Trong ảnh chụp màn hình bên dưới, bạn có thể thấy bội số của 3 là đầu ra

Hàm lambda Python với bộ lọc

Hàm lambda Python với if-else

Ở đây, chúng ta có thể thấy hàm lambda với if-else trong python

  • Trong ví dụ này, tôi đã lấy một biến làm số và sử dụng hàm lambda x, hàm này có nhiều đối số và chỉ có một biểu thức được đánh giá và trả về
  • Tôi đã sử dụng điều kiện if-else, nếu giá trị đã cho thỏa mãn điều kiện if thì nó trả về true, ngược lại nó trả về false
  • Ở đây, tôi đã lấy hai số như 12 và 30 và để lấy kết quả, tôi đã sử dụng print[number[12]], print[number[30]]

Thí dụ

weapon_level = [12, 14, 11, 9]
print["Weapon level before upgrade", weapon_level]
print["Weapon level before upgrade",list[map[lambda weapon: weapon + 2, weapon_level ]]]
0

Số 12 thỏa mãn điều kiện trả về true còn số 30 không thỏa mãn điều kiện trả về false. Bạn có thể tham khảo ảnh chụp màn hình bên dưới để biết đầu ra

Hàm lambda Python với if-else

Ví dụ hàm lambda Python trên hình vuông

Ở đây, chúng ta có thể xem cách tìm bình phương của một số trong python

  • Trong ví dụ này, tôi đã định nghĩa một hàm square là một def square[y]. và trả về y*y được sử dụng để tính bình phương của số đã cho
  • Tôi đã sử dụng hàm lambda là square = lambda y. y*y. Để có được đầu ra, tôi đã sử dụng print[square[4]]

Thí dụ

weapon_level = [12, 14, 11, 9]
print["Weapon level before upgrade", weapon_level]
print["Weapon level before upgrade",list[map[lambda weapon: weapon + 2, weapon_level ]]]
1

Chúng ta có thể thấy bình phương của 4 là 16 như đầu ra trong ảnh chụp màn hình bên dưới

Ví dụ về hàm lambda trong Python

Ví dụ hàm lambda Python trên khối lập phương

Bây giờ, chúng ta có thể xem cách tìm khối lập phương của số bằng hàm lambda trong python

  • Trong ví dụ này, tôi đã định nghĩa một hàm cube là một def cube[y]. và để tính giá trị khối tôi đã sử dụng return y*y*y và hàm lambda được sử dụng cube = lambda y. y*y*y
  • Để có được đầu ra, tôi đã sử dụng print[cube[2]]

Thí dụ

weapon_level = [12, 14, 11, 9]
print["Weapon level before upgrade", weapon_level]
print["Weapon level before upgrade",list[map[lambda weapon: weapon + 2, weapon_level ]]]
2

Chúng ta có thể thấy lập phương của 2 là 8 như một đầu ra. Bạn có thể tham khảo ảnh chụp màn hình bên dưới để biết đầu ra

Ví dụ khối chức năng lambda Python

Hàm lambda Python với giảm

Bây giờ, chúng ta có thể thấy hàm lambda giảm trong python

  • Hàm rút gọn được sử dụng để áp dụng một hàm cụ thể được truyền trong các đối số của nó cho tất cả các phần tử trong danh sách
  • Trong ví dụ này, tôi đã nhập một mô-đun có tên là giảm từ funcools, tôi đã xác định một danh sách là list = [2,4,5] và khai báo một biến có tên là tổng để lưu trữ giá trị đã giảm
  • Hàm lambda chạy trên tất cả các mục trong danh sách và nó trả về tích của tất cả các số trong danh sách
  • Tôi đã sử dụng print[sum] để in kết quả do hàm rút gọn trả về

Thí dụ

weapon_level = [12, 14, 11, 9]
print["Weapon level before upgrade", weapon_level]
print["Weapon level before upgrade",list[map[lambda weapon: weapon + 2, weapon_level ]]]
3

Bạn có thể xem tích của tất cả các số trong danh sách dưới dạng đầu ra trong ảnh chụp màn hình bên dưới

Hàm lambda Python với giảm

Bạn có thể thích các hướng dẫn Python sau đây

  • Công cụ sửa đổi truy cập Python + Ví dụ
  • Python đọc tệp CSV và ghi tệp CSV
  • Mảng Python với các ví dụ
  • Bảng băm trong python
  • Khối thụt đầu dòng trong Python
  • Python lấy tên tệp từ đường dẫn
  • Python cho vòng lặp với các ví dụ
  • Python tạo tập rỗng
  • Vẽ các hình được tô màu bằng Python Turtle
  • Hiểu danh sách Python bằng cách sử dụng if-else
  • Đồng hồ bấm giờ Python Tkinter

Trong hướng dẫn python này, chúng ta đã học

  • Hàm ẩn danh Python là gì
  • Hàm Lambda trong python là gì
  • Hàm ẩn danh Python với lambda
  • Hàm ẩn danh không có lambda trong Python
  • Chức năng ẩn danh nhiều dòng
  • Hàm ẩn danh làm đối số
  • Hàm ẩn danh không có đối số trong Python
  • Ví dụ hàm ẩn danh Python
  • Gọi lại chức năng ẩn danh trong Python
  • Hàm ẩn danh nhiều đối số trong Python
  • Hàm ẩn danh Python trong từ điển
  • Hàm ẩn danh Python làm tham số
  • Bản đồ chức năng ẩn danh Python
  • Hàm lambda Python không có if-else
  • Hàm lambda Python với bộ lọc
  • Hàm lambda Python với if-else
  • Ví dụ hàm lambda Python trên hình vuông
  • Ví dụ hàm lambda Python trên khối lập phương
  • Hàm lambda Python với giảm

Bijay Kumar

Python là một trong những ngôn ngữ phổ biến nhất ở Hoa Kỳ. Tôi đã làm việc với Python trong một thời gian dài và tôi có kinh nghiệm làm việc với nhiều thư viện khác nhau trên Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, v.v… Tôi có kinh nghiệm làm việc với nhiều khách hàng khác nhau . Kiểm tra hồ sơ của tôi

Lambda có thể có câu lệnh trả về trong Python không?

Hàm lambda không cần câu lệnh trả về , chúng luôn trả về một biểu thức duy nhất.

Gọi lại Lambda là gì?

Đối số thứ ba, callback , là hàm mà bạn có thể gọi trong trình xử lý không đồng bộ để gửi phản hồi . Hàm gọi lại có hai đối số. lỗi và phản hồi. Khi bạn gọi nó, Lambda đợi vòng lặp sự kiện trống rồi trả về phản hồi hoặc lỗi cho người gọi.

Chúng ta có thể gọi hàm lambda trong Python không?

Đó là hệ quả trực tiếp của việc hàm lambda có thể gọi được như được định nghĩa . Ví dụ: điều này cho phép bạn chuyển định nghĩa của biểu thức lambda Python sang hàm bậc cao hơn như map[] , filter[] hoặc functools. reduce[] hoặc một chức năng chính.

Hàm Lambda trong Python là gì?

lambda là từ khóa trong Python để xác định hàm ẩn danh . [các] đối số là một trình giữ chỗ, đó là một biến sẽ được sử dụng để giữ giá trị mà bạn muốn chuyển vào biểu thức hàm. Hàm lambda có thể có nhiều biến tùy thuộc vào những gì bạn muốn đạt được.

Chủ Đề