Quảng cáo

Ngôn ngữ lập trình Python có nhiều điểm chung với các ngôn ngữ như Perl, C hay Java. Một số điểm trong Python hoàn toàn khác biệt với các ngôn ngữ khác. Nhìn chung, cú pháp của Python đơn giản hơn so với các ngôn ngữ trên.

Bài học này sẽ cung cấp những nội dung về cú pháp chung của Python mà bạn cần lưu ý và ghi nhớ, đặc biệt là với những bạn có xuất phát điểm là một ngôn ngữ họ C.

Cách hoạt động của chương trình Python

Hình dưới đây minh họa các bước trong quy trình viết code – dịch – chạy chương trình viết bằng Python.

Mã nguồn của Python là một file văn bản thông thường với phần mở rộng py. File mã nguồn Python có thể được mở và biên tập bởi bất kỳ phần mềm xử lý văn bản nào (như SubLime Text, Notepad++) hay bởi một IDE chuyên dụng (PyCharm, Visual Studio, Visual Studio Code, Spyder, Eclipse, v.v.).

File mã nguồn py được trình thông dịch (Python Interpreter) chuyển sang một dạng trung gian gọi là bytecode. Mã bytecode không phụ thuộc vào platform nào. Đây là một dạng ngôn ngữ lập trình cấp thấp (không dành cho lập trình viên).

Bytecode được chương trình máy ảo (Python virtual marchine) dịch tiếp thành mã máy tương ứng của platform và thực thi. Với cách thức này, chương trình Python có thể hoạt động trên bất kỳ platform nào với điều kiện xây dựng chương trình máy ảo Python tương ứng.

Trên thực tế chương trình máy ảo là một phần của trình thông dịch Python và hỗ trợ 3 platform quan trọng nhất hiện này (Windows, Mac, Linux). Do vậy, chương trình viết bằng Python có thể gọi là chương trình hoạt động đa nền tảng.

Mô hình hoạt động (đa nền tảng) của Python có nét tương tự với Java hay C#.

Trình thông dịch của Python còn chấp nhận viết code trực tiếp (không cần viết file mã nguồn riêng). Chế độ hoạt động này có tên gọi là chế độ tương tác (interactive mode). Khi dịch file mã nguồn, trình thông dịch Python sẽ hoạt động ở chế độ kịch bản (script mode).

Định danh và từ khóa trong Python

Định danh là tên gọi của các thành phần trong chương trình Python như tên biến, tên hằng, tên kiểu, tên hàm, v.v.. Python đặt ra một số quy tắc chung mà tất cả các định danh phải tuân thủ. Nếu không tuân thủ các quy tắc đặt định danh sẽ dấn tới lỗi cú pháp.

Quy tắc đặt định danh trong Python như sau:

  • Định danh chỉ được phép chứa các ký tự thường (a-z), ký tự hoa (A-Z), chữ số (0-9), dấu gạch chân (_). Các ký tự khác (như @, $, %, dấu cách, v.v.) không được phép có mặt trong định danh. Có thể sử dụng ký tự unicode trong định danh (ví dụ, có thể đặt tên biến bằng tiếng Việt có dấu).
  • Định danh chỉ được phép bắt đầu bằng ký tự (thường/hoa) hoặc dấu gạch chân. Tên gọi bắt đầu bằng chữ số là không hợp lệ.
  • Định danh không được trùng với một số từ dành riêng cho các mục đích đặc biệt (từ khóa).
  • Định danh trong Python phân biệt chữ hoa/thường.

Dưới đây là danh sách từ khóa trong Python mà bạn không được sử dụng làm định danh. Lưu ý rằng tất cả từ khóa trong Python đều viết thường. Bạn tạm thời chưa cần quan tâm đến ý nghĩa của các từ khóa này.

andexecnot
assertfinallyor
breakforpass
classfrom
continueglobalraise
defifreturn
delimporttry
elifinwhile
elseiswith
exceptlambdayield

Nhìn chung quy tắc đặt định danh trong Python tương tự như trong các ngôn ngữ họ C.

Ngoài các quy tắc (bắt buộc) trên, tùy từng thành phần sẽ có thêm các quy ước riêng khi đặt tên. Ví dụ tên class nên đặt theo kiểu PascalCase. Chúng ta sẽ nói chi tiết về quy ước đặt tên khi học về từng thành phần cụ thể.

Dòng lệnh và ghi chú trong Python

Trong Python, mặc định mỗi lệnh được viết trên một dòng. Kết thúc dòng cũng là báo hiệu kết thúc lệnh. Do vậy các lệnh trong Python không bắt buộc phải dùng dấu báo kết thúc (ký tự ; trong C/C++/Java/C#). Ví dụ:

name = input("Your name? ")
age = int(input("Your age? "))
print(name, age, sep = ' ')

Nếu cần viết nhiều lệnh trên cùng một dòng, các lệnh được phân tách bằng ký tự ; (giống như trong C/C++). Ví dụ:

import sys; x = 'foo'; sys.stdout.write(x + '\n')

Tuy nhiên lối viết này không được khuyến khích trong Python vì nó gây khó đọc code – đi ngược lại triết lý của Python.

Nếu một lệnh quá dài, bạn có thể viết tách nó ra nhiều dòng bằng cách thêm ký tự \ vào cuối dòng. Ký tự \ được gọi là ký tự nối dòng (line continuation character). Ví dụ:

total = item_one + \
           item_two + \
           item_three

Một số lệnh chứa các cặp dấu [], {}, () có thể viết trên nhiều dòng mà không cần ký tự nối dòng \. Ví dụ:

days = ['Monday',
        'Tuesday',
        'Wednesday',
        'Thursday',
        'Friday']

Hiện tượng này được gọi là nối dòng ngầm định (implicit line continuation). Trong trường hợp này Python có thể tự mình xác định được là lệnh trải trên nhiều dòng.

Ghi chú trong Python được đánh dấu bắt đầu bằng ký tự #. Tất cả những gì nằm sau # cho đến hết dòng tương ứng được xem là ghi chú. Python tự động bỏ qua ghi chú khi dịch mã nguồn. Ví dụ:

# First comment
print(Hello, Python!") # second comment
name = "Madisetti" # This is again comment
# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.

Trong Python chỉ sử dụng ghi chú trên từng dòng. Python không có ghi chú nhiều dòng.

Một hoặc một số dòng để trắng (hoặc chỉ chứa ghi chú) không có ảnh hưởng gì đến code. Python sẽ bỏ qua các dòng trống này. Sử dụng dòng trống để phân chia code giúp code dễ đọc hơn.

Thụt đầu dòng

Nếu bạn quen thuộc với các ngôn ngữ kiểu C, bạn sẽ thấy Python hơi khác lạ khi sử dụng dấu cách.

Trong các ngôn ngữ họ C, dấu cách đầu dòng, cuối dòng hoặc giữa các phần tử không có giá trị. Nó chỉ giúp code dễ đọc hơn.

Trong Python, dấu cách ở đầu dòng lệnh có vai trò quan trọng giúp tạo ra cấu trúc code (thành các khối code).

Bạn không được tùy tiện thụt đầu dòng dùng dấu cách vì có thể dẫn đến sai logic hoặc sai cú pháp.

Trong hình minh họa dưới đây, dòng code thứ hai sẽ bị báo lỗi “unexpected intent” do nó bị thụt vào 1 dấu cách.

Với đặc điểm này, khi viết code Python bạn không được tùy ý viết thụt đầu dòng bằng dấu cách hoặc dấu tab.

Chỉ thụt đầu dòng bằng dấu tab khi bạn cần viết khối code.

Dấu cách ở các vị trí khác không có ý nghĩa gì đặc thù trong Python.

Khối code trong Python

Một số lệnh có thể tạo thành một khối code. Khối code là một/nhóm lệnh có ranh giới với phần code khác xung quanh.

Lấy ví dụ, nếu bạn muốn lặp lại việc thực hiện một số lệnh, bạn cần đặt những lệnh này vào một khối code trong thân của cấu trúc lặp. Python cần phân biệt được khối code nằm trong thân của vòng lặp với các phần code khác.

Khối code cũng giúp phân chia vùng của biến (variable scope) – nơi bạn có thể sử dụng một biến cục bộ.

Để tạo ra khối code, các ngôn ngữ trong họ C sử dụng cặp dấu { }, Pascal/Delphi sử dụng cặp begin/end, Visual Basic sử dụng nhiều cặp từ khóa (như sub/end sub, if/end if, v.v.).

Một khối code trong Python được tạo thành bằng cách viết các lệnh với cùng số thụt đầu dòng (indentation). Tất cả code với cùng số thụt đầu dòng được xem là nằm trong một khối code.

Thông thường, các IDE Python sử dụng dấu tab để thụt đầu dòng với quy ước một thụt đầu dòng là 4 dấu cách.

Hãy xem ví dụ sau:

Đây là minh họa một chương trình Python với các khối code đã được dánh dấu. Bạn chưa cần hiểu nội dung code. Hãy tập trung vào cách phân chia khối code thông qua thụt đầu dòng.

Cách phân chia khối code này giúp Python dễ đọc và ngắn gọn hơn so với C hay Pascal.

Xuất nhập dữ liệu với console

Việc học một ngôn ngữ lập trình thường bắt đầu với giao diện console. Khi làm việc với giao diện này, việc xuất nhập dữ liệu có vai trò quan trọng. Python sử dụng các phương thức sau để làm việc với console:

  • print() – xuất dữ liệu ra console.
  • input() – nhập dữ liệu từ console.

Hãy xem các ví dụ sau:

print('Please wait while the program is loading...') # in ra một chuỗi
print('Hello', 'world', 'from', 'Python') # in nhiều giá trị, tách nhau bằng dấu cách
print('Hello', 'world', 'from', 'Python', sep = '\t') # in tách các giá trị bằng dấu tab
print(['Microsoft', 'Apple', 'Google']) # in danh sách

Trong phương thức print bạn có thể sử dụng giá trị (như ở trên), biến, hoặc biểu thức.

Nếu dùng chế độ tương tác:

>>> print('Please wait while the program is loading...')
Please wait while the program is loading...
>>> print('Hello', 'world', 'from', 'Python')
Hello world from Python
>>> print('Hello', 'world', 'from', 'Python', sep = '\t')
Hello	world	from	Python
>>> print(['Microsoft', 'Apple', 'Google'])
['Microsoft', 'Apple', 'Google']
>>>

Dưới đây là ví dụ về nhập dữ liệu từ console sử dụng phương thức input:

name = input("Your name: ")
age = input("Your age: ")
location = input("Your location: ")
print('Hello', name, age, 'from', location)

Kết luận

Trong bài học này chúng ta nhắc đến 3 khái niệm cơ bản nhất trong Python (cũng như trong các ngôn ngữ lập trình khác): định danh, dòng lệnh và khối code. Ngoại trừ định danh, trong Python, dòng lệnh và khối code có nhiều khác biệt với các ngôn ngữ khác, nhất là các ngôn ngữ họ C. Bạn nên lưu ý những vấn đề này trước khi tìm hiểu sâu hơn về Python.

  • Nếu bạn thấy site hữu ích, trước khi rời đi hãy giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.
  • Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.
  • Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.

Chúc các bạn thành công!

Quảng cáo
Tôi là một người mới học lập trình và Tôi mong muốn gửi đến các bạn những bài học lập trình mới nhất, thông dụng. Hãy cùng tôi học các ngôn ngữ nhé!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây

*

code

This site uses Akismet to reduce spam. Learn how your comment data is processed.