Python Cơ bản: Keywords and Identifiers, Statements and Comments, Variables

MVT
Đang cập nhật

Các từ khóa (keywords) trong Python

Keywords là những từ được Python định nghĩa và lưu trữ trong nó.

Chúng ta không thể khai báo hay định nghĩa một biến hoặc một function nào đó mà nó trùng tên với các keywords mà Python đã định nghĩa trước đó. Những keyword được sử dụng để định nghịa cú pháp và cấu trúc trong Python

Trong Python, các từ khóa có phân biệt chữ hoa chữ thường.

Tính đến python 3.7 có 37 keywords. Tất cả các keywords đều viết thường ngoài trừ True, FalseNone viết in hoa ký tự đầu tiên. Dưới đây là danh sách các keywords

Falseawaitelseimportpass
Nonebreakexceptinraise
Trueclassfinallyisreturn
andcontinueforlambdatry
asdeffromnonlocalwhile
assertdelglobalnotwith
asyncelififoryield

Định danh trong Python

Định danh là tên được đặt cho các thực thể như lớp, hàm, biến, v.v. Nó giúp phân biệt thực thể này với thực thể khác.

Quy ước viết định danh cho Python

  1. Một định danh có thể là sự kết hợp giữa những ký tự thường (a-z) hoặc ký tự in hoa (A-Z) hoặc số (0-9) hoặc dấu gạch chân (_). Tên giống như myClass, name_1print_my_name
  2. Một định danh không thể bắt đầu bằng một số như là 1name là không hợp lệ, nhưng name1 laị hợp lệ.
  3. Người dùng không thể khai báo định danh trùng với các keywords được lưu trữ trong python, như là : global = 1, dict = {"name" : "john_doe" }
  4. Người dùng không thể khai báo định danh chứa các ký tự đặc biệt như !, @, #, $, %,^ ...
  5. Một đinh danh có độ dài không giới hạn.

Khai báo câu lệnh

Không giống như những ngôn ngữ khác, python là ngôn ngữ lập trình động, nó không cần phải khai báo kiểu dữ liệu cho biến ( như int, string...). Chỉ cần khai báo biến và gán giá trị cho biến đó thì python khi biên dịch chương trình có thể đọc được và phân tích cú pháp cho kiểu dữ liệu của biến được.

VD:

name = "John Doe"
colors = ["red" , "green", "blue"]
user = { 
  "name" : "John Doe"
  "age" : 23
}

Câu lệnh nhiều dòng

a = 1 + 2 + 3 + \
    4 + 5 + 6 + \
    7 + 8 + 9

Đây là sự tiếp nối dòng tường minh. Trong Python, những dòng nối tiếp nhau được thực thi ngầm bên trong dấu ( ), hoặc [ ], hoặc { }. Ví dụ chúng ta có thể thực thi đoạn code trên như sau :

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

Ở đây, các dấu ngoặc đơn bao quanh () hoàn toàn tiếp tục dòng. Trường hợp tương tự với [ ]{ }. Ví dụ:

colors = ["red" , "green", "blue"]

Chúng ta cũng có thể đặt nhiều câu lệnh trong một dòng bằng cách sử dụng dấu chấm phẩy, như sau:

a = 1; b = 2; c = 3;

Thụt lề trong Python

Hầu hết các ngôn ngữ lập trình như C, C++, Java, Javascript... đều sử dụng { } để định nghĩa một khối lệnh mà code chỉ được phép thực thi trong đó. Nhưng Python không dùng như vậy, nó sử dụng bằng cách thụt lề.

Một khổi lệnh ( phần thân của một function, vòng lặp...) bắt đầu bằng vì trí phần tử đầu tiên trong scope bị thụt lề vào trong và kết thúc với dòng có vị trí trùng với vị trí phần tử đầu tiên trong scope đó.

Nói chung, bốn khoảng trắng được sử dụng để thụt lề và được ưu tiên hơn các tab. Đây là một ví dụ.

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

Việc thực thi thụt lề trong Python làm cho mã trông gọn gàng và clean. Điều này dẫn đến các chương trình Python trông giống nhau và nhất quán.

Thụt lề có thể bị bỏ qua khi tiếp tục dòng, nhưng bạn luôn nên thụt lề. Nó làm cho mã dễ đọc hơn. Ví dụ:

if True:
    print('Hello')
    a = 5

if True: print('Hello'); a = 5

cả hai đều hợp lệ và tương tự nhau, nhưng kiểu cũ rõ ràng hơn.

Thụt lề không chính xác sẽ dẫn đến lỗi IndentationError.

Python Comments

Comments trong bất kỳ ngôn ngữ lập trình nào cũng đều rất quan trọng trong khi viết một chương trình. Chúng mô tả những gì đang diễn ra bên trong một chương trình, để người xem mã nguồn không gặp khó khăn khi tìm ra nó.

Bạn có thể quên các chi tiết chính của chương trình bạn vừa viết trong thời gian một tháng. Vì vậy, dành thời gian để giải thích những khái niệm này dưới dạng nhận xét luôn luôn có hiệu quả.

Trong Python, chúng tôi sử dụng ký hiệu dấu thăng (#) để bắt đầu viết bình luận.

Nó mở rộng đến ký tự dòng mới. Nhận xét là để người lập trình hiểu rõ hơn về một chương trình. Trình thông dịch Python khi thực thi sẽ bỏ qua các đoạn comments.

#This is a comment
#print out Hello
print('Hello')

Comments nhiều dòng

Chúng ta có thể có những nhận xét kéo dài đến nhiều dòng. Một cách là sử dụng ký hiệu dấu thăng (#) ở đầu mỗi dòng. Ví dụ:

#This is a long comment
#and it extends
#to multiple lines

Một cách khác để làm điều này là sử dụng 3 lần dấu nháy đơn hoặc kép, ''' hoặc """ để mở comment và khi kết thúc cũng cần phải đóng bằng 3 lần dấu nháy tương ứng.

"""This is also a
perfect example of
multi-line comments"""

Docstrings trong Python

Docstring là một bản rút gọn, tóm tắt những gì có trong document

Python docstrings (gọi khác là documentation docstrings) là các chuỗi ký tự xuất hiện ngay sau định nghĩa của một hàm, phương thức, lớp hoặc mô-đun.

Dấu ngoặc kép được sử dụng trong khi viết docstrings. Ví dụ:

def double(num):
    """Function to double the value"""
    return 2*num

Docstrings xuất hiên ngay sau định nghĩa của một hàm, lớp hoặc một mô-đun. Điều này tách các docstrings khỏi các bình luận nhiều dòng bằng cách sử dụng 3 dấu nháy kép hoặc nháy đơn.

Các docstrings được liên kết với đối tượng dưới dạng thuộc tính __doc__ của chúng.

Vì vậy, chúng ta có thể truy cập docstrings của hàm trên bằng các dòng code sau:

def double(num):
    """Function to double the value"""
    return 2*num
print(double.__doc__)

Kết quả là :

Function to double the value

Biến trong Python

Một biến là một vị trí được đặt tên được sử dụng để lưu trữ dữ liệu trong bộ nhớ. Sẽ rất hữu ích nếu coi các biến như một vùng chứa chứa dữ liệu có thể được thay đổi sau này trong chương trình. Ví dụ :

number = 10

Ở đây, chúng ta đã tạo một biến có tên là số. Chúng ta đã gán giá trị 10 cho biến.

Bạn có thể nghĩ rằng biến như là một cái balo đựng sách và giá trị của nó như là những cuốn sách được đặt trong chiếc balo đó.

number = 10
number = 1.1

Ban đầu, giá trị của số là 10. Sau đó, nó được đổi thành 1,1.

Lưu ý: Trong Python, chúng ta không thực sự gán giá trị cho biến. Thay vào đó, Python sẽ đưa 1 tham chiếu của một object hay một giá trị đến biến đó.

Gán giá trị cho các biến trong Python

Như bạn có thể thấy từ ví dụ trên, bạn có thể sử dụng toán tử gán = để gán giá trị cho một biến.

VD1 : Khai báo và gán giá trị cho một biến

website = "apple.com"
print(website)

Kết qủa :

apple.com

Trong chương trình trên, chúng ta đã gán giá trị apple.com cho biến website. Sau đó, chúng ta in ra giá trị được chỉ định cho website tức là apple.com

Lưu ý: Python là ngôn ngữ suy luận kiểu (typed-inferred), vì vậy bạn không thể khai báo tường minh kiểu của biến. Nó tự động biết rằng apple.com là kiểu string và do đó nó khai bào ngầm biến website có kiểu string

VD2 : Thay đổi giá trị của biến

website = "apple.com"
print(website)

# assigning a new value to website
website = "programiz.com"

print(website)

Kết qủa :

apple.com
programiz.com

Trong chương trình trên, ban đầu chúng ta đã gán apple.com cho biến website Sau đó, giá trị được thay đổi thành programmiz.com.

VD3 : Gán nhiều giá trị cho nhiều biến

a, b, c = 1, 5.5, "Python"

print(a)
print(b)
print(c)

Nếu chúng ta muốn gán cùng một giá trị cho nhiều biến cùng một lúc, chúng ta có thể làm như sau:

x = y = z = "same"

print(x)
print(y)
print(z)

Chương trình thứ hai gán same cho cả ba biến x, yz.

Biến hằng (constant)

Hằng số là một loại biến có giá trị không thể thay đổi. Sẽ rất hữu ích khi nghĩ về các hằng số như các thùng chứa chứa thông tin không thể thay đổi sau này.

Bạn có thể coi hằng số như một chiếc túi để đựng một số cuốn sách mà không thể thay thế một khi đã đặt bên trong túi.

Gán giá trị cho hằng số trong Python

Trong Python, hằng số thường được khai báo và gán trong một mô-đun. Ở đây, mô-đun là một tệp mới chứa các biến, hàm, v.v. được import vào tệp chính. Bên trong mô-đun, hằng số được viết bằng tất cả các ký tự in hoa và có dấu gạch chân _ để tách các từ thay cho khoảng trắng.

VD3 : Khai báo và gán giá trị cho hằng số

Tạo một tệp Constant.py

PI=3.14
GRAVITY=9.8

Tạo têp main.py

import constant
print(constant.PI)
print(constant.GRAVITY)

Kết quả :

3.14
9.8

Trong chương trình trên, chúng ta tạo một tệp mô-đun Constant.py. Sau đó, chúng ta gán giá trị không đổi cho PIGRAVITY. Sau đó, chúng ta tạo một tệp main.py và nhập mô-đun hằng số. Cuối cùng, chúng ta in giá trị không đổi.

Lưu ý : Trong thực tế, chúng ta Python không có biến gọi là hằng số đúng nghĩa. Việc đặt tên chúng bằng tất cả các chữ cái viết hoa là một quy ước để tách chúng khỏi các biến, tuy nhiên, nó không thực sự ngăn cản việc gán lại.

Quy tắc và Quy ước đặt tên cho các biến và hằng số

  1. Tên hằng và tên biến phải có sự kết hợp của các chữ cái ở dạng chữ thường (a đến z) hoặc chữ hoa (A đến Z) hoặc chữ số (0 đến 9) hoặc dấu gạch dưới (_). Ví dụ:
snake_case
MACRO_CASE
camelCase
CapWords
  1. Tạo một cái tên có ý nghĩa. Ví dụ, vowel n có ý nghĩa hơn v.
  2. Nếu bạn muốn tạo một tên biến có hai từ, hãy sử dụng dấu gạch dưới để phân tách chúng. Ví dụ:
my_name
current_salary
  1. Sử dụng các chữ cái in hoa có thể để khai báo một hằng số. Ví dụ:
PI
G
MASS
SPEED_OF_LIGHT
TEMP
  1. Đừng bao giờ sử dụng các ký hiệu đặc biệt như !, @, #, $, %, v.v.
  2. Đừng bắt đầu tên biến bằng một chữ số.

Literals

Literal là một dữ liệu thô được cung cấp trong một biến hoặc hằng số. Trong Python, có nhiều loại literals khác nhau, chúng như sau:

Numeric Literals

Numeric Literals là bất biến (không thể thay đổi). Các chữ số có thể thuộc 3 kiểu số khác nhau: Số nguyên Integer, Số thập phân Float và Số phức Complex.

VD 4 : Cách sử dụng Literals trong Python

a = 0b1010 #Binary Literals
b = 100 #Decimal Literal 
c = 0o310 #Octal Literal
d = 0x12c #Hexadecimal Literal

#Float Literal
float_1 = 10.5 
float_2 = 1.5e2

#Complex Literal 
x = 3.14j

print(a, b, c, d)
print(float_1, float_2)
print(x, x.imag, x.real)

Kết quả là :

10 100 200 300
10.5 150.0
3.14j 3.14 0.0

Trong chương trình trên,

  • Chúng ta đã gán các ký tự số nguyên vào các biến khác nhau. Ở đây, a là chữ nhị phân, b là chữ thập phân, c là chữ bát phân và d là chữ thập lục phân.
  • Khi chúng ta in các biến, tất cả các ký tự được chuyển đổi thành các giá trị thập phân.
  • 10,51,5e2 là các ký tự dấu phẩy động. 1,5e2 được biểu thị theo cấp số nhân và tương đương với 1,5 * 10^2
  • Chúng ta đã gán một chữ phức tạp, tức là 3,14j trong biến x. Sau đó, chúng ta sử dụng số ảo (x.imag) và số thực (x.real) để tạo ra các phần ảo và thực của số phức.

String literals

String literals là một chuỗi các ký tự được bao quanh bởi dấu nháy kép. Chúng ta có thể sử dụng cả dấu nháy đơn, nháy đôi hoặc gấp ba cho một chuỗi. Và, một ký tự literal là một ký tự đơn được bao quanh bởi dấu nháy đơn hoặc kép.

VD:

strings = "This is Python"
char = "C"
multiline_str = """This is a multiline string with more than one line code."""
unicode = u"\u00dcnic\u00f6de"
raw_str = r"raw \n string"

print(strings)
print(char)
print(multiline_str)
print(unicode)
print(raw_str)

Kết quả là :

This is Python
C
This is a multiline string with more than one line code.
Ünicöde
raw \n string

Trong chương trình trên, This is Python là một chuỗi ký tự và C là ký tự đơn.

Giá trị trong dấu ngoặc kép """ được gán cho multiline_str là một chuỗi nhiều dòng.

Chuỗi u"\u00dcnic\u00f6de" là một ký tự Unicode hỗ trợ các ký tự khác ngoài tiếng Anh. Trong trường hợp này, \u00dc đại diện cho Ü\u00f6 đại diện cho ö.

r"raw \ n string" là một chuỗi thô.

Boolean leteral

Boolean literal có thể có bất kỳ giá trị nào trong hai giá trị: True hoặc False.

VD :

x = (1 == True)
y = (1 == False)
a = True + 4
b = False + 10

print("x is", x)
print("y is", y)
print("a:", a)
print("b:", b)

Kết quả là :

x is True
y is False
a: 5
b: 10

Trong chương trình trên, chúng tôi sử dụng boolean theo nghĩa TrueFalse. Trong Python, True đại diện cho giá trị là 1False0. Giá trị của x là True1 bằng True. Và, giá trị của y là False vì 1 không bằng False.

Tương tự, chúng ta có thể sử dụng TrueFalse trong biểu thức số làm giá trị. Giá trị của a5 vì chúng ta thêm True có giá trị là 1 với 4. Tương tự, b10 vì chúng ta thêm False có giá trị là 0 với 10.

Special literals

Special literals tức là None. Chúng tôi sử dụng nó để chỉ định rằng trường chưa được tạo.

drink = "Available"
food = None

def menu(x):
    if x == drink:
        print(drink)
    else:
        print(food)

menu(drink)
menu(food)

Kết quả là :

Available
None

Trong chương trình trên, chúng ta định nghĩa hàm menu. bên trong menu, khi chúng ta đặt đối số là drink, nó sẽ hiển thị Available. Và, khi đối số là food, nó sẽ hiển thị None.

Literal Collections

Có bốn tập hợp chữ khác nhau List, Tuple, Dict, Set

fruits = ["apple", "mango", "orange"] #list
numbers = (1, 2, 3) #tuple
alphabets = {'a':'apple', 'b':'ball', 'c':'cat'} #dictionary
vowels = {'a', 'e', 'i' , 'o', 'u'} #set

print(fruits)
print(numbers)
print(alphabets)
print(vowels)

Kết quả là

['apple', 'mango', 'orange']
(1, 2, 3)
{'a': 'apple', 'b': 'ball', 'c': 'cat'}
{'e', 'a', 'o', 'i', 'u'}