Pythonic là gì?

Pythonic là gì Pythonic là một Idioms mô tả cách tiếp cận lập trình phù hợp với triết lý sáng lập của ngôn ngữ lập trình Python . Có nhiều cách để viết code tương tự nhau trong Python, nhưng có một cách được ưu thích hơn để thực hiện nó. Cách ưa thích này

Pythonic là gì

Pythonic là một Idioms mô tả cách tiếp cận lập trình phù hợp với triết lý sáng lập của ngôn ngữ lập trình Python . Có nhiều cách để viết code tương tự nhau trong Python, nhưng có một cách được ưu thích hơn để thực hiện nó. Cách ưa thích này được gọi là “pythonic.”
Ngược lại, code khó hiểu hoặc đọc giống như một bản phiên âm thô từ một ngôn ngữ lập trình khác được gọi là “unpythonic”.

Triết lý viết code trong Python

  • Đẹp đẽ tốt hơn xấu xí
  • Minh bạch tốt hơn che đậy
  • Đơn giản tốt hơn phức tạp
  • Phức tạp tốt hơn rắc rối
  • Dễ đọc
    Chúng ta hãy cùng tham khảo một vài ví dụ dưới đây.
i = 0
while i < mylist_length:
   do_something(mylist[i])
   i += 1

Mặc dù đoạn code trên hoạt động tốt, nhưng nó không được coi là Pythonic. Nó không phải là một idiom mà ngôn ngữ Python khuyến khích. Chúng ta có thể cải thiện nó. Một idiom điển hình trong Python để tạo tất cả các số trong list sẽ là sử dụng hàm range () được tích hợp sẵn:

for i in range(mylist_length):
   do_something(mylist[i])

Tuy nhiên, đây vẫn không phải là Pythonic. Đây là cách Pythonic, được chính ngôn ngữ khuyến khích:

for element in mylist:
   do_something(element)

7 Ví dụ về code pythonic

1. Hoán đổi giá trị giữa 2 biến

Bad

tmp = a
a = b
b = tmp

Pythonic

a,b = b,a

2. Sử dụng list

Bad

my_list = []
for i in range(10):
    my_list.append(i*2)

Pythonic

my_list = [i*2 for i in range(10)]

3. Duyệt mảng có đánh thứ tự

Bad

for i in range(len(my_list)):
    print(i, "-->", my_list[i])

Pythonic

for i,item in enumerate(my_list):
    print(i, "-->",item)

4. Unpacking

Pythonic

a, *rest = [1, 2, 3]
# a = 1, rest = [2, 3]

a, *middle, c = [1, 2, 3, 4]
# a = 1, middle = [2, 3], c = 4

5. Nối các phần tử trong mảng

Bad

letters = ['s', 'p', 'a', 'm']
s=""
for let in letters:
    s += let

Pythonic

letters = ['s', 'p', 'a', 'm']
word = ''.join(letters)

6. Kiểm tra điều kiện

Bad

if attr == True:
    print 'True!'

if attr == None:
    print 'attr is None!'

Pythonic

if attr:
    print 'attr is truthy!'

if not attr:
    print 'attr is falsey!'

if attr is None:
    print 'attr is None!'

7. Hoạt động của mảng

Bad

a = [3, 4, 5]
b = []
for i in a:
    if i > 4:
        b.append(i)

Pythonic

a = [3, 4, 5]
b = [i for i in a if i > 4]
# Or:
b = filter(lambda x: x > 4, a)

Bad

a = [3, 4, 5]
for i in range(len(a)):
    a[i] += 3

Pythonic

a = [3, 4, 5]
a = [i + 3 for i in a]
# Or:
a = map(lambda i: i + 3, a)

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ