Reportar esta app

Description

Cách hoạt động của chương trình 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,Visucal Studio, visual studio code, spyder, Eclipse….)

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.

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 nay. (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 trình Python như tên biến, tên hằng, tên kiểu, tên hàm.. 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ẽ đẫn tới lỗi cú phát.

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,…) 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 ý 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
  • Định danh trong Python phân biệt chữ hoa/ thường
Tham khảo thêm ngay  Property (thuộc tính) trong Python

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ả cá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á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 ngôn ngữ họ C

Ngoài các quy tắ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#)


1
2
3
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ách lệnh được phân tách bằng kí tự ;, giống như trong C/C++ ví dụ

1.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ì gây khó đọc code

Nếu một lệnh quá dài, bạn có thể 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).


1
2
3
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ụ:






1
2
3
4
5
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.

Tham khảo thêm ngay  Hướng dẫn tự học lập trình Python

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ụ:






1
2
3
4
5
6
7
# 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 không ả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 hoạt dưới dây, dòng code thứ hai sẽ bị lỗi ” unexpected intent” do nó bị thụt vào 1 dấu cách.

Với đặc điểm này, khi code Python bạn không được tùy tiện dùng dấu thụt dòng hoặc tab

Chỉ thụt dòng bằng dấu dấu, 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 và 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.

Tham khảo thêm ngay  Tham số trong hàm trong Python

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…)

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.

Đây là minh hoạt một chương trình Python với các khối code đã được đánh dấu. Bạn chưa cần hiểu nội dung code. Hãy tập trung vào các 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 ví dụ sau:






1
2
3
4
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






1
2
3
4
5
6
7
8
9
>>> 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


1
2
3
4
name = input("Your name: ")
age = input("Your age: ")
location = input("Your location: ")
print('Hello', name, age, 'from', location)

Leave a Reply

Your email address will not be published. Required fields are marked *