12/08/2018, 16:58

Python Basic

1.1: Python là gì Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van Rossum. Nó dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình. Python hoàn toàn tạo kiểu động và ...

1.1: Python là gì Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van Rossum. Nó dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình. Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự động. Python có cấu trúc dữ liệu cấp cao mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng. Cú pháp lệnh của Python là điểm cộng vô cùng lớn vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầu hết các nền tảng 1.2: Các phiên bản hiện tại của python Hiện tại đang có 2 phiên bản: Python 2.x và Python 3.x

  • Python 2.7 LTS (Long term support): Đã ngừng phát triển các tính năng và sẽ ngừng hỗ trợ các dev vào năm 2020.
  • Python 3.6: Đang được sử dụng nhiều và là bản ổn định được Python.org giới thiệu trên trang chủ.
  • Python 3.7: Đang phát triển tiếp, về cơ bản Python2, Python3 khác nhau về cú pháp một số câu lệnh.
  • Phần lớn các thư viện Python2 trên Python3 đều đã có (đến 11/2017 là 324/360 libs)
  • Các hãng thứ 3, framework đã chuyển sang Python3 (ví dụ Odoo bản 11 đã chuyển sang dung Python3).

1.3: Trình thông dịch trong python Để chạy trình thông dịch Python, bạn mở terminal lên (trong Windows là Command Prompt – cmd) rồi gõ lệnh python.exe. ( Sau khi đã cài python về windows )

C:UsersLucifer>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>  

Python sẽ hiện ra câu giới thiệu với tên, phiên bản… ở đây là phiên bản 3.6.4. Sau đó là dấu nhắc lệnh >>> đặc trưng của Python. Nếu muốn thoát Python, bạn gõ lệnh quit() hoặc exit(). Bây giờ chúng ta tìm hiểu một số lệnh cơ bản.

>>> credits
    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
    for supporting Python development.  See www.python.org for more information.

Lệnh help() Lệnh help cung cấp các thông tin trợ giúp cho bạn trong việc sử dụng Python.

>>> help
Type help() for interactive help, or help(object) for help about object.
>>> 

Viết code trong Python Đây mới là sự tiện lợi bậc nhất mà Python đem lại.

>>> 1+1
2
>>> 34342+123123
157465
>>> 123122/2
61561.0
>>>

Bạn có thể dùng Python làm một chiếc máy tính. Khi bạn gõ một biểu thức nào đó, Python sẽ tính toán ngay và trả lại kết quả cho bạn.

>>> a = 3
>>> b = 4
>>> a**b
81
>>> a == b
False
>>> a < b True >>>

Ngoài ra có thể định nghĩa biến và thực hiện tính toán trên chúng.

>>> class Car:
...   pass
... 
>>> def function():
...   pass
... 
>>> for i in range(5):
...   print (i)
... 
0
1
2
3
4
>>> 

Cuối cùng, nếu bạn muốn thoát Python, gõ lệnh quit() hoặc exit(), cái nào cũng được 2: Các thành phần của ngôn ngữ Python Ngôn ngữ lập trình cũng như ngôn ngữ tự nhiên của con người, tất cả đều có các thành phần cấu tạo nên nó. Các thành phần của Python gồm có chú thích (comment), biến (variable), giá trị (value), toán tử (operator), từ khóa (keyword), và ký hiệu (delimeter) Biến Biến là một cái tên dùng để lưu trữ một giá trị nào đó, có thể là một số, một chuỗi kí tự… Khác với các ngôn ngữ lập trình như C, Java… bạn phải khai báo cả kiểu dữ liệu đi kèm, thì trong Python bạn không phải khai báo kiểu dữ liệu, trình thông dịch Python sẽ tự phát hiện kiểu dữ liệu khi bạn gán giá trị cho biến đó.

Biến trong Python được đặt tên bằng chữ cái, chữ số và dấu gạch dưới _, tuy nhiên tên biến không được phép bắt đầu bằng chữ số, còn lại chữ cái và dấu _ thì được phép.

Value
value100
com_name

Trên đây là những tên biến hợp lệ.

12Val
exx$
first-name

Trên đây là những tên biến không hợp lệ.

Tên biến trong Python phân biệt chữ HOA và thường, tức là Price, price, và PRICE là ba biến khác nhau.

number = 100
Number = 200
NUMBER = 300
 
print (number, Number, NUMBER)

Đoạn code trên gán 3 giá trị số vào 3 biến khác nhau. Giá trị Giá trị là các ký tự đại diện cho một đại lượng gắn liền với một biến nào đó.

age = 21
nationality = "VietNam"

Trên đây age và nationality là các biến. 21 và "VietNam" là các giá trị.

name1 = "A"
age1 = 12
 
name2 = "B"
age2 = 16
 
"C"
34
 
"D"
23
 
print (name1, age1)
print (name2, age2)

Nếu chúng ta không gán các giá trị vào biến thì chúng sẽ bị hủy bỏ. Output

A 12
B 16

Khối lệnh Trong các ngôn ngữ lập trình khác như Pascal, Java… một khối lệnh được nằm trong cặp dấu {} hoặc cặp từ khóa BEGIN–END. Còn Python thì dùng khoảng trắng, bạn có thể dùng dấu tab hoặc dấu cách (space) đều được. Trên hướng dẫn của Python khuyến khích dùng 4 dấu cách.

if age > 18:
    print ("adult person")
 
for i in range(5):
    print (i)

Trong đoạn code trên, sau câu lệnh if là một khối lệnh. Câu lệnh mới trong khối lệnh này phải thụt dòng vào trong. Khi muốn thoát ra khỏi khối lệnh thì thụt ra ngoài. Giả sử như câu lệnh for cũng thụt vào bằng chiều dài với câu lệnh print thì câu lệnh for nằm cùng khối lệnh với câu lệnh print.

Ký hiệu Các ký hiệu dùng để bao bọc lấy các biểu thức, điều kiện… Trong các ví dụ trước có hàm print chúng ta phải dùng cặp ký hiệu () để bao bọc lấy nội dung cần được in ra màn hình. Thực ra đối với Python 2.x thì lệnh print không cần cặp ký tự này, nhưng Python 3.x thì phải có cặp ký tự này, lý do là vì trong phiên bản 2.x, print là một câu lệnh nhưng trong 3.x thì print đã được phát triển thành một hàm riêng.

(       )       [       ]       {       }      
,       :       .       `       =       ;
+=      -=      *=      /=      //=     %=
<= |= ^= >>=     <<=     **=
'       "              @

Từ khóa Từ khóa là các từ dành riêng cho Python. Từ khóa thường được dùng để thi hành một lệnh nào đó, hoặc tên của một thành phần trong Python. Chẳng hạn từ khóa if thi hành lệnh so sánh. Từ khóa for để bắt đầu một vòng lặp, từ khóa and là tên của toán tử and… Bạn không được đặt tên biến hay tên hàm trùng với tên của các từ khóa.

and       del       from      not       while
as        elif      global    or        with
assert    else      if        pass      yield
break     except    import    print
class     exec      in        raise
continue  finally   is        return
def       for       lambda    try

3: Các kiểu dữ liệu cơ bản Kiểu Boolean Là kiểu giá trị này chỉ có hai giá trị là đúng (True) và sai (False)

1 > 3
False
3 > 1
True
not True
False
not False
True

Kiểu None Đây là một kiểu đặc biệt trong Python. Ý nghĩa của kiểu này là không có giá trị gì cả, không tồn tại, rỗng…v..v

def function():
   pass
 
print (function())

Trong đoạn code trên, chúng ta định nghĩa một hàm. Chúng ta sẽ tìm hiểu về hàm ở các bài sau. Hàm này cũng không trả về giá trị gì cả nên nó sẽ tự động ngầm trả về giá trị None.

None

String String là kiểu dữ liệu lưu trữ văn bản.

Chúng ta có thể tạo ra một string bằng dấu nháy đơn, nháy kép hay 3 dấu nháy kép. Khi dùng 3 dấu nháy kép, chúng ta cũng có thể ghi một chuỗi trên nhiều dòng mà không cần dùng dấu .

a = "Framgia"
b = 'Infra'
c = """
requiem 
for
a 
tower
"""
 
print (a)
print (b)
print (c)

Output

Framgia
Infra
requiem 
for
a 
tower

Trong ví dụ trên chúng ta gán 3 chuỗi vào 3 biến a, b, c rồi in ra màn hình. Trong một chuỗi chúng ta có thể dùng các ký tự thoát. Ký tự thoát là các ký tự đặc biệt dùng cho nhiều mục đích khác nhau. Ký tự là ký tự xuống dòng, các đoạn text sau ký tự này sẽ tự động xuống dòng. Kiểu List Kiểu list cũng là một kiểu lưu các giá trị tuần tự, một list cũng có thể lưu nhiều giá trị khác nhau. Do đó list và tuple có nhiều điểm tương đồng. Điểm khác biệt giữa list và tuple là các phần tử trong list có thể thay đổi giá trị, ngoài ra list có một số phương thức mà tuple không có. Chúng ta sẽ có nguyên một bài để nói riêng về kiểu list.

actors = ["A,B,C,D,E,F,G"]

Để tạo một list thì ta dùng cặp ký tự [].

num = [0, 2, 5, 4, 6, 7]
 
print (num[0])
print (num[2:])
print (len(num))
print (num + [8, 9])

Chúng ta có thể dùng các thao tác cộng trừ, lấy chỉ số… Output

0
[5, 4, 6, 7]
6
[0, 2, 5, 4, 6, 7, 8, 9]

Tiếp theo chúng ta tìm hiểu về một số thao tác của riêng list. Bắt đầu là thao tác sắp xếp một list.

numbers = [4, 3, 6, 1, 2, 0, 5 ]
 
print (numbers)
numbers.sort()
print (numbers)

Để sắp xếp một list thì chúng ta dùng phương thức sort(). Lưu ý chúng ta không thể sắp xếp một list chứa nhiều kiểu dữ liệu khác nhau được, chẳng hạn [1, "Hello"] không thể nào được sắp xếp, vì chúng không cùng kiểu, bạn chỉ có thể sắp xếp các phần tử có cùng kiểu dữ liệu. Output

[4, 3, 6, 1, 2, 0, 5]
[0, 1, 2, 3, 4, 5, 6]

Phương thức reverse() cũng sắp xếp các phần tử nhưng thep thứ tự ngược lại.

numbers.reverse()   #  [5, 4, 3, 2, 1, 0]

Chúng ta có thể đếm một phần tử xuất hiện bao nhiêu lần trong một list bằng phương thức count().

numbers = [0, 0, 2, 3, 3, 3, 3]
 
print ("zero is here ",  numbers.count(0), "times") 
print ("one is here ",   numbers.count(1), "times")
print ("two is here ",   numbers.count(2), "time")
print ("three is here ", numbers.count(3), "times")

Output

zero is here  2 times
one is here  0 times
two is here  1 time
three is here  4 times

Kiểu Set Set là kiểu tập hợp các phần tử không có thứ tự, không có nhiều hơn 2 phần tử có cùng một giá trị. Các phép toán có thể dùng trên set là phép hợp, giao, hiệu… giống như trong toán học.

set1 = set(['a', 'b', 'c', 'c', 'd'])
set2 = set(['a', 'b', 'x', 'y', 'z'])
 
print ("set1: " , set1)
print ("set2: " , set2)
print ("intersection: ", set1 & set2)
print ("union: ", set1 | set2)
print ("difference: ", set1 - set2)
print ("symmetric difference: ", set1 ^ set2)

Để tạo một set thì chúng ta dùng hàm set(). Trong ví dụ trên có 2 set. Chúng ta thực hiện phép giao 2 set bằng toán tử &, kết quả được một set mới có chứa các phần tử của chung cả 2 set, nếu chỉ tồn tại trong 1 set thì không lấy. Dùng toán tử | để thực hiện phép hợp, phép hợp lấy tất cả cá phần tử của cả 2 set. Phép hiệu có toán tử là dấu trừ -, set1 – set2 sẽ trả về các phần tử của set1 và các phần tử vừa tồn tại trong set1, vừa tồn tại trong set2. Cuối cùng phép hiệu đối xứng là toán tử ^, phép toán này lấy các phần tử trong set1 và set2, nhưng nếu tồn tại trong cả 2 set thì không lấy.

set1:  set(['a', 'c', 'b', 'd'])
set2:  set(['a', 'x', 'b', 'y', 'z'])
intersection:  set(['a', 'b'])
union:  set(['a', 'c', 'b', 'd', 'y', 'x', 'z'])
difference:  set(['c', 'd'])
symmetric difference:  set(['c', 'd', 'y', 'x', 'z'])

Tiếp theo là một số thao tác trên set.

set1 = set([1, 2])
set1.add(3)
set1.add(4)
 
set2 = set([1, 2, 3, 4, 6, 7, 8])
set2.remove(8)
 
print (set1)
print (set2)
 
print ("Is set1 subset of set2 ? : ", set1.issubset(set2))
print ("Is set1 superset of set2 ? : ", set1.issuperset(set2))
 
set1.clear()
print (set1)

Phương thức add() sẽ chèn một phần tử vào set. Phương thức remove() xóa một phần tử tại vị trí bất kỳ. Phương thức clear() xóa toàn bộ phần tử trong set. Phương thức issubset() kiểm tra xem một set có phải là set con của một set khác không. Phương thức issuperset() kiểm tra xem một set có phải là set cha của set khác không. OutPut

set([1, 2, 3, 4]) 
set([1, 2, 3, 4, 6, 7]) 
Is set1 subset of set2 ? : True
Is set1 superset of set2 ? : False set([]) 

Kiểu từ điển Kiểu dictionary là kiểu dữ liệu danh sách, trong đó các phần tử được lưu trữ theo các cặp khóa-giá trị (key-value). Các phần tử trong dictionary không có thứ tự, tức là bạn không thể truy xuất chúng qua chỉ số mà chỉ dùng khóa, ngoài ra vì không có thứ tự nên Python cũng không có sẵn các hàm sắp xếp như hàm sort(), tuy nhiên nếu muốn bạn vẫn có thể tự code lấy hàm sort cho riêng mình. Trong các ngôn ngữ khác thì kiểu dictionary hay được gọi là bảng băm. Trong dictionary không có 2 khóa trùng nhau. Đầu tiên chúng ta sẽ tìm hiểu cách khởi tạo một dictionary.

weekend = { "Sun": "Sunday", "Mon": "Monday" }
vals = dict(one=1, two=2)
 
capitals = {}
capitals["svk"] = "Bratislava"
capitals["deu"] = "Berlin"
capitals["dnk"] = "Copenhagen"
 
d = { i: object() for i in range(4) }
 
print (weekend)
print (vals)
print (capitals)
print (d)

Đoạn code trên ví dụ về 4 cách để khởi tạo 1 dictionary trong Python.

weekend = { "Sun": "Sunday", "Mon": "Monday" }

Cách đầu tiên và cũng là cách đơn giản nhất. Chúng ta tạo dictionary bằng cách gán dữ liệu trực tiếp. Dictionary được bao bọc bởi cặp dấu ngoặc nhọn {}. Trong đó mỗi phần tử được gán giá trị theo cú pháp key1:value1, key2:value2…, các phần tử phân cách nhau bởi dấu phẩy.

vals = dict(one=1, two=2)

Cách thứ 2 là chúng ta dùng hàm dict().

capitals = {}
capitals["svk"] = "Bratislava"
capitals["deu"] = "Berlin"
capitals["dnk"] = "Copenhagen"

Trên đây là cách thứ 3, đầu tiên chúng ta khởi tạo dict rỗng bằng cặp dấu {}. Sau đó khởi tạo các khóa và gán giá trị, các khóa được tạo trong cặp dấu ngoặc vuông [].

d = { i: object() for i in range(4) }

Cũng giống như kiểu list, dictionary cũng có thể được khởi tạo theo cú pháp comprehension. Cú pháp này có 2 phần, phần đầu tiên là phần biểu thức i: object(), phần thứ 2 là vòng lặp for i in range(4). Tức là cứ mỗi lần lặp, giá trị từ biểu thức sẽ được thêm vào dictionary. Hàm object() khởi tạo một đối tượng kiểu object. Đối tượng này không có giá trị, do đó khi in ra màn hình python sẽ in thông tin về địa chỉ bộ nhớ. OutPut

{'Sun': 'Sunday', 'Mon': 'Monday'}
{'two': 2, 'one': 1}
{'svk': 'Bratislava', 'dnk': 'Copenhagen', 'deu': 'Berlin'}
{0: <object object at 0xb76cb4a8>, 1: <object object at 0xb76cb4b0>, 
2: <object object at 0xb76cb4b8>, 3: <object object at 0xb76cb4c0>}
0