⊗pyPmFnCl 23 of 129 menu

Closure trong Python

Closure (closure) được hiểu là một hàm cùng với tất cả các biến ngoài mà nó có thể truy cập.

Trong Python, thông thường khi nói "closure của một hàm", người ta không ám chỉ chính hàm đó, mà chính là các biến ngoài của nó.

Giả sử chúng ta có hàm outer sau, trong đó khai báo biến i và một hàm bên trong inner. Trong hàm này, i sẽ được cộng thêm một. Để biến i hoạt động chính xác, chúng ta thêm lệnh nonlocal vào nó:

def outer(): i = 0 def inner(): nonlocal i i += 1 print(i) return inner

Bây giờ hãy đặt hàm ngoài vào biến res và gọi nó với dấu ngoặc tròn:

res = outer() res() # sẽ in ra 1

Hãy gọi res vài lần. Sau khi thực thi mã, bộ đếm i sẽ tăng lên một đơn vị mỗi lần:

res() # sẽ in ra 2 res() # sẽ in ra 3 res() # sẽ in ra 4

Tuy nhiên, có một điểm quan trọng ở đây - mỗi lần gọi hàm outer sẽ tăng bộ đếm của riêng nó. Hãy đặt lần gọi thứ nhất của outer vào biến res1, còn lần gọi thứ hai - vào biến res2. Sau đó lần lượt in chúng ra console:

res1 = outer() res1() # sẽ in ra 1 res1() # sẽ in ra 2 res1() # sẽ in ra 3 res2 = outer() res2() # sẽ in ra 1 res2() # sẽ in ra 2 res2() # sẽ in ra 3

Cho đoạn mã sau:

def outer(): i = 10 def inner(): nonlocal i i -= 2 print(i) return inner res1 = outer() res1() res1() res2 = outer() res2() res2() res2()

Hãy cho biết, cái gì sẽ được in ra console.

Hãy tạo một hàm, mỗi lần gọi hàm đó sẽ trả về số Fibonacci tiếp theo.

Hãy tạo một hàm, nó sẽ trả về một số nguyên ngẫu nhiên trong một khoảng, nhưng sao cho hai lần liên tiếp không giống nhau.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối