sách gpt4 ăn đã đi

Làm cho mã python của bạn trở nên Pythonic hơn (ngắn gọn, rõ ràng, trang nhã)

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 30 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này làm cho mã python của bạn trở nên Pythonic hơn (ngắn gọn, rõ ràng và trang nhã). Được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Pythonic là gì?

Nếu dịch Pythonic sang tiếng Trung thì rất Pythonic. Cấu trúc danh từ "very +" có rất nhiều cách sử dụng ở Trung Quốc, chẳng hạn như: "rất nữ tính", "đội tuyển bóng đá quốc gia", "rất CCTV", v.v.

Theo hiểu biết của tôi thì danh từ “very” thể hiện một ý nghĩa đặc biệt và nhấn mạnh. Vì vậy, Python có thể hiểu là: Điều mà chỉ Python mới làm được, khác với cách viết của các ngôn ngữ khác, thực chất là cách viết thông thường và độc đáo của Python.

Thay thế giá trị của hai biến.

Cách viết rất Pythonic:

  。

Sao chép mã Mã này như sau:

a, b = b, a

  。

Cách viết nó mà không cần python:

  。

Sao chép mã Mã này như sau:

nhiệt độ = a
một = b
b = nhiệt độ

  。

Ví dụ trên hoàn thành việc trao đổi a và b thông qua tuple pack và giải nén, tránh sử dụng biến tạm thời temp và chỉ sử dụng một dòng mã.

Để đơn giản hóa bên dưới, chúng tôi sử dụng P để biểu thị phương pháp viết Pythonic và NP để biểu thị phương pháp viết không phải Pythonic. Tất nhiên, P-NP này không phải là P-NP khác.

Tại sao theo đuổi Pythonic?

So với NP, phương pháp viết của P ngắn gọn, rõ ràng và thanh lịch. Hầu hết, hiệu quả thực thi cao và càng ít mã thì càng ít xảy ra lỗi. Tôi nghĩ rằng những lập trình viên giỏi nên theo đuổi tính chính xác, đơn giản và dễ đọc của mã khi viết mã. Đây chính xác là tinh thần của Pythonic.

Với những lập trình viên (như tôi) đã có kinh nghiệm về các ngôn ngữ lập trình khác và mới làm quen với Python thì việc nhận biết phương pháp viết Pythonic sẽ mang lại sự tiện lợi và hiệu quả hơn khi viết code Python, và đối tượng đọc chính của bài viết này cũng sẽ là nhóm này của các lập trình viên.

Sau đây sẽ đưa ra n ví dụ về P và NP để bạn đọc tham khảo và tham khảo.

Cuối bài viết này sẽ có danh sách các tài liệu tham khảo, theo tôi có giá trị rất lớn.

Ví dụ về P so với NP.

So sánh chuỗi.

P

  。

Sao chép mã Mã này như sau:

một = 3
b = 1
 
1 <= b <= a < 10 #Đúng

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

b >= 1 và b <= a và a < 10 #Đúng

  。

P là một cú pháp mà học sinh tiểu học có thể hiểu được. Nó đơn giản, trực tiếp và tiết kiệm mã~.

Kiểm tra sự thật.

P

  。

Sao chép mã Mã này như sau:

name = 'Tim' langs = ['AS3', 'Lua', 'C'] info = {'name': 'Tim', 'sex': 'Nam', 'age': 23 } nếu name và langs và info: print('Tất cả đều đúng!') #Tất cả đều đúng.

  。

  。

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

nếu name != '' và len(langs) > 0 và info != {}:
    print('Tất cả đều đúng!') #Tất cả đều đúng!

  。

Nói tóm lại, cách viết P là đánh giá trực tiếp tính xác thực của bất kỳ đối tượng nào mà không cần viết các điều kiện phán đoán. Điều này không chỉ đảm bảo tính chính xác mà còn làm giảm số lượng mã.

Bảng giá trị đúng và sai (ghi nhớ sai và bạn có thể tiết kiệm rất nhiều mã!).

  。

thực tế.

Giả mạo.

ĐÚNG VẬY .

SAI .

Bất kỳ chuỗi nào không trống.

Chuỗi trống '' .

Bất kỳ số nào khác 0.

Số 0.

Bất kỳ thùng chứa không trống.

Vùng chứa trống [] () {} set() .

Bất kỳ giá trị nào khác ngoài Sai.

Không có .

  。

Đảo ngược chuỗi.

P

  。

Sao chép mã Mã này như sau:

def reverse_str( s ):
    trả về s[::-1] 

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

def reverse_str( s ):
    t = ''
    đối với x trong xrange(len(s)-1,-1,-1):
        t += s[x]
    trở về t

Phương pháp viết của P rất đơn giản và sau khi thử nghiệm thì hiệu quả hơn.

  。

Nếu được sử dụng để phát hiện các palindromes, nó sẽ là input == input[::-1], thật thanh lịch làm sao! .

Nối các danh sách chuỗi.

P

  。

Sao chép mã Mã này như sau:

strList = ["Python", "là", "tốt"] 
 
res = ' '.join(strList) #Python tốt

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

độ phân giải = ''
đối với s trong strList:
    độ phân giải += s + ' '
#Python tốt
#Có khoảng trống thừa ở cuối

  。

string.join() thường được sử dụng để nối các chuỗi trong danh sách. So với NP, phương thức P rất hiệu quả và không có lỗi.

Liệt kê tổng, tối đa, tối thiểu, sản phẩm.

P

  。

Sao chép mã Mã này như sau:

sốDanh sách = [1,2,3,4,5]  
 
tổng = tổng(numList) #tổng = 15
maxNum = max(numList) #maxNum = 5
minNum = min(numList) #minNum = 1
từ toán tử nhập mul
prod = giảm(mul, numList) #prod = 120

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

tổng = 0
maxNum = -float('inf')
minNum = float('inf')
sản xuất = 1
đối với num trong numList:
    nếu num > maxNum:
        maxNum = số
    nếu số < phútNum:
        số phút = số
    tổng += số
    sản phẩm *= num
# sum = 15 maxNum = 5 minNum = 1 sản phẩm = 120

  。

Sau một thử nghiệm đơn giản, khi độ dài của numList là 10000000, việc tính tổng các danh sách trên máy của tôi mất 0,6 giây đối với P và 1,3 giây đối với NP, chênh lệch gần gấp đôi. Vì vậy, đừng phát minh lại bánh xe.

Danh sách hiểu.

P

  。

Sao chép mã Mã này như sau:

l = [x*x cho x trong phạm vi (10) nếu x % 3 == 0]
#l = [0, 9, 36, 81]

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

l = []
đối với x trong phạm vi (10):
    nếu x % 3 == 0:
        l.thêm(x*x)
#l = [0, 9, 36, 81]

  。

Bạn thấy đấy, bằng cách sử dụng khả năng hiểu danh sách của P, việc xây dựng một danh sách mới trở nên dễ dàng và trực quan! .

Giá trị mặc định cho từ điển.

P

  。

Sao chép mã Mã này như sau:

dic = {'tên':'Tim', 'tuổi':23} 
 
dic['thời gian làm việc'] = dic.get('thời gian làm việc',0) + 1
#dic = {'tuổi': 23, 'tuổi làm việc': 1, 'tên': 'Tim'}

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

nếu 'workage' trong dic:
    dic['thời gian làm việc'] += 1
khác:
    dic['thời gian làm việc'] = 1
#dic = {'tuổi': 23, 'tuổi làm việc': 1, 'tên': 'Tim'}

  。

Phương thức get(key,default) của dict được sử dụng để lấy giá trị của khóa trong từ điển. Nếu khóa không tồn tại, khóa sẽ được gán giá trị mặc định. So với NP, P được viết ít hơn if...else..., đây thực sự là lựa chọn hàng đầu cho những người ghét if...else...! .

cho…khác… câu lệnh.

P

  。

Sao chép mã Mã này như sau:

đối với x trong xrange(1,5):
    nếu x == 5:
        in 'tìm 5'
        phá vỡ
khác:
    in 'không tìm thấy 5!'
#không tìm thấy 5!  

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

tìm = Sai
đối với x trong xrange(1,5):
    nếu x == 5:
        tìm = Đúng
        in 'tìm 5'
        phá vỡ
nếu không tìm thấy:
    in 'không tìm thấy 5!'
#không tìm thấy 5!

  。

Phần else của for...else... được sử dụng để xử lý các tình huống không có điểm dừng trong vòng lặp for. Với nó, chúng ta không cần đặt biến trạng thái để kiểm tra xem vòng lặp for có bị đứt hay không, rất đơn giản và thuận tiện.

Một sự thay thế cho biểu tượng ternary.

P

  。

Sao chép mã Mã này như sau:

một = 3  
 
b = 2 nếu a > 2 nếu không thì 1
#b = 2

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

nếu a > 2:
    b = 2
khác:
    b = 1
#b = 2

  。

Nếu bạn có kinh nghiệm lập trình bằng C, bạn sẽ tìm kiếm các lựa chọn thay thế cho A?B:C. Bạn có thể thấy rằng A và B hoặc C có vẻ ổn, nhưng b = a > 1 và Sai hoặc Đúng trả về Đúng, trong khi ý định thực sự là trả về Sai. Sử dụng b = False nếu a > 1 khác Đúng sẽ trả về Sai một cách chính xác, vì vậy đây là sự thay thế đích thực cho ký hiệu ba ngôi.

Liệt kê 。

P

  。

Sao chép mã Mã này như sau:

mảng = [1, 2, 3, 4, 5]
 
đối với i, e trong enumerate(mảng,0):
    in i, e
#0 1
#1 2
#2 3
#3 4
#4 5

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

đối với i trong xrange(len(mảng)):
    in i, mảng[i]
#0 1
#1 2
#2 3
#3 4
#4 5

  。

Việc sử dụng enumerate có thể lấy ra chỉ mục và giá trị cùng một lúc, tránh sử dụng chỉ mục để lấy giá trị và tham số thứ hai của enumerate có thể điều chỉnh vị trí bắt đầu của chỉ số dưới chỉ mục, mặc định là 0.

Sử dụng zip để tạo cặp khóa-giá trị.

P

  。

Sao chép mã Mã này như sau:

keys = ['Tên', 'Giới tính', 'Tuổi']
giá trị = ['Tim', 'Nam', 23]
 
dic = dict(zip(khóa, giá trị))
#{'Tuổi': 23, 'Tên': 'Tim', 'Giới tính': 'Nam'}

  。

VÍ DỤ

  。

Sao chép mã Mã này như sau:

dic = {}
đối với i,e trong enumerate(keys):
    dic[e] = giá trị[i]
#{'Tuổi': 23, 'Tên': 'Tim', 'Giới tính': 'Nam'}

  。

Phương thức zip trả về một bộ dữ liệu, được sử dụng để tạo các cặp khóa-giá trị, đơn giản và rõ ràng.

Cuối cùng, bài viết này về cách làm cho mã python của bạn trở nên Pythonic hơn (ngắn gọn, rõ ràng và trang nhã) kết thúc tại đây. Nếu bạn muốn biết thêm về cách làm cho mã python của bạn trở nên Pythonic hơn (ngắn gọn, rõ ràng và trang nhã), vui lòng Tìm kiếm các bài viết CFSDN hoặc. tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress