HomeLập trìnhPythonCách duy trì...

Cách duy trì khả năng mở rộng trong mã Python của bạn


Bất kỳ ứng dụng nào xử lý dữ liệu đều có thể bắt đầu hoạt động chậm hoặc thậm chí bắt đầu bị hỏng hoặc hỏng. Sẽ tốt hơn nếu các nhà phát triển có thể lập trình nhanh chóng và thêm nhiều giá trị hơn vào mã hóa.

Là nhà phát triển, chúng ta nên có các công cụ để tạo nguyên mẫu một cách nhanh chóng. Đó là lý do tại sao chúng ta nên đầu tư nỗ lực vào việc tạo ra một ứng dụng có khả năng mở rộng. Nhìn chung, có thể xây dựng một ứng dụng đáng kể và có thể mở rộng bằng ngôn ngữ lập trình Python.

Python là một ngôn ngữ lập trình cấp cao cũng hướng đối tượng. Với những phẩm chất của nó như cấu trúc dữ liệu tích hợp, liên kết động và gõ động, chúng ta có thể sử dụng nó để phát triển ứng dụng nhanh nhất có thể.

Python cũng có thể được sử dụng như một ngôn ngữ kịch bản được dán để tích hợp các thành phần hiện có và giúp chúng tôi xây dựng các ứng dụng có thể mở rộng.

Python là một trong những ngôn ngữ lập trình tiên phong mà các nhà phát triển có thể sử dụng để thực hiện tất cả các công việc mở rộng quy mô.

Dưới đây là một số mẹo bạn có thể kiểm tra để phát triển các ứng dụng có thể mở rộng bằng Python.

Học cách sử dụng khéo léo ‘Bộ sưu tập’

Python hỗ trợ các cấu trúc/vùng chứa dữ liệu phong phú và mạnh mẽ cho các ‘bộ sưu tập’ như dict, list, set và tuple. Chúng rất có giá trị trong việc xây dựng các ứng dụng có thể mở rộng. Tuy nhiên, việc lạm dụng chúng có thể ảnh hưởng đến khả năng mở rộng mã. Thật dễ dàng để nhận ra khi các bộ sưu tập đã được sử dụng quá mức.

# notebooks.csv holds meta information on a collection of notebooks:
# heading, writer, year of pub, etc.


# load_from_file returns a list of dicts.


notebooks = load_from_file('notebooks.csv')


notebook_summaries = dict()
for notebook in notebooks:


   notebook_summaries[notebook["heading"]] = notebook["summary"]


for heading, summary in notebook_summaries.items():


   # Do something interesting with the summary.


   print(heading, summary)

Từ đoạn mã trên, bạn có thể thấy rõ nó tạo tiêu đề ánh xạ bảng sau khi đọc dữ liệu sổ ghi chép từ tệp CSV. Nếu bạn nhìn nó từ quan điểm sử dụng bộ nhớ, sẽ không có gì sai nếu notebooks.csv có hàng trăm tiêu đề.

Đọc thêm  Sắp xếp bong bóng – Thuật toán trong Java, C++, Python với mã ví dụ

Tuy nhiên, nếu liên quan đến kho hàng của cả kho vở với hàng chục đầu sách thì không ổn. Bạn có thể gặp một hoặc hai vấn đề với mã hóa của mình, điều này cũng phụ thuộc vào phiên bản bạn đang sử dụng, Python 2 hoặc Python 3.

Điều này tạo ra vấn đề thắt cổ chai với khả năng mở rộng của bộ nhớ mã. Việc tạo cấu trúc dữ liệu có tên notebook_summaries là không cần thiết ở đây nhưng nó giúp cải thiện khả năng đọc. Dòng “for” giúp bạn biết ngay rằng một vòng lặp đang chạy ở đây thông qua phần tóm tắt.

Cấu trúc dữ liệu mới chứa bản tóm tắt đầy đủ của mọi sổ ghi chép có khả năng tiêu tốn nhiều bộ nhớ hơn tất cả các trường khác. Giả sử nếu một notebook tiêu thụ N byte bộ nhớ, thì toàn bộ khối sẽ tiêu thụ ít nhất 1,5 * N byte.

Điều này sẽ mở rộng tốt hơn trong Python 3

notebooks = load_from_file('notebooks.csv')


for notebook in notebooks.items():


   print(notebook["title"], notebook["summary"])

Tôi khuyên bạn nên tạo các biến có tên phù hợp vì nó giúp tăng khả năng bảo trì mã Python của bạn.

Lặp lại mã Python thông minh

Trong khi phát triển các ứng dụng kích thước lớn bằng Python, khả năng mở rộng không phải là điều duy nhất bạn nên xem xét. Bạn có thể phải đối mặt với một số vấn đề khác. Ví dụ, vấn đề lặp lại là vấn đề phổ biến nhất.

Đôi khi, dòng for trong mã hóa của bạn lặp lại notebook_summaries.items() và tạo một bản sao sổ ghi chép khác. Việc lặp lại mã này có thể là nguyên nhân dẫn đến hiệu suất mã thấp, trong đó mã Python bắt đầu bị treo trước khi bắt đầu vòng lặp for.
Điều này xảy ra vì notebook_summaries.items() tạo thành một danh sách rất lớn tiêu tốn nhiều bộ nhớ hơn. Ngoài ra, đó là do mã Python thực thi mã byte sau forloop.

Nó sẽ bắt đầu phân bổ thêm bộ nhớ cho danh sách này. Một lần nữa, sự cố lặp lại ảnh hưởng đến Python 2 cũng như các item() của Python 3 và tạo thêm một bản sao nội dung của notebooks_summaries. Các nhà phát triển có thể sử dụng các lần lặp thay vì các mục trong Python 2:

Đọc thêm  Chuỗi nối Python – Cách kết hợp và nối chuỗi trong Python

Trong Python 2, sử dụng “iteritems” thay vì “items”

notebooks = load_from_file('notebooks.csv')


    for notebook in notebooks.iteritems():


      print(notebook["title"], notebook["summary"])

Vì vậy, vấn đề ở đây là lưu ý sự khác biệt giữa việc sử dụng trình vòng lặp trong tất cả các phiên bản Python và tạo danh sách. Trách nhiệm của nhà phát triển là chứng minh đúng mẫu theo ngữ cảnh mã hóa.

Sử dụng ‘Trình tạo’ để có khả năng mở rộng trong Mã Python

Hàm tạo cho phép bạn tạo các trình vòng lặp theo cách đơn giản hơn. Hãy tưởng tượng bạn đang làm việc để xây dựng một chương trình phần mềm dưới dạng Grammarly nhận văn bản, phân tích các câu và thực hiện một số loại phân tích ngữ pháp. Mỗi dòng của câu sẽ được phân chia bằng dấu chấm, theo sau là một hoặc nhiều ký tự.

Xem mã hóa

import re
text=""'Full body of text. It has many sentences.
 
Some have grammatical errors and some are correct.'''
 
sentences = re.analyzed(r'\.\s+', text)
 
for sentence in sentences:
 
   print(sentence)

Chạy danh sách

This is a body of text
It has many sentences
 
Some have grammatical errors and some are correct.
import random
def weathermaker(volatility, days):
    '''
    Yield a series of messages giving the day's weather and occasional commentary
    volatility ‑ a float between 0 and 1; the greater this number the greater
  the likelihood that the weather will change on each given day
    days ‑ number of days for which to generate weather
    '''
    #Always start as if yesterday were sunny
    current_weather="sunny"
    #First item is the probability that the weather will stay the same
    #Second item is the probability that the weather will change
    #The higher the volatility the greater the likelihood of change
    weights = 1.0‑volatility, volatility    #For fun track how many sunny days in a row there have been
    sunny_run = 1
    #How many rainy days in a row there have been
    rainy_run = 0
    for day in range(days):
        #Figure out the opposite of the current weather
        other_weather="rainy" if current_weather == 'sunny' else 'sunny'
        #Set up to choose the next day's weather. First set up the choices
        choose_from = current_weather, other_weather        #random.choices returns a list of random choices based on the weights
        #By default a list of 1 item, so we grab that first and only item with 0 current_weather = random.choices(choose_from, weights)0        yield 'today it is ' + current_weather
        if current_weather == 'sunny':
            #Check for runs of three or more sunny days
            sunny_run += 1
            rainy_run = 0
            if sunny_run >= 3:
                yield "Uh oh! We're getting thirsty!"
        else:
            #Check for runs of three or more rainy days
            rainy_run += 1
            sunny_run = 0
            if rainy_run >= 3:
                yield "Rain, rain go away!"
    return
 
#Create a generator object and print its series of messages
for msg in weathermaker(0.2, 10):
    print(msg)

đầu ra

$ python weathermaker.py
today it is sunny
today it is sunny
Uh oh! We're getting thirsty!
today it is sunny
Uh oh! We're getting thirsty!
today it is sunny
Uh oh! We're getting thirsty!
today it is rainy
today it is sunny
today it is rainy
today it is rainy
today it is rainy
Rain, rain go away!
today it is rainy
Rain, rain go away!

Từ đoạn mã trên, rõ ràng trình tạo Python là một cách tuyệt vời để nhanh chóng tạo trình vòng lặp. Chúng có nhiều lợi ích và chúng phân bổ bộ nhớ cho từng câu một. Chúng cũng giúp các nhà phát triển dễ dàng sửa đổi mã hơn mà không gặp rắc rối.

Đọc thêm  Cách thiết lập môi trường ảo Python trên Ubuntu 20.04

Một công cụ tạo lợi ích khác cung cấp là tính năng đóng gói cung cấp các cách mới và hữu ích để bạn đóng gói và cô lập các phần phụ thuộc mã nội bộ. Đây là lý do tại sao bạn có thể sử dụng trình tạo trong vòng lặp for.

Bạn có thể thêm nhiều báo cáo lợi nhuận trong trình tạo

def nums3():
   n = 0
 
   while n < 6:
 
  yield n
       n += 1
   yield 63 # Second yield
for num in nums3():
   print(num

đầu ra

0
1
2
3
63

Giải thích đoạn mã trên

Ở đây, kết quả thứ hai được hoàn thành sau khi thoát khỏi vòng lặp while. Khi hàm đạt đến giá trị trả về ẩn ở cuối, quá trình lặp sẽ dừng lại.

Từ cuối cùng

Vì vậy, nếu bạn chưa sử dụng trình tạo trong mã python của mình, hãy học cách làm như vậy. Tôi biết bạn sẽ rất vui vì bạn đã làm điều đó. Chúng là phần cốt lõi của mã hóa Python và có thể hữu ích cho quá trình phát triển ứng dụng tiếp theo của bạn trên Python.

Không còn nghi ngờ gì nữa, Python là một ngôn ngữ rất hữu ích, đa dạng và được bảo trì tốt và không có giới hạn về tính năng. Tuy nhiên, tôi đã chia sẻ những ý tưởng mà tôi sử dụng trong quá trình mã hóa hàng ngày của mình để làm cho mọi thứ trở nên đơn giản.

ValueCoders là một công ty phát triển phần mềm có kinh nghiệm. Trong trường hợp bạn cần các dịch vụ phát triển Python, vui lòng liên hệ.



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status