Hướng dẫn does python have a syntax? - python có cú pháp không?

Python ban đầu được phát triển như một ngôn ngữ giảng dạy, nhưng sự dễ sử dụng và cú pháp sạch đã khiến nó được những người mới bắt đầu và các chuyên gia chấp nhận. Sự sạch sẽ của cú pháp của Python đã khiến một số người gọi nó là "mã giả thực thi", và thực sự kinh nghiệm của tôi là nó thường dễ đọc và hiểu một kịch bản Python hơn là đọc một kịch bản tương tự được viết, ở đây Chúng ta sẽ bắt đầu thảo luận về các tính năng chính của cú pháp của Python.

Cú pháp đề cập đến cấu trúc của ngôn ngữ (nghĩa là, những gì cấu thành một chương trình được hình thành chính xác). Hiện tại, chúng tôi sẽ không tập trung vào ngữ nghĩa - ý nghĩa của các từ và ký hiệu trong cú pháp - nhưng sẽ trở lại điều này vào một điểm sau.

Xem xét ví dụ mã sau:

In [1]:

# set the midpoint
midpoint = 5

# make two empty lists
lower = []; upper = []

# split the numbers into lower and upper
for i in range(10):
    if (i < midpoint):
        lower.append(i)
    else:
        upper.append(i)
        
print("lower:", lower)
print("upper:", upper)

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]

Kịch bản này là một chút ngớ ngẩn, nhưng nó nhỏ gọn minh họa một số khía cạnh quan trọng của cú pháp Python. Hãy đi qua nó và thảo luận về một số tính năng cú pháp của Python

Kịch bản bắt đầu bằng một bình luận:

Nhận xét trong Python được biểu thị bằng một dấu hiệu pound (

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
4), và bất cứ điều gì trên dòng theo dấu hiệu pound đều bị thông dịch viên bỏ qua. Điều này có nghĩa là, ví dụ, bạn có thể có những nhận xét độc lập như ý kiến ​​vừa hiển thị, cũng như các bình luận nội tuyến theo một tuyên bố. Ví dụ:

x += 2  # shorthand for x = x + 2

Python không có bất kỳ cú pháp nào cho các nhận xét đa dòng, chẳng hạn như cú pháp

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
5 được sử dụng trong C và C ++, mặc dù các chuỗi đa dòng thường được sử dụng để thay thế cho các nhận xét đa dòng (nhiều hơn về thao tác chuỗi này và biểu thức thông thường) .

Kết thúc dòng chấm dứt câu lệnh

Dòng tiếp theo trong tập lệnh là

Đây là một hoạt động gán, trong đó chúng tôi đã tạo một biến có tên

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
6 và gán nó là giá trị
lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
7. Lưu ý rằng phần cuối của tuyên bố này được đánh dấu đơn giản bởi phần cuối của dòng. Điều này trái ngược với các ngôn ngữ như C và C ++, trong đó mọi tuyên bố phải kết thúc bằng dấu chấm phẩy (
lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
8).

Trong Python, nếu bạn muốn một tuyên bố tiếp tục đến dòng tiếp theo, có thể sử dụng điểm đánh dấu "

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
9" để chỉ ra điều này:

In [2]:

x = 1 + 2 + 3 + 4 +\
    5 + 6 + 7 + 8

Cũng có thể tiếp tục các biểu thức trên dòng tiếp theo trong ngoặc đơn mà không cần sử dụng điểm đánh dấu "

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
9":

In [3]:

x = (1 + 2 + 3 + 4 +
     5 + 6 + 7 + 8)

Hầu hết các hướng dẫn kiểu Python đề xuất phiên bản thứ hai của tiếp tục dòng (trong ngoặc đơn) sang phần đầu tiên (sử dụng điểm đánh dấu "

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
9").

Bán kết có thể chấm dứt một cách tùy ý

Đôi khi nó có thể hữu ích để đặt nhiều câu lệnh trên một dòng. Phần tiếp theo của kịch bản là

Điều này cho thấy ví dụ về cách phân tích (

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
8) quen thuộc trong C có thể được sử dụng tùy chọn trong Python để đặt hai câu lệnh trên một dòng. Về mặt chức năng, điều này hoàn toàn tương đương với việc viết

Sử dụng một dấu chấm phẩy để đặt nhiều tuyên bố trên một dòng thường không được khuyến khích bởi hầu hết các hướng dẫn theo phong cách Python, mặc dù đôi khi nó tỏ ra thuận tiện.

Thụt lề: vấn đề khoảng trắng! ¶

Tiếp theo, chúng ta đến khối chính của mã:

for i in range(10):
    if i < midpoint:
        lower.append(i)
    else:
        upper.append(i)

Đây là một câu lệnh dòng điều khiển hợp chất bao gồm một vòng lặp và một điều kiện-chúng ta sẽ xem xét các loại câu lệnh này trong một khoảnh khắc. Hiện tại, hãy xem xét rằng điều này thể hiện những gì có lẽ là đặc điểm gây tranh cãi nhất của cú pháp của Python: Whitespace có ý nghĩa!

Trong các ngôn ngữ lập trình, một khối mã là một tập hợp các câu lệnh nên được coi là một đơn vị. Ví dụ, trong C, các khối mã được biểu thị bằng niềng răng xoăn:

// C code
for(int i=0; i<100; i++)
   {
      // curly braces indicate code block
      total += i;
   }

Trong Python, các khối mã được ký hiệu bằng vết lõm:

for i in range(100):
    # indentation indicates code block
    total += i

Trong Python, các khối mã thụt luôn luôn đi trước một dấu hai chấm (

x += 2  # shorthand for x = x + 2
3) trên dòng trước.

Việc sử dụng thụt lề giúp thực thi phong cách thống nhất, có thể đọc được mà nhiều người thấy hấp dẫn trong mã Python. Nhưng nó có thể gây nhầm lẫn cho những người không quen biết; Ví dụ: hai đoạn trích sau đây sẽ tạo ra kết quả khác nhau:

>>> if x < 4:         >>> if x < 4:
...     y = x * 2     ...     y = x * 2
...     print(x)      ... print(x)

Trong đoạn trích bên trái,

x += 2  # shorthand for x = x + 2
4 nằm trong khối thụt lề và sẽ chỉ được thực thi nếu
x += 2  # shorthand for x = x + 2
5 nhỏ hơn
x += 2  # shorthand for x = x + 2
6. Trong đoạn trích bên phải
x += 2  # shorthand for x = x + 2
4 nằm ngoài khối và sẽ được thực thi bất kể giá trị của
x += 2  # shorthand for x = x + 2
5!

Việc Python sử dụng khoảng trắng có ý nghĩa thường gây ngạc nhiên cho các lập trình viên đã quen với các ngôn ngữ khác, nhưng trên thực tế, nó có thể dẫn đến mã nhất quán và dễ đọc hơn nhiều so với các ngôn ngữ không thực thi các khối mã. Nếu bạn thấy Python sử dụng khoảng trắng không đồng ý, tôi khuyến khích bạn dùng thử: Như tôi đã làm, bạn có thể thấy rằng bạn đến để đánh giá cao nó.

Cuối cùng, bạn nên lưu ý rằng lượng khoảng trắng được sử dụng cho các khối mã thụt vào người dùng, miễn là nó nhất quán trong suốt tập lệnh. Theo quy ước, hầu hết các hướng dẫn phong cách khuyên dùng các khối mã thụt theo bốn không gian và đó là quy ước chúng tôi sẽ làm theo trong báo cáo này. Lưu ý rằng nhiều trình chỉnh sửa văn bản như Emacs và VIM chứa các chế độ Python tự động thực hiện thụt bốn không gian.

Khoảng trắng trong các dòng không quan trọng trong

Mặc dù câu thần chú của khoảng trắng có ý nghĩa đúng với khoảng trắng trước các dòng (biểu thị một khối mã), thì không gian trắng trong các dòng mã python không quan trọng. Ví dụ, cả ba biểu thức này đều tương đương:

In [4]:

x=1+2
x = 1 + 2
x             =        1    +                2

Việc lạm dụng tính linh hoạt này có thể dẫn đến các vấn đề với khả năng đọc mã - trên thực tế, lạm dụng không gian trắng thường là một trong những phương tiện chính của việc cố ý làm xua tan mã (mà một số người làm cho thể thao). Sử dụng Whitespace một cách hiệu quả có thể dẫn đến mã dễ đọc hơn nhiều, đặc biệt là trong trường hợp các nhà khai thác theo dõi nhau - so sánh hai biểu thức sau đây để thống nhất theo số âm:

đến

Tôi tìm thấy phiên bản thứ hai với không gian dễ đọc hơn nhiều trong một cái nhìn thoáng qua. Hầu hết các hướng dẫn theo phong cách Python khuyên bạn nên sử dụng một không gian duy nhất xung quanh các nhà khai thác nhị phân và không có khoảng trống xung quanh các toán tử Unary. Chúng ta sẽ thảo luận về các nhà khai thác của Python hơn nữa trong ngữ nghĩa Python cơ bản: các nhà khai thác.

Dấu ngoặc đơn là để nhóm hoặc gọi tor

Trong đoạn mã trước, chúng ta thấy hai cách sử dụng dấu ngoặc đơn. Đầu tiên, chúng có thể được sử dụng theo cách điển hình để phát biểu nhóm hoặc hoạt động toán học:

Chúng cũng có thể được sử dụng để chỉ ra rằng một chức năng đang được gọi. Trong đoạn trích tiếp theo, hàm

x += 2  # shorthand for x = x + 2
9 được sử dụng để hiển thị nội dung của một biến (xem thanh bên). Cuộc gọi chức năng được biểu thị bằng một cặp dấu ngoặc đơn mở và đóng, với các đối số cho hàm có trong:

In [7]:

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
0

Một số chức năng có thể được gọi mà không có đối số nào cả, trong trường hợp đó, dấu ngoặc đơn mở và đóng vẫn phải được sử dụng để chỉ ra đánh giá chức năng. Một ví dụ về điều này là phương pháp danh sách

x = 1 + 2 + 3 + 4 +\
    5 + 6 + 7 + 8
0:

In [8]:

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
1

"

x = 1 + 2 + 3 + 4 +\
    5 + 6 + 7 + 8
1" sau
x = 1 + 2 + 3 + 4 +\
    5 + 6 + 7 + 8
0 chỉ ra rằng chức năng nên được thực thi và được yêu cầu ngay cả khi không cần đối số.

Bên cạnh: một lưu ý về hàm x += 2 # shorthand for x = x + 2 9

Trên đây, chúng tôi đã sử dụng ví dụ về hàm

x += 2  # shorthand for x = x + 2
9. Hàm
x += 2  # shorthand for x = x + 2
9 là một mảnh đã thay đổi giữa Python 2.x và Python 3.x. Trong Python 2,
x = 1 + 2 + 3 + 4 +\
    5 + 6 + 7 + 8
6 hành xử như một tuyên bố: đó là bạn có thể viết

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
2

Vì nhiều lý do, những người duy trì ngôn ngữ đã quyết định rằng trong Python 3

x += 2  # shorthand for x = x + 2
9 sẽ trở thành một chức năng, vì vậy bây giờ chúng tôi viết

lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
3

Đây là một trong nhiều cấu trúc không tương thích ngược giữa Python 2 và 3. Khi viết cuốn sách này, người ta thường tìm thấy các ví dụ được viết trong cả hai phiên bản của Python và sự hiện diện của câu lệnh

x = 1 + 2 + 3 + 4 +\
    5 + 6 + 7 + 8
6 thay vì hàm
x += 2  # shorthand for x = x + 2
9 là Thường thì một trong những dấu hiệu đầu tiên mà bạn đang xem mã Python 2.

Hoàn thành và học thêm

Đây là một cuộc thám hiểm rất ngắn gọn về các tính năng thiết yếu của cú pháp Python; Mục đích của nó là cung cấp cho bạn một khung tham chiếu tốt cho khi bạn đọc mã trong các phần sau. Một vài lần chúng tôi đã đề cập đến "hướng dẫn phong cách" Python, có thể giúp các nhóm viết mã theo phong cách nhất quán. Hướng dẫn phong cách được sử dụng rộng rãi nhất trong Python được gọi là PEP8 và có thể được tìm thấy tại https://www.python.org/dev/peps/pep-0008/. Khi bạn bắt đầu viết thêm mã Python, sẽ rất hữu ích khi đọc qua điều này! Các gợi ý về phong cách chứa đựng sự khôn ngoan của nhiều bậc thầy Python, và hầu hết các đề xuất vượt ra ngoài những người bán hàng đơn giản: chúng là những khuyến nghị dựa trên kinh nghiệm có thể giúp tránh những sai lầm và lỗi tinh tế trong mã của bạn.

Python sử dụng cú pháp nào?

Python sử dụng khoảng trắng (khoảng trắng và tab) để xác định các khối chương trình trong khi các ngôn ngữ khác như C, C ++ sử dụng niềng răng ({}) để chỉ ra các khối mã cho lớp, chức năng hoặc điều khiển luồng.whitespace (spaces and tabs) to define program blocks whereas other languages like C, C++ use braces ({}) to indicate blocks of codes for class, functions or flow control.

Python có cú pháp dễ dàng không?

Cú pháp đơn giản, dễ học của Python nhấn mạnh khả năng đọc và do đó giảm chi phí bảo trì chương trình.Python hỗ trợ các mô -đun và gói, khuyến khích mô đun chương trình và tái sử dụng mã. emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse.