Bài 4: Cú pháp Python cơ bản
19:35 | 02.09.2021 | Posted By: Võ Hoàng Nhân

Trong bài này mình sẽ trình bày khái quát cho bạn về cú pháp Python cơ bản. Mục đích là giúp bạn làm quen dần các khái niệm và thuật ngữ được sử dụng trong Python từ đó bạn có thể rút ra điểm giống và khác nhau với một số ngôn ngữ lập trình khác.

Định danh (identifier) trong Python

Một định danh (identifier) trong Python là một tên được sử dụng để nhận diện một biến, một hàm, một lớp, hoặc một đối tượng. Một định danh bắt đầu với một chữ cái từ A tới Z hoặc từ a tới z hoặc một dấu gạch dưới (_) được theo sau bởi 0 hoặc nhiều ký tự, dấu gạch dưới hoặc các ký số (từ 0 tới 9).

Python không hỗ trợ các Punctuation char chẳng hạn như @, $ và % bên trong các định danh. Python là một ngôn ngữ lập trình phân biệt kiểu chữ, do đó Vietjack và vietjack là hai định danh khác nhau trong Python. Dưới đây là một số qui tắc nên được sử dụng trong khi đặt tên các định danh:

  •  Một định danh là một dãy ký tự hoặc ký số.

  •  Không có ký tự đặc biệt nào được sử dụng (ngoại trừ dấu gạch dưới) như một định danh. Ký tự đầu tiên có thể là chữ cái, dấu gạch dưới, nhưng không được sử dụng ký số làm ký tự đầu tiên.

  • Từ khóa không nên được sử dụng như là một tên định danh (phần dưới sẽ trình bày về khác từ khóa này).

  • Tên lớp bắt đầu với một chữ cái hoa. Tất cả định danh khác bắt đầu với một chữ cái thường.

  • Bắt đầu một định danh với một dấu gạch dưới đơn chỉ rằng định danh đó là private.

  • Bắt đầu một định danh với hai dấu gạch dưới chỉ rằng định danh đó thực sự là private.

  • Nếu định danh cũng kết thúc với hai dấu gạch dưới, thì định danh này là một tên đặc biệt được định nghĩa bởi ngôn ngữ (ví dụ như __init__ chẳng hạn).

Các từ khóa trong Python

Bảng dưới liệt kê các từ khóa trong Python. Đây là các từ dành riêng và bạn không thể sử dụng chúng như là các hằng, biến hoặc cho bất kỳ tên định danh nào. Tất cả từ khóa trong Python là chỉ ở dạng chữ thường.

and

exec

not

assert

finally

or

break

for

pass

class

from

print

continue

global

raise

def

if

return

del

import

try

elif

in

while

else

is

with

except

lambda

yield

Dòng lệnh và độ thụt dòng lệnh trong Python

Python không cung cấp các dấu ngoặc ôm ({}) để chỉ các khối code cho định nghĩa lớp hoặc hàm hoặc điều khiển luồng. Các khối code được nhận biết bởi độ thụt dòng code (indentation) trong Python và đây là điều bắt buộc.

Số khoảng trống trong độ thụt dòng là biến đổi, nhưng tất cả các lệnh bên trong khối phải được thụt cùng một số lượng khoảng trống như nhau. Ví dụ:

if True:
  print ("True")
else:
  print ("False")

Tuy nhiên, khối sau sẽ tạo ra một lỗi:

if True:
    print ("Answer")
print ("True")
else:
    print ("Answer")
  print ("False")

Do đó, trong Python thì tất cả các dòng liên tiếp nhau mà được thụt đầu dòng với cùng lượng khoảng trống như nhau sẽ tạo nên một khối. Trong ví dụ tiếp theo sẽ có các khối lệnh đa dạng:

Ghi chú: Bạn không cần cố hiểu vấn đề này ngay lập tức, bạn chỉ cần hiểu các khối code khác nhau ngay cả khi chúng không có các dấu ngoặc ôm. Đây chính là điểm khác nhau giữa Python và ngôn ngữ khác.

import csv
from sklearn import datasets
import numpy as np
from sklearn import svm
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn import metrics
import pickle

def loadCsv(filename):
    lines = csv.reader(open(r"data.csv"))
    dataset = list(lines)
    for i in range(len(dataset)):
        dataset[i] = [int(x) for x in dataset[i]]
    return dataset

def train(out):
    dt_data=[]
    dt_target=[]
    dataset = loadCsv("data.csv")
    for i in range(len(dataset)):
        dt_data.append(dataset[i][0:9])
        dt_target.append(dataset[i][9])
    x_train, x_test, y_train, y_test= train_test_split(dt_data, dt_target, test_size=0.3)
    clf = SVC(kernel='poly', C=1.0)
    clf.fit(x_train, y_train)
    y_pred = clf.predict(x_test)
    print("Accuracy: ", accuracy_score(y_test,y_pred)*100)
    print(metrics.classification_report(y_test,y_pred))
    print(metrics.confusion_matrix(y_test, y_pred))
    cl = [[3],[4]]
    with open(out,'wb') as out:
        pickle.dump((clf, cl),out)

def main():
    out = 'svm.pkl'
    with open(out,'rb') as out:
        (clf, class_name) = pickle.load(out)
    print('Nhập mức độ yêu thích các môn học với: \n 0: không thích \n 1: thích \n 2: bình thường  ')
    print('Toán, Van, Ly, Hoa, Sinh, Sử, Địa, GDCD, Ngoại ngữ: ')
    s = input()
    test=[]
    for i in s:
        if i != ' ':
            i=int(i)
            test.append(i)
    a=[test]
    label=clf.predict(a)
    print (label)
train('svm.pkl')

Các lệnh trên nhiều dòng trong Python

Các lệnh trong Python có một nét đặc trưng là kết thúc với một newline. Tuy nhiên, Python cho phép sử dụng ký tự \ để chỉ rõ sự liên tục dòng. Ví dụ:

total = item_one + \
        item_two + \
        item_three

Các lệnh được chứa bên trong các dấu ngoặc [], {}, hoặc () thì không cần sử dụng ký tự \. Ví dụ:

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

Trích dẫn trong Python

Python chấp nhận trích dẫn đơn ('), kép (") và trích dẫn tam (''' hoặc """) để biểu thị các hằng chuỗi, miễn là các trích dẫn này có cùng kiểu mở và đóng.

Trích dẫn tam được sử dụng để trải rộng chuỗi được trích dẫn qua nhiều dòng. Dưới đây là tất cả các trích dẫn hợp lệ:

word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""

Comment trong Python

Python hỗ trợ hai kiểu comment đó là comment đơn dòng và đa dòng. Trong Python, một dấu #, mà không ở bên trong một hằng chuỗi nào, bắt đầu một comment đơn dòng. Tất cả ký tự ở sau dấu # và kéo dài cho đến hết dòng đó thì được coi là một comment và được bỏ qua bởi trình thông dịch. Ví dụ:

# First comment
print ("Hello, Python!") # second comment

Chương trình trên sẽ cho kết quả:

Hello, Python!

Bạn cũng có thể gõ một comment trên cùng dòng với một lệnh hoặc biểu thức như sau:

name = "Madisetti" # This is again comment

Bạn có thể comment trên nhiều dòng như sau:

# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.

Python cũng hỗ trợ kiểu comment thứ hai, đó là kiểu comment đa dòng được cho bên trong các trích dẫn tam, ví dụ:

#single line comment
print ("Hello Python")
"""This is
multiline comment"""

Sử dụng dòng trống trong Python

Một dòng mà chỉ chứa các khoảng trống trắng whitespace, có thể với một comment, thì được xem như là một dòng trống và Python hoàn toàn bỏ qua nó.

Trong một phiên thông dịch trong chế độ tương tác, bạn phải nhập một dòng trống để kết thúc một lệnh đa dòng.

Các lệnh đa dòng trên một dòng đơn trong Python

Dấu chấm phảy (;) cho phép xuất hiện nhiều lệnh trên một dòng đơn. Tất cả các lệnh được cung cấp này không bắt đầu một khối code mới. Dưới đây là ví dụ:

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

Các nhóm lệnh đa dòng (còn được gọi là suite) trong Python

Một nhóm các lệnh đơn, mà tạo một khối code đơn, được gọi là suite trong Python. Các lệnh phức hợp như if, while, def, và class cần một dòng header và một suite.

Các dòng header bắt đầu lệnh (với từ khóa) và kết thúc với một dầu hai chấm (:) và được theo sau bởi một hoặc nhiều dòng để tạo nên một suite. Ví dụ như:

if expression :
   suite
elif expression :
suite
else : suite

Tham số dòng lệnh trong Python

Nhiều chương trình có thể được chạy để cung cấp cho bạn một số thông tin cơ bản về cách chúng nên được chạy. Python cho bạn khả năng để làm điều này với -h:

$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]

Bạn cũng có thể lập trình cho script của mình theo cái cách mà nó nên chấp nhận các tùy chọn khác nhau tùy theo cách bạn thiết lập. 

Ngoài ra, một điều cần nói đến đó là khi bạn gặp phải trường hợp chương trình hiển thị dòng nhắc sau:

raw_input("\n\nPress the enter key to exit.")

Lệnh này nói rằng bạn hãy nhấn phím Enter để thoát. Ở đây, "\n\n" là để tạo hai newline trước khi hiển thị dòng thực sự. Khi người dùng nhấn phím enter, thì chương trình kết thúc. Lệnh này sẽ đợi cho đến khi nào bạn thực hiện một hành động nào đó, và điều này giữ cho cửa sổ console của bạn mở tới khi bạn tiếp tục thực hiện hành động.

Kết luận

Trong bài này, chúng ta đã được học cú pháp cơ bản trong Python

Ở bài tiếp theo, mình sẽ giới thiệu cho các bạn CÁC KIỂU BIẾN TRONG PYTHON.

Bài Viết Khác
  • blog-img
    Dịch vụ thiết kế Website
    Ngày nay, khi mà hàng trăm triệu người Việt Nam nói riêng và thế giới nói chung đều sử dụng internet và xem đây là nơi lý tưởng để tìm kiếm thông tin thì việc sở hữu một website không còn là điều xa lạ gì thậm chí trong một số trường hợp nó còn là tiêu chuẩn bắt buộc đối với doanh nghiệp – công ty trong thời điểm cạnh tranh mang tính toàn cầu như hiện nay.
  • blog-img
    Dịch vụ thiết kế phần mềm
    Với sự phát triển của công nghệ như hiện nay thì việc chuyển đổi số trong các doanh nghiệp là đều tất yếu, là tiêu chí sống còn của doanh nghiệp, để thực hiện được điều này thì không thể thiếu các phần mềm hỗ trợ
  • blog-img
    Giải pháp CNTT cho Doanh nghiệp
    chúng tôi là những chuyên gia có nhiều kinh nghiệm, hiểu biết sâu về nhiều sản phẩm, giải pháp, chúng tôi đặt nhu cầu của khách hàng ở vị trí quan trọng nhất, giúp khách hàng tìm được giải pháp phù hợp nhất.
  • blog-img
    Về chúng tôi
    Trải qua hơn 3 năm hình thành và phát triển Công ty Nmsoft đã có những bước phát triển không ngừng trong việc thiết kế, hỗ trợ và phát triển website cho cá nhân, doanh nghiệp.
  • blog-img
    Liên hệ
    Liên với chúng bằng các thông tin sau
  • blog-img
    Bài 1: Giới thiệu ngôn ngữ Lập trình Python
    NGÔN NGỮ PYTHON được Guido van Rossum tạo ra cuối năm 1990.
messenger