3 dấu ngoặc kép trong Python

Python thường để lại cho bạn các tùy chọn và trích dẫn cũng không ngoại lệ. Sự khác biệt giữa dấu nháy đơn và dấu ngoặc kép trong Python là gì?

Bạn thấy đấy, Python khác rất nhiều so với Java. Trong Java, bạn phải sử dụng dấu ngoặc kép cho chuỗi và chỉ được phép sử dụng dấu nháy đơn cho ký tự. Đó không phải là thỏa thuận với Python. Bạn linh hoạt hơn nhiều so với các ngôn ngữ được nhập tĩnh. Nhưng nó thực sự là một điều tốt?

Không cảm thấy như đọc?


Dấu ngoặc đơn được sử dụng để làm gì trong Python?

Trong Python, cách tốt nhất là sử dụng dấu ngoặc đơn để bao quanh các chuỗi nhỏ và ngắn, chẳng hạn như chuỗi ký tự hoặc mã định danh. Nhưng đây là thỏa thuận - nó không phải là một yêu cầu. Bạn có thể viết toàn bộ đoạn văn và bài báo bên trong dấu nháy đơn

Dưới đây là một vài ví dụ

name = 'Bob'
print(name)

channel = 'Better Data Science'
print(channel)

paragraph = 'Bob likes the content on Better Data Science. Bob is cool. Be like Bob.'
print(paragraph)
3 dấu ngoặc kép trong Python
Hình ảnh 1 - Ví dụ về dấu nháy đơn (hình ảnh của tác giả)

Không có giới hạn ký tự nào được đặt cho nội dung giữa các dấu nháy đơn, nhưng có một vài vấn đề bạn chắc chắn sẽ gặp phải. Cái đầu tiên là một dấu ngoặc kép bên trong một chuỗi

Vấn đề với Dấu ngoặc kép bên trong Chuỗi

Ngôn ngữ tiếng Anh có đầy dấu nháy đơn (dấu nháy đơn). Ví dụ, tôi có thể viết we are hoặc we're và cả hai đều đại diện cho cùng một thứ. Chọn tùy chọn thứ hai có vấn đề nếu bạn muốn sử dụng dấu ngoặc đơn để bao quanh các chuỗi trong Python

print('We're going skiing this winter.')
3 dấu ngoặc kép trong Python
Hình 2 - Lỗi cú pháp khi in chuỗi có dấu ngoặc kép (ảnh của tác giả)

Python cho rằng chuỗi kết thúc sau

print('We're going skiing this winter.')
0, vì vậy mọi thứ sau chuỗi đó được coi là lỗi cú pháp. Bạn có thể dễ dàng phát hiện ra những lỗi như thế này trong trình chỉnh sửa mã, vì phần sau
print('We're going skiing this winter.')
0 được tô màu khác

Có ba cách xung quanh nó

  1. Ngừng sử dụng các từ rút gọn (chúng tôi -> chúng tôi) - Không thực tế chút nào
  2. Thoát một chuỗi - Một khả năng chúng ta sẽ khám phá tiếp theo
  3. Sử dụng dấu ngoặc kép - Điều gì đó chúng tôi sẽ đề cập sau

Thoát một chuỗi trong Python

Ý tưởng chính đằng sau việc thoát một chuỗi là ngăn một số ký tự nhất định được sử dụng như một phần của ngôn ngữ lập trình. Ví dụ: chúng tôi không muốn dấu nháy đơn được coi là dấu ngoặc kép

Trong Python, bạn có thể sử dụng dấu gạch chéo ngược (

print('We're going skiing this winter.')
2) để thoát khỏi ký tự chuỗi

print('We\'re going skiing this winter.')
3 dấu ngoặc kép trong Python
Hình ảnh 3 - Thoát một ký tự trong Python (hình ảnh của tác giả)

Điều đó thật tuyệt, nhưng dấu gạch chéo ngược thường được sử dụng làm ký tự chữ trong chuỗi - ví dụ: để biểu thị đường dẫn trên máy tính. Hãy xem điều gì sẽ xảy ra nếu bạn cố in một đường dẫn bằng ký tự thoát

print('C:\Users\Bob')
3 dấu ngoặc kép trong Python
Hình 4 - Lỗi cú pháp khi sử dụng ký tự thoát không hợp lệ (hình của tác giả)

Có lẽ không phải là những gì bạn muốn xem. Hóa ra, bạn có thể thoát khỏi ký tự thoát theo hai cách

  1. Bằng cách sử dụng chuỗi thô - Viết
    print('We're going skiing this winter.')
    3 trước dấu ngoặc kép đầu tiên
  2. Sử dụng dấu gạch chéo ngược kép - Điều này về cơ bản sẽ thoát khỏi ký tự thoát

Đây là cách sử dụng cả hai

print(r'C:\Users\Bob')
print('C:\\Users\\Bob')
3 dấu ngoặc kép trong Python
Hình 5 - Hai cách sử dụng dấu gạch chéo ngược bên trong một chuỗi (hình ảnh của tác giả)

Hai điều này áp dụng cho cả các chuỗi được bao quanh bởi dấu ngoặc đơn và dấu ngoặc kép. Chúng tôi chưa đề cập đến dấu ngoặc kép, vì vậy hãy làm điều đó tiếp theo

Dấu ngoặc kép được sử dụng để làm gì trong Python?

Cách tốt nhất là sử dụng dấu ngoặc kép cho các thông báo ngôn ngữ tự nhiên, phép nội suy chuỗi và bất cứ khi nào bạn biết sẽ có dấu ngoặc đơn trong chuỗi

Dưới đây là một vài ví dụ

name = 'Bob'

# Natural language
print("It is easy to get confused with single and double quotes in Python.")

# String interpolation
print(f"{name} said there will be food.")

# No need to escape a character
print("We're going skiing this winter.")

# Quotation inside a string
print("My favorite quote from Die Hard is 'Welcome to the party, pal'")
3 dấu ngoặc kép trong Python
Hình 6 - Sử dụng dấu ngoặc kép trong Python (ảnh của tác giả)

Như bạn có thể thấy, chúng ta có thể dễ dàng nhúng các trích dẫn vào các chuỗi được bao quanh bởi dấu ngoặc kép. Ngoài ra, không cần phải thoát một ký tự như chúng ta đã làm với dấu nháy đơn

Ghi nhớ. bạn không thể sử dụng lại dấu ngoặc kép trong một chuỗi được bao quanh bởi dấu ngoặc kép. Làm như vậy sẽ dẫn đến lỗi cú pháp giống như với dấu nháy đơn

print('We're going skiing this winter.')
0
3 dấu ngoặc kép trong Python
Hình 7 - Lỗi cú pháp khi sử dụng dấu ngoặc kép bên trong chuỗi dấu ngoặc kép (ảnh của tác giả)

Để giảm thiểu, bạn có thể sử dụng lại giải pháp từ phần trước, nhưng thay vào đó, bạn cũng có thể bọc chuỗi trong dấu nháy đơn

print('We're going skiing this winter.')
1
3 dấu ngoặc kép trong Python
Hình 8 - Sử dụng dấu nháy kép trong chuỗi (ảnh của tác giả)

Bây giờ bạn đã biết cách sử dụng cả dấu ngoặc đơn và dấu ngoặc kép trong Python. Tiếp theo, chúng tôi sẽ tóm tắt về sự khác biệt và giới thiệu các phương pháp hay nhất

Sự khác biệt giữa dấu ngoặc kép đơn và kép trong Python là gì?

Đây là bảng tóm tắt trả lời câu hỏi Bạn nên sử dụng dấu ngoặc đơn hay dấu ngoặc kép trong Python

3 dấu ngoặc kép trong Python
Hình 9 - Sự khác biệt giữa dấu ngoặc đơn và dấu ngoặc kép trong Python (ảnh của tác giả)

Nói tóm lại, bạn có thể sử dụng cả hai trong mọi trường hợp, nhưng dấu ngoặc kép thường được sử dụng hơn với văn bản và chuỗi dài hơn. Không ai cấm bạn sử dụng dấu ngoặc đơn ở mọi nơi, nhưng bạn sẽ phải cẩn thận hơn, vì dấu ngoặc đơn nhạy cảm hơn với các ký tự cụ thể

Có một số đề xuất chính thức từ những người tạo ra Python, vì vậy hãy xem qua chúng trong phần tiếp theo

Python đơn vs. Dấu ngoặc kép PEP8

Theo PEP8

  • PEP không đưa ra khuyến nghị về việc nên sử dụng dấu ngoặc đơn hay dấu ngoặc kép - hãy chọn một quy tắc và tuân theo quy tắc đó
  • Khi một chuỗi được bao quanh bởi dấu nháy đơn, hãy sử dụng dấu nháy kép bên trong chuỗi để tránh dấu gạch chéo ngược
  • Khi một chuỗi được bao quanh bởi dấu ngoặc kép, hãy sử dụng dấu ngoặc đơn bên trong chuỗi đó để tránh dấu gạch chéo ngược
  • Khi sử dụng chuỗi trích dẫn ba, hãy luôn sử dụng ký tự trích dẫn kép bên trong chuỗi đó

Chúng ta sẽ sớm xem xét ba chuỗi được trích dẫn và các trường hợp sử dụng của chúng

Độc thân so với. Trích dẫn kép Thực tiễn tốt nhất

Các phương pháp hay nhất cho chuỗi trích dẫn đơn

  • Đảm bảo chuỗi hơi ngắn hoặc bạn đang xử lý chuỗi ký tự
  • Đảm bảo rằng không có trích dẫn đơn nào bên trong chuỗi, vì việc thêm các ký tự thoát sẽ ảnh hưởng đến khả năng đọc

Các phương pháp hay nhất cho chuỗi trích dẫn kép

  • Sử dụng dấu ngoặc kép cho nội suy chuỗi và văn bản
  • Sử dụng dấu ngoặc kép khi có một dấu ngoặc kép bên trong một chuỗi - bạn có thể dễ dàng bao quanh dấu ngoặc kép bằng dấu nháy đơn

Bạn nên sử dụng dấu ngoặc đơn hay dấu ngoặc kép trong Python?

Câu trả lời cuối cùng là - nó phụ thuộc, chủ yếu vào sở thích phong cách của bạn. Python không tạo ra bất kỳ sự khác biệt nào giữa dấu ngoặc đơn và dấu ngoặc kép, vì vậy quyết định là tùy thuộc vào bạn

Những gì bạn không nên làm là liên tục chuyển đổi giữa dấu ngoặc đơn và dấu ngoặc kép bên trong một tệp Python hoặc một mô-đun. Chọn cái bạn thích hơn và nhất quán với nó

Ba trích dẫn trong Python

Đúng - thậm chí còn có loại trích dẫn thứ ba trong Python. Chúng có những ưu điểm riêng

  • Bạn có thể sử dụng cả dấu ngoặc đơn và dấu ngoặc kép bên trong chúng
  • Bạn có thể chia chuỗi thành nhiều dòng
  • Chúng được coi là một cách thực hành tốt nhất khi viết tài liệu

Hãy đi qua một vài ví dụ

print('We're going skiing this winter.')
2
3 dấu ngoặc kép trong Python
Hình 10 - Ba dấu ngoặc kép trong Python (hình của tác giả)

Như bạn có thể thấy, không có ký tự trích dẫn ba chuyên dụng trên bàn phím, vì vậy chúng tôi viết chúng bằng cách sử dụng ba trích dẫn đơn hoặc ba trích dẫn kép. Ưu điểm lớn nhất là bạn có thể chia chuỗi thành nhiều dòng chỉ bằng cách nhấn Enter, giúp cải thiện đáng kể khả năng đọc

Tuy nhiên, trường hợp sử dụng chính cho dấu ngoặc kép là các chuỗi tài liệu (docstrings) cho các hàm

print('We're going skiing this winter.')
3

Bạn có thể tự do sử dụng cả

print('We're going skiing this winter.')
4 và
print('We're going skiing this winter.')
5 để bao quanh một chuỗi tài liệu, nhưng quy ước là sử dụng chuỗi sau


Sự kết luận

Câu chuyện dài - sự khác biệt giữa chuỗi trích dẫn đơn và kép trong Python là tối thiểu. Bạn có thể sử dụng một trong hai cho bất kỳ thứ gì - chỉ cần đảm bảo tuân thủ các quy ước lập trình của bạn. Có một số trường hợp sử dụng khi một loại có lợi thế hơn loại kia, nhưng những trường hợp này rất ít và cách xa nhau

Chuỗi trích dẫn đơn có thể gây rắc rối cho bạn nếu có trích dẫn bên trong chuỗi, vì vậy hãy ghi nhớ điều đó. Các chuỗi được trích dẫn kép là một cách đặt cược an toàn hơn, nhưng không đủ để chọn cái này hơn cái kia

Ba dấu ngoặc kép có nghĩa là gì trong Python?

Để tạo chuỗi trải rộng trên nhiều dòng, bộ ba dấu nháy đơn ''' hoặc bộ ba dấu nháy kép """ được dùng để bao quanh chuỗi . ''' Chuỗi này nằm trên nhiều dòng trong ba dấu nháy đơn ở hai bên.

3 dấu ngoặc kép có nghĩa là gì?

Dấu ngoặc kép ba lần là một cách hay để có thể bao gồm các loại dấu ngoặc kép khác trong chuỗi của bạn mà không phải sử dụng các ký tự thoát . Ví dụ. print("He said \"my name's John\"") Ví dụ đó yêu cầu ký tự thoát \" để sử dụng dấu ngoặc kép.

Trích dẫn kép trong Python là gì?

Thông thường, dấu ngoặc kép được được sử dụng để biểu diễn chuỗi và dấu ngoặc đơn được sử dụng cho biểu thức chính quy, phím dict hoặc SQL. Do đó, cả trích dẫn đơn và trích dẫn kép đều mô tả chuỗi trong python nhưng đôi khi chúng ta cần sử dụng loại này thay vì loại kia.

Sự khác biệt giữa dấu nháy đơn và dấu ngoặc kép trong Python là gì?

Trên thực tế, chúng ta có thể sử dụng dấu ngoặc kép (i. e. , bộ ba dấu ngoặc đơn hoặc bộ ba dấu ngoặc kép) để biểu thị các chuỗi chứa cả dấu ngoặc đơn và dấu ngoặc kép để loại bỏ nhu cầu thoát bất kỳ. >>> print('''Cô ấy nói, "Cảm ơn. Nó là của tôi. "''')