[Python] Tìm hiểu Python statement và indentation

Statement

Trong ngôn ngữ lập trình bậc cao, đây là một sự diễn đạt có thể tạo ra các chỉ lệnh theo ngôn ngữ máy, khi chương trình được thông dịch hoặc biên dịch. Tóm gọi lại có thể hiểu nôm na là ‘một câu lệnh’.

Indentation và Code block

Thế code block là gì ?

Code block có thể hiểu là các hàm, các if statement, for loops, while loops,….

Các code block của Python không có kí tự thể hiện ‘begin’ của 1 code block hay ‘end’ của 1 code block, càng không sử dụng kí tự bracket ‘{‘ ‘}’ để đánh dấu bắt đầu kết thúc của 1 một code block như một vài ngôn ngữ lập trình khác như C, PHP,..

Ví dụ code block PHP:

<?php
	if (4>1)
	{
		echo "Dung";
	}
?>

 
Vậy python sẽ thể hiện 1 code block như thế nào ? Python sử dụng kí tự ‘:’ và ‘khoảng trắng vào dòng (indentation)’. Một code block sẽ bắt đầu bằng một khoảng trắng thụt đầu dòng ‘indentation’ và kết thúc bằng 1 dòng không indentation hoặc indentation bằng với code block sub nếu có nhiều code block con như kiểu if lồng if.

Ví dụ 1:

n = 2
if n > 1:
	print(“Lon hon”)
else:
	print(“Nho hon”)
	print(“Het code nhe”)

 

Ví dụ 2:

for i in range(1,11):
    print(i)
    if i == 5:
        break

Tất cả các statement nếu có cùng một độ dài khoảng trắng từ bên trái về bên phải, thì được xem là cùng 1 block code. Như bạn thấy ở ví dụ 1 thì “if” và “else” là cùng 1 code block.

Vậy làm sao để phân biệt khi nào dòng code statement nào đó không còn thuộc code block và kết thúc 1 code block lớn. Khi mà bạn thấy statement được về đầu dòng không có indentation hoặc trong 1 code block lớn thì code block sub thụt indent về bằng với indent của block lớn thì là đã kết thúc 1 code block.

Ví dụ 3:

var2 = “demo”
def test(var1):
    print(var1)
print(var2)

-> Lúc này ‘print(“var2”)’ đã nằm ngoài code block ‘def test’ do cùng độ dài indentation với code block ‘def test’.

Ví dụ 4:

from math import sqrt
n = input("Maximum Number? ")
n = int(n)+1

for a in range(1,n):
    for b in range(a,n):
        c_square = a**2 + b**2
        c = int(sqrt(c_square))
        if ((c_square - c**2) == 0):
            print(a, b, c)
    for c in range(a,n):
    
print(c)
print(“Finish”)

-> ‘ for c in range(a,n): ‘ , nằm ngoài code block của ‘ for b..’ nhưng vẫn nằm trong code block ‘for a …’ do cùng độ dài indentation ‘for b’ và nằm sau độ dài indentation với ‘for a …’  . Còn ‘print(“Finish”)’ thì nằm ngoài code block ‘for’.

Có thể cách diễn giải của mình còn kém về phần developer, mong các bạn thông cảm.

Previous articleHướng dẫn khôi phục tên card mạng eth-x trên CentOS/RHEL 7
Next articleFix lỗi PEM routines:PEM_read_bio:bad end line error trên Nginx
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !