Mục tiêu
Thông qua bài viết này, chúng tôi sẽ sử dụng một vài mô-đun và ít phương pháp ít ai biết rằng có thể cải thiện cách mã của chúng tôi về cả phần nhìn và hiệu quả tính toán
tênTuple
Tôi tin rằng một số người chắc chắn đã biết về câu lệnh phổ biến hơn là
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]0 từ mô-đun
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]1 [Nếu chưa biết bạn có thể xem tại đây], nhưng kể từ phiên bản Python 3.6, một loại mới đã có trong module đánh máy là
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]2 . Cả hai đều được thiết kế để giúp bạn nhanh chóng tạo ra những đối tượng bất biến có thể đọc được.
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]2 thực ra là một phiên bản viết lại của
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]0 , và theo quan điểm của tôi .
In [2]: import typing In [3]: class BetterLookingArticle[typing.NamedTuple]: ...: title: str ...: id: int ...: description: str = "No description given." ...: In [4]: BetterLookingArticle[title="Python is cool.", id=1] BetterLookingArticle[title='Python is cool.', id=1, description='No description given.']
Còn thay vào đó nếu ta sử dụng
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]0 .
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]
mảng. mảng
Các mảng giá trị hiệu quả. Array là những loại trình tự hoạt động rất giống với danh sách, ngoại trừ các loại đối tượng được lưu trữ bị giới hạn chế độ
Khi sử dụng module
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]2 , chúng ta cần khởi tạo bằng 1 typecode kiểu mã mà trong đó tất cả các thành phần tử đều được . Hãy so sánh hiệu quả tính toán về thời gian với một danh sách thông thường, viết nhiều số nguyên trong một tệp [sử dụng mô-đun
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]3 để viết một danh sách thông tin .
https. //ý chính. github. com/AdamGold/961758c66cdfe92642eabb61d9ce9866
Có thể thấy là nhanh hơn gấp 14 lần bình thường. Tất nhiên cũng phụ thuộc vào module pickle , nhưng sử dụng mảng vẫn gọn gàng hơn so với sử dụng danh sách. Vì vậy, nếu bạn đang sử dụng các giá trị đơn giản đó, bạn nên cân nhắc việc sử dụng mô-đun array.
You can you want to view
Phân tích hơn 80 email từ chối ứng tuyển vào vị trí lập trình viên Python và kết quả không ai ngờ tới.
Việc làm Python không yêu cầu kinh nghiệm
itertools. kết hợp
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]4 is a object module. Nó có rất nhiều phương thức khác nhau giúp tiết kiệm thời gian tiết kiệm, tất cả đều được liệt kê ở đây. Thậm chí còn có cả một kho GitHub viết nhiều hơn về itertools.
Tôi đã sử dụng phương thức kết hợp combinations trong tuần này và tôi nghĩ là tôi sẽ chia sẻ về nó. Phương thức này lấy một số vòng lặp và một số nguyên làm đối số, đồng thời tạo ra một trình bao gồm tất cả các tổ hợp có thể được phép của vòng lặp với một chuỗi số nguyên dài nhất mà không bị trùng lặp.
In [16]: import itertools In [17]: list[itertools.combinations[[1, 2, 3, 4], 2]] [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
mệnh lệnh. từ khóa
Đây là cách viết một chính tả nhanh chóng và đẹp mắt với giá trị mặc định
In [18]: dict.fromkeys[["key1", "key2", "key3"], "DEFAULT_VALUE"] {'key1': 'DEFAULT_VALUE', 'key2': 'DEFAULT_VALUE', 'key3': 'DEFAULT_VALUE'}
Cuối cùng nhưng không mất phần quan trọng – Module dis
Mô-đun
In [6]: import collections In [7]: Article = collections.namedtuple["Article", ["title", "description", "id"]] In [8]: Article[title="Python is cool.", id=1, description=""] Article[title='Python is cool.', description='', id=1]5 Hỗ trợ phân tích bytecode CPython bằng cách tách nó.
Có thể bạn đã biết hoặc chưa biết, Python dịch mã nguồn thành một tập hợp các tên gọi duy nhất là “bytecode”. Mô-đun dis giúp chúng tôi xử lý những chỉ thị này và đồng thời nó cũng là một công cụ gỡ lỗi tuyệt vời.
Đây là một ví dụ trong cuốn sách Fluent Python
________số 8Bị lỗi nhưng hệ thống vẫn hoạt động. in sao lại như vậy?
In [25]: dis.dis["t[a] += b"] 1 0 LOAD_NAME 0 [t] 2 LOAD_NAME 1 [a] 4 DUP_TOP_TWO 6 BINARY_SUBSCR 8 LOAD_NAME 2 [b] 10 INPLACE_ADD --> [value in t[a]] += b --> succeeds because list is mutable 12 ROT_THREE 14 STORE_SUBSCR --> Assign t[a] = our list --> Fails, t[a] is immutable. 16 LOAD_CONST 0 [None] 18 RETURN_VALUE
Trước khi kết thúc…
Cảm ơn vì đã đọc. Để biết thêm các bài viết liên quan đến Python và các nội dung thú vị khác, bạn có thể theo dõi tôi trên Medium hoặc GitHub [Tôi đánh dấu một số bản lưu trữ tuyệt vời. ]
Xin cảm ơn các bạn đã đọc bài viết này. Để đọc nhiều bài viết hơn về Python và các chủ đề hay chủ đề khác, bạn có thể theo dõi tôi trên Medium hoặc GitHub […
Nếu bạn thích bài viết này, hãy nhấn giữ nút 👏 để những người khác có thể tìm thấy bài viết. Bạn càng giữ lâu, bạn sẽ càng chia sẻ cho nhiều người hơn.