Các chủ đề nâng cao trong Python là gì?

Khi bạn đã hiểu rõ về các cấu trúc dữ liệu cơ bản và các chức năng chính của chúng, đã đến lúc khám phá một số kỹ thuật nâng cao hơn trong Python. Trong bài viết này, tôi muốn xem lại năm khái niệm mà bạn có thể tận dụng trong mã của mình

1. Hàm Lambda

Hàm lambda còn được gọi là hàm ẩn danh trong Python. Một số người chỉ đơn giản gọi chúng là lambdas. Họ có cú pháp sau. lambda arguments: expression. Về bản chất, chúng tôi sử dụng từ khóa lambda để biểu thị việc khai báo hàm lambda. Sau đó, chúng tôi liệt kê các đối số, số lượng có thể bằng 0 hoặc nhiều hơn. Sau dấu hai chấm, chúng tôi liệt kê biểu thức sử dụng các đối số này cho bất kỳ hoạt động áp dụng nào

Các hàm lambda đặc biệt hữu ích trong trường hợp chúng ta cần có một hàm sử dụng một lần trong thời gian ngắn. Chẳng hạn, một số hàm dựng sẵn có đối số key mà chúng ta có thể đặt hàm lambda

Sắp xếp bằng hàm Lambda

Trong đoạn mã trên, chúng tôi muốn sắp xếp một danh sách các bộ dữ liệu. Theo mặc định, các bộ dữ liệu sẽ được sắp xếp dựa trên từng mục chứa. Trong trường hợp này, việc sắp xếp dựa trên các chữ cái đầu tiên của tên. Tuy nhiên, chúng tôi muốn giải quyết theo điểm số, là mục thứ hai của bộ dữ liệu. Để thực hiện nó, chúng tôi đã tận dụng hàm lambda, trong đó đối số x đề cập đến từng bộ sẽ được sắp xếp. Bởi vì điểm số là mục thứ hai trong mỗi bộ dữ liệu, chúng tôi chỉ cần chỉ định chỉ số 1 để truy cập mục thứ hai

2. hiểu

Có lẽ ví dụ Pythonic được đề cập nhiều nhất là kỹ thuật đọc hiểu. Về bản chất, kỹ thuật này cho phép chúng ta tạo một danh sách, từ điển hoặc tập hợp bằng cách sử dụng một lần lặp thoát, được đặt tên tương ứng là hiểu danh sách, hiểu từ điển và hiểu tập hợp. Đoạn mã sau đây cho bạn thấy những cách sử dụng này

hiểu

Cú pháp của những cách hiểu này trông giống nhau. Đây là một điểm nổi bật nhanh chóng của các hình thức vi phân. Cần lưu ý rằng bạn có thể thêm các điều kiện để giữ các mặt hàng bạn cần

List Comprehension: [expr for x in iterable]
Dictionary Comprehension: {key_expr: value_expr for x in iterable}
Set Comprehension: {expr for x in iterable}
With Optional Conditions:
[expr for x in iterable if condition]
{key_expr: value_expr for x in iterable if condition}
{expr for x in iterable if condition}

Thay vì triển khai các vòng lặp for, các cách hiểu này rất tiện dụng để tạo các kiểu dữ liệu vùng chứa này. Quan trọng hơn, chúng thường nhanh hơn vòng lặp for, do đó chúng hoạt động hiệu quả hơn và nên là cách ưu tiên cho các hoạt động này

3. máy phát điện

Trước đây, tôi đã đề cập đến iterables, đề cập đến các đối tượng Python có thể được lặp lại. Trong quá trình lặp, iterable được chuyển đổi thành iterator, sao cho iterator có thể kết xuất các phần tử khi cần. Một loại trình vòng lặp cụ thể là trình tạo. Không giống như các trình lặp điển hình, chẳng hạn như danh sách và từ điển — có tất cả các phần tử của chúng được tải trong bộ nhớ — trình tạo tạo các phần tử theo kiểu lười biếng mà không cần tải tất cả các phần tử trong bộ nhớ và do đó chúng là các trình lặp hiệu quả về bộ nhớ. Một ví dụ tầm thường được hiển thị trong đoạn mã sau

Ví dụ máy phát điện đơn giản

Như bạn có thể thấy, hàm tạo tạo một trình tạo liên quan đến việc sử dụng từ khóa yield. Trong quá trình lặp lại, các phần tử này được hiển thị tuần tự

Một trường hợp sử dụng thực tế của trình tạo là xử lý một lượng lớn dữ liệu — khi được tải hết, nó có thể làm chậm máy tính hoặc đơn giản là không thể tải được vì kích thước quá lớn. Chẳng hạn, một ví dụ tầm thường sẽ là tính tổng các số nguyên 1–10.000.000.000. Tôi đã thử 1 tỷ trên máy tính của mình và phát hiện ra rằng kích thước khoảng 8 GB. Vì vậy, 10 tỷ sẽ là khoảng 80 GB nếu tôi đã dùng thử, điều này có thể sẽ làm hỏng chương trình hoặc thậm chí là máy tính của tôi. Không thể tạo danh sách, tôi không thể tính tổng bằng danh sách. Trong trường hợp này, chúng ta nên xem xét máy phát điện

Trường hợp sử dụng máy phát điện

Như được hiển thị ở trên, chúng ta có thể tạo một trình tạo tạo ra một số nguyên mỗi lần, tiết kiệm bộ nhớ. Đoạn mã trên cho bạn thấy một kỹ thuật hữu ích khác được gọi là biểu thức trình tạo, có định dạng sau. [expr for item in iterable]

4. người trang trí

Trình trang trí là các chức năng bậc cao sửa đổi hành vi của các chức năng khác mà không ảnh hưởng đến các chức năng cốt lõi của chúng. Bạn có thể nghĩ về các chức năng khác như những chiếc bánh rán đơn giản; . Cho dù bạn trang trí chúng như thế nào, chúng vẫn là bánh rán. Nói cách khác, các trình trang trí chỉ cần thêm một số chỉnh sửa về giao diện của hàm hoặc một số khía cạnh không cần thiết khác mà không thay đổi thuật toán nội bộ của chúng. Hãy xem xét các nhà trang trí với một ví dụ tầm thường

Ví dụ về trang trí

Ví dụ trên cho bạn thấy cách khai báo một hàm decorator và cách sử dụng nó để trang trí các hàm khác. Như bạn có thể thấy, hàm trang trí timing nhận một hàm khác làm tham số, ghi lại thời gian chạy của hàm trang trí. Đáng chú ý, chức năng được trang trí trả về chức năng như đầu ra của nó. Để sử dụng trình trang trí, chúng ta chỉ cần đặt nó lên trên đầu của hàm khác bằng cách sử dụng ký hiệu @ làm tiền tố, báo hiệu rằng hàm được khai báo sau đây được trang trí bởi hàm trang trí được chỉ định này. Đoạn mã sau cho bạn thấy trang trí như thế nào

Thời gian các chức năng

Một điều mà tôi phát hiện ra rằng nhiều hướng dẫn về trình trang trí không đề cập đến là việc sử dụng trình trang trí @wraps trong khai báo hàm trang trí. Tôi thực sự khuyên bạn nên sử dụng nó [xem Dòng 6 của đoạn mã trước], vì nhiều lý do đã được đề cập trong bài viết trên blog trước đây của tôi

Tại sao bạn nên bọc các công cụ trang trí bằng Python

Tận dụng funcool. kết thúc tốt đẹp

hướng tới khoa học dữ liệu. com

5. Khả năng băm

Khi chúng ta học từ điển Python, chúng ta biết rằng các khóa cần phải được băm. hashable nghĩa là gì? . Sơ đồ sau đây cho bạn thấy một quy trình đơn giản hóa về cách thức hoạt động của hàm băm

Quá trình băm chung [Wikipedia, Public Domain]

Về cơ bản, băm là quá trình sử dụng hàm băm [đôi khi được gọi là hàm băm] để chuyển đổi các đối tượng Python [được gọi là khóa trong sơ đồ] thành các giá trị được băm dạng số [được gọi là giá trị băm trong sơ đồ]. Một cách nhanh chóng để biết liệu một đối tượng Python cụ thể hay không là sử dụng hàm hash[] tích hợp để lấy giá trị băm. Nếu đối tượng không thể băm được, Python sẽ đưa ra một ngoại lệ TypeError cho chúng tôi

Khả năng băm và hàm băm

Đáng chú ý, việc băm cần có thời gian và có thể chậm hơn so với việc xây dựng danh sách và bộ dữ liệu. Vì vậy, câu hỏi là - tại sao chúng ta lại bận tâm triển khai từ điển bằng cách sử dụng hàm băm? . Về cơ bản, cả việc tạo từ điển và bộ đều yêu cầu xây dựng bảng băm. Đoạn mã sau cho bạn thấy khả năng băm của các đối tượng cụ thể có thể ảnh hưởng như thế nào đến trình độ của chúng để được sử dụng làm khóa từ điển

Ưu điểm lớn nhất của việc sử dụng hàm băm là thời gian tra cứu tức thì [i. e. , O[1] độ phức tạp thời gian] để tìm nạp một phần tử trong từ điển. Tương tự, việc kiểm tra xem một mục cụ thể có trong tập hợp hay không cũng mất một khoảng thời gian không đổi. Nói cách khác, sử dụng hàm băm làm cơ chế triển khai mang lại hiệu quả cao cho các hoạt động phổ biến khác nhau, chẳng hạn như truy xuất mục, chèn mục và kiểm tra mục, với chi phí phải trả là có bảng băm dưới mui xe

Thời gian tra cứu liên tục

Để bắt chước một tình huống thực tế, chúng tôi tạo một số số nguyên ngẫu nhiên để có được thời gian tra cứu trung bình cho việc tìm nạp vật phẩm. Như bạn có thể thấy, ngay cả với 100.000 mục trong từ điển, thời gian tra cứu vẫn như nhau, điều này làm nổi bật lợi thế của việc triển khai bảng băm làm cơ chế lưu trữ cho từ điển

kết luận

Trong bài viết này, chúng tôi đã xem xét năm khái niệm nâng cao trong Python. Dưới đây là bản tóm tắt nhanh về thông tin quan trọng nhất

Cái gì được coi là Python nâng cao?

Ngoài các hàm Lambda, các kỹ năng Python nâng cao bao gồm hiểu trình lặp và trình tạo cũng như hàm zip . Một số kỹ năng Python nâng cao khác mà các ứng viên ở cấp độ này nên thể hiện bao gồm các hàm sắp xếp, bản đồ và bộ lọc.

Các tính năng nâng cao của Python là gì?

Các tính năng nâng cao của Python .
máy phát điện
Mô-đun bộ sưu tập
Mô-đun itertools
Mô-đun Funtools
Đóng gói / Giải nén
người trang trí
Trình quản lý bối cảnh

Các chủ đề cho Python là gì?

*args và **kwargs. Hàm là các khối xây dựng trong Python. .
Các lớp học. Mô hình lập trình hướng đối tượng [OOP] được xây dựng dựa trên ý tưởng có các đối tượng thuộc về một loại cụ thể. .
danh sách. Danh sách là một cấu trúc dữ liệu tích hợp trong Python. .
hiểu danh sách. .
từ điển. .
bộ. .
bộ dữ liệu. .
biểu thức lambda

Chủ đề nào là quan trọng nhất trong Python?

Các chủ đề quan trọng để lập trình Python cơ bản .
Python Tuple. .
Bộ trăn. .
Từ điển Python. .
Nếu, Elif và Else. .
Trong khi lặp lại. .
cho vòng lặp. .
Chức năng. Hàm là một khối mã chỉ chạy khi nó được gọi. .
Câu hỏi thường gặp liên quan đến lập trình Python cơ bản. Cú pháp trong Python là gì?

Chủ Đề