GIỚI THIỆU PYTHON

 

GIỚI THIỆU PYTHON


Python là gì

 

Trong chương này chúng ta sẽ tìm hiểu sơ qua về ngôn ngữ lập trình Python, về lịch sử và một số đặc điểm của nó.

Python là gì?

Python là một ngôn ngữ lập trình bậc cao, thông dịch, hướng đối tượng, đa mục đích và cũng là một ngôn ngữ lập trình động.

Cú pháp của Python là khá dễ dàng để học và ngôn ngữ này cũng mạnh mẽ và linh hoạt không kém các ngôn ngữ khác trong việc phát triển các ứng dụng. Python hỗ trợ mẫu đa lập trình, bao gồm lập trình hướng đối tượng, lập trình hàm và mệnh lệnh hoặc là các phong cách lập trình theo thủ tục.

Python không chỉ làm việc trên lĩnh vực đặc biệt như lập trình web, và đó là tại sao ngôn ngữ này là đa mục đích bởi vì nó có thể được sử dụng với web, enterprise, 3D CAD, …

Bạn không cần sử dụng các kiểu dữ liệu để khai báo biến bởi vì kiểu của nó là động, vì thế bạn có thể viết a=15 để khai báo một giá trị nguyên trong một biến.

Với Python, việc phát triển ứng dụng và debug trở nên nhanh hơn bởi vì không cần đến bước biên dịch và chu trình edit-test-debug của Python là rất nhanh.

Các đặc điểm của Python

Dưới đây là một số đặc điểm chính của Python:

  • Dễ dàng để sử dụng: Python là một ngôn ngữ bậc cao rất dễ dàng để sử dụng. Python có một số lượng từ khóa ít hơn, cấu trúc của Python đơn giản hơn và cú pháp của Python được định nghĩa khá rõ ràng, … Tất cả các điều này là Python thực sự trở thành một ngôn ngữ thân thiện với lập trình viên.
  • Bạn có thể đọc code của Python khá dễ dàng. Phần code của Python được định nghĩa khá rõ ràng và rành mạch.
  • Python có một thư viện chuẩn khá rộng lớn. Thư viện này dễ dàng tương thích và tích hợp với UNIX, Windows, và Macintosh.
  • Python là một ngôn ngữ thông dịch. Trình thông dịch thực thi code theo từng dòng (và bạn không cần phải biên dịch ra file chạy), điều này giúp cho quá trình debug trở nên dễ dàng hơn và đây cũng là yếu tố khá quan trọng giúp Python thu hút được nhiều người học và trở nên khá phổ biến.
  • Python cũng là một ngôn ngữ lập trình hướng đối tượng. Ngoài ra, Python còn hỗ trợ các phương thức lập trình theo hàm và theo cấu trúc.

Ngoài các đặc điểm trên, Python còn khá nhiều đặc điểm khác như hỗ trợ lập trình GUI, mã nguồn mở, có thể tích hợp với các ngôn ngữ lập trình khác, …

 

Lịch sử của Python

Python được phát triển bởi Guido Van Rossum vào cuối những năm 80 và đầu những năm 90 tại Viện toán-tin ở Hà Lan. Python kế thừa từ nhiều ngôn ngữ như ABC, Module-3, C, C++, Unix Shell, …

Ngôn ngữ Python được cập nhật khá thường xuyên để thêm các tính năng và hỗ trợ mới. Phiên bản mới nhất hiện nay của Python là Python 3.3 được công bố vào 29/9/2012 với nguyên tắc chủ đạo là "bỏ cách làm việc cũ nhằm hạn chế trùng lặp về mặc chức năng của Python".

 

 

Hướng dẫn cài đặt Python

 

 

Trước khi cài đặt Python, bạn cần tải Python từ: https://www.python.org/downloads/.

Sau khi đã tải Python về máy, thì việc cài đặt Python cũng giống như cài đặt các phần mềm khác như bộ Visual Studio của Microsoft, bạn cứ nhấn next, next và next.

Nếu bạn chỉ tải và cài cái này thì có thể biên dịch các python file bằng terminal. Để sử dụng đầy đủ các tính năng tạo project, tạo file, biên dịch, … bạn nên cài thêm IDE pycharm. Bạn theo link sau để tải: https://www.jetbrains.com/pycharm/download/.

Dưới đây là cách thiết lập path cho một số hệ điều hành phổ biến:

Thiết lập path trên Windows

Để thêm thư mục Python tới path cho một phiên cụ thể trong Windows thì tại dòng nhắc lệnh, bạn gõ path %path%;C:\Python và nhấn Enter. Bạn cũng cần chú ý một số biến môi trường sau:

PYTHONPATH: Nó có vai trò như PATH. Biến này nói cho Trình thông dịch của Python nơi để đặt các file được nhập vào một chương trình. Nó cũng nên bao thư mục thư viện nguồn và các thư mục chứa source code của Python.

PYTHONSTARTUP: Nó gồm path của một file khởi tạo chứa source code của Python và được thực thi mỗi khi bạn bắt đầu trình thông dịch. Trong Unix, nó có tên là .pythoncr.py.

PYTHONCASEOK: được sử dụng trong Windows để chỉ dẫn cho Python để tìm các kết nối không phân biệt kiểu chữ trong một lệnh quan trọng.

PYTHONHOME: Nó là một path tìm kiếm thay thế, và thường được nhúng trong các thư mục PYTHONSTARTUP hoặc PYTHONPATH.

 

Thiết lập path trên Unix/Linux

Trong csh shell: gõ setenv PATH "$PATH:/usr/local/bin/python" và nhấn Enter.

Trong bash shell: gõ export PATH="$PATH:/usr/local/bin/python" và nhấn Enter.

Trong sh hoặc ksh shell: bạn gõ PATH="$PATH:/usr/local/bin/python" và nhấn Enter.

Bạn nên nhớ là /usr/local/bin/python là path của thư mục Python.

 

 

Chương trình Hello World trong Python

 

 Chương này sẽ trình bày cách viết chương trình Python đầu tiên để in ra dòng chữ "Hello World" cũng như cách thực thi chương trình Python trong các chế độ khác nhau.

Chương trình Python để in "Hello World"

Dưới đây là đoạn code đơn giản để in ra dòng chữ "Hello World" trong Python.

>>> a="Hello World"

>>> print a

Hello World

>>> 

Giải thích:

  • Ở đây, chúng ta đang sử dụng IDE để viết Python code. Phần giải thích chi tiết để chạy chương trình sẽ được trình bày ngay dưới đây.
  • Một biến được định nghĩa với tên là a và giữ "Hello World".
  • Lệnh print được sử dụng in ra nội dung. Nếu bạn đang sử dụng phiên bản Python mới nhất (phiên bản 3.3 chẳng hạn) thì lệnh print đã được thay đổi thành hàm print(), tức là trong phiên bản mới nhất bạn cần phải thêm các dấu ngoặc đơn vào như dưới đây chẳng hạn:

 

>>> a=("Hello World")

>>> print a

Hello World

>>> 

Cách thực thi Python trong chế độ tương tác

Bạn triệu hồi dòng nhắc lệnh như sau:

$ pythonPython 2.4.3 (#1, Nov 11 2015, 13:34:43)[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2Type "help", "copyright", "credits" or "license" for more information.

>>> 

Sau đó, bạn gõ dòng lệnh sau và nhấn Enter:

>>> print "Hello World"

Nếu bạn đang chạy trên phiên bản Python mới nhất, bạn cần sử dụng hàm print với dấu ngoặc đơn, như print ("Hello World");.

Cách thực thi Python trong chế độ script

Sử dụng chế độ script, bạn cần viết Python code trong một file riêng rẽ bởi sử dụng bất cứ trình soạn thảo nào trong hệ điều hành của bạn. Sau đó, bạn lưu nó với đuôi .py và mở dòng nhắc lệnh để thực thi.

Giả sử bạn gõ source code sau trong một test.py file:

print "Hello World"

Nếu bạn đã có trình thông dịch của Python được thiết lập trong biến PATH, bây giờ bạn thử chạy chương trình trên như sau:

$ python test.py

Lệnh trên sẽ cho kết quả:

Hello World

Bây giờ, chúng ta thử một cách khác để thực thi một Python script. Sau đây là test.py file đã được sửa đổi:

  print "Hello World"

Giả sử bạn có trình thông dịch của Python có sẵn trong thư mục /usr/bin, thì bạn có thể chạy chương trình trên như sau:

$ chmod +x test.py     # Dong nay giup file co the thuc thi$./test.py

Lệnh trên sẽ cho kết quả:

Hello World

 

Cú pháp Python cơ bản

  

 

Chương này sẽ trình bày khái quát cho bạn về cú pháp Python cơ bản. Mục đích của chương 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 chữ 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 chữ hoa- chữ thường, 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 chữ 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 chữ 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 sys

try:
  # open file stream
  file = open(file_name, "w")
except IOError:
  print "There was an error writing to", file_name
  sys.exit()
print "Enter '", file_finish,
print "' When finished"
while file_text != file_finish:
  file_text = raw_input("Enter text: ")
  if file_text == file_finish:
    # close the file
    file.close
    break
  file.write(file_text)
  file.write("\n")
file.close()
file_name = raw_input("Enter filename: ")
if len(file_name) == 0:
  print "Next time please enter something"
  sys.exit()
try:
  file = open(file_name, "r")
except IOError:
  print "There was an error reading file"
  sys.exit()
file_text = file.read()
file.close()
print file_text


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 (dòng mới). 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 commentprint "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 multi

line 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. Để tìm hiểu thêm về tham số dòng lệnh, bạn có thể tham khảo chương Tham số dòng lệnh trong Python. (Mình đề nghị bạn nên tìm hiểu chương này sau khi bạn đã tìm hiểu qua về các khái niệm còn lại của Python.)

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 (dòng mới) 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.

 

 

Tham số dòng lệnh trong Python

 

Python cung cấp getopt Module giúp bạn phân tích cú pháp các tùy chọn và tham số dòng lệnh.

$ python test.py arg1 arg2 arg3

sys Module trong Python cung cấp sự truy cập tới bất kỳ tham số dòng lệnh nào thông qua sys.argv. Phục vụ hai mục đích:

  • argv là danh sách các tham số dòng lệnh.
  • len(sys.argv) là số tham số dòng lệnh.

Ví dụ

import sys


print 'So tham so:', len(sys.argv), 'tham so.'

print 'Danh sach tham so:', str(sys.argv)


Bây giờ chạy script trên như sau:

$ python test.py arg1 arg2 arg3

Kết quả là:

So tham so: 4 tham so.Danh sach tham so: ['test.py', 'arg1', 'arg2', 'arg3']


Ghi chú: tham số đầu tiên luôn luôn là tên script và nó cũng được đếm trong số tham số.

Parse các tham số dòng lệnh trong Python

Python cung cấp getopt Module giúp bạn phân tích cú pháp các tùy chọn và tham số dòng lệnh. Module này cung cấp hai hàm và một exception để kích hoạt việc phân tích cú pháp các tham số dòng lệnh.

Phương thức getopt.getopt trong Python

Phương thức này phân tích cú pháp danh sách tham số và các tùy chọn tham số dòng lệnh Cú pháp là:

getopt.getopt(args, option, [long_option])

Chi tiết về tham số:

  • args: Đây là danh sách tham số để được phân tích.
  • option: Đây là chuỗi các tùy chọn mà script muốn để nhận ra. Với các tùy chọn mà yêu cầu một tham số thì nên được theo sau bởi một dấu hai chấm (:).
  • long_option: Đây là tham số tùy ý và nếu được xác định, phải là một danh sách các chuỗi là tên các tùy chọn dài, mà được hỗ trợ. Với các tùy chọn dài yêu cầu một tham số thì nên được theo sau bởi một dấu bằng (=). Để chỉ chấp nhận các tùy chọn dài, các tùy chọn nên là một chuỗi trống.
  • Phương thức này trả về trả trị bao gồm hai phần tử: phần tử đầu là một danh sách các cặp (option, value). Phần tử thứ hai là danh sách các tham số chương trình.
  • Cặp option-value được trả về có một dấu gạch nối ngắn ở trước (ví dụ -x) là tùy chọn ngắn, có hai dấu gạch nối là tùy chọn dài (ví dụ --long-option).

getopt.GetoptError trong Python

Đây là một exception và nó được tạo khi thấy một tùy chọn không được nhận ra trong danh sách tham số hoặc khi một tùy chọn cần một tham số mà không cung cấp tham số nào.

Tham số cho exception là một chuỗi chỉ nguyên nhân gây ra lỗi. Các thuộc tính msg và opt cung cấp thông điệp lỗi và tùy chọn có liên quan.

Ví dụ

Giả sử bạn muốn truyền hai tên file thông qua dòng lệnh và bạn cũng muốn cung cấp một tùy chọn để kiểm tra sự sử dụng của script. Usage của script là như sau:

usage: test.py -i <inputfile> -o <outputfile>

Đây là script:

  import sys, getopt


def main(argv):

   inputfile = ''

   outputfile = ''

   try:

      opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])

   except getopt.GetoptError:

      print 'test.py -i <inputfile> -o <outputfile>'

      sys.exit(2)

   for opt, arg in opts:

      if opt == '-h':

         print 'test.py -i <inputfile> -o <outputfile>'

         sys.exit()

      elif opt in ("-i", "--ifile"):

         inputfile = arg

      elif opt in ("-o", "--ofile"):

         outputfile = arg

   print 'Input file is "', inputfile

   print 'Output file is "', outputfile


if __name__ == "__main__":

   main(sys.argv[1:])


Bây giờ chạy script trên như sau:

$ test.py -husage: test.py -i <inputfile> -o <outputfile> 

$ test.py -i BMP -o

usage: test.py -i <inputfile> -o <outputfile> 

$ test.py -i inputfile

Input file is " inputfile

Output file is "

 


Các kiểu biến trong Python

 

 Biến là không gì khác ngoài các vị trị bộ nhớ được dành riêng để lưu trữ dữ liệu. Một khi một biến đã được lưu trữ, nghĩa là một khoảng không gian đã được cấp phát trong bộ nhớ đó.

Dựa trên kiểu dữ liệu của một biến, trình thông dịch cấp phát bộ nhớ và quyết định những gì có thể được lưu trữ trong khu nhớ dành riêng đó. Vì thế, bằng việc gán các kiểu dữ liệu khác nhau cho các biến, bạn có thể lưu trữ số nguyên, thập phân hoặc ký tự trong các biến này.

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

Trong Python, chúng ta không cần khai báo biến một cách tường minh. Khi bạn gán bất cứ giá trị nào cho biến thì biến đó được khai báo một cách tự động. Phép gán được thực hiện bởi toán tử =.

Toán hạng trái của toán tử = là tên biến và toán hạng phải là giá trị được lưu trữ trong biến. Ví dụ:

 

 

a = 20          # Mot phép gan so nguyen

b   = 100.0       # Mot so thuc

ten    = "Hoang"       # Mot chuoi

 

print a

print b

print ten

Ở đây, 20, 100.0 và Hoang là các giá trị được gán cho các biến a, b và ten. Các lệnh trên sẽ cho kết quả sau:

20

100.0

Hoang

Phép đa gán (multiple assignment) trong Python

Python cho phép bạn gán một giá trị đơn cho một số biến một cách đồng thời. Python hỗ trợ hai kiểu đa gán sau:

Gán giá trị đơn cho nhiều biến, ví dụ:

a = b = c = 1

Hoặc gán nhiều giá trị cho nhiều biến, ví dụ:

a,b,c=5,10,15 

print a 

print b 

print c 

Trong trường hợp này, các giá trị sẽ được gán theo thứ tự mà các biến xuất hiện.

 

Các kiểu dữ liệu chuẩn trong Python

Dữ liệu mà được lưu trữ trong bộ nhớ có thể có nhiều kiểu khác nhau. Ví dụ, lương của công nhân đươc lưu trữ dưới dạng một giá trị số còn địa chỉ của họ được lưu trữ dưới dạng các ký tự chữ-số. Python có nhiều kiểu dữ liệu chuẩn được sử dụng để xác định các hành động có thể xảy ra trên chúng và phương thức lưu trữ cho mỗi kiểu.

Python có 5 kiểu dữ liệu chuẩn là:

  • Kiểu Number
  • Kiểu String
  • Kiểu List
  • Kiểu Tuple
  • Kiểu Dictionary

Ngoài kiểu Number và kiểu String mà có thể bạn đã được làm quen với các ngôn ngữ lập trình khác thì ở trong Python còn xuất hiện thêm ba kiểu dữ liệu đó là List, Tuple và Dictionary. Chúng ta sẽ tìm hiểu chi tiết từng kiểu dữ liệu trong một chương riêng (Bạn theo link để tìm hiểu chúng). Tiếp theo chúng ta tìm hiểu một số hàm đã được xây dựng sẵn trong Python để thực hiện phép chuyển đổi giữa các kiểu dữ liệu.

Chuyển đổi kiểu trong Python

Đôi khi bạn cần thực hiện một số phép chuyển đổi kiểu để thỏa mãn hàm hoặc phương thức nào đó, … Để thực hiện điều này, đơn giản là bạn sử dụng tên kiểu như là một hàm. Dưới đây là một số hàm đã được xây dựng sẵn để chuyển đổi từ một kiểu này sang một kiểu khác. Các hàm này trả về một đối tượng mới biểu diễn giá trị đã được chuyển đổi.

Hàm

Miêu tả

int(x [,base])

Chuyển đổi x thành một số nguyên. Tham số base xác định cơ sở nếu x là một chuỗi

long(x [,base] )

Chuyển đổi x thành một long int. Tham số base xác định cơ sở nếu x là một chuỗi

float(x)

Chuyển đổi x thành một số thực

complex(real [,imag])

Chuyển đổi x thành một số phức

str(x)

Chuyển đổi x thành một chuỗi

repr(x)

Chuyển đổi đối tượng x thành một chuỗi biểu thức

eval(str)

Ước lượng một chuỗi và trả về một đối tượng

tuple(s)

Chuyển đổi s thành một Tuple

list(s)

Chuyển đổi s thành một List

set(s)

Chuyển đổi s thành một Set

dict(d)

Tạo một Dictionary. Tham số d phải là một dãy các Tuple của cặp (key, value)

frozenset(s)

Chuyển đổi s thành một Fronzen Set

chr(x)

Chuyển đổi một số nguyên thành một ký tự

unichr(x)

Chuyển đổi một số nguyên thành một ký tự Unicode

ord(x)

Chuyển đổi một ký tự đơn thành giá trị nguyên của nó

hex(x)

Chuyển đổi một số nguyên thành một chuỗi thập lục phân

oct(x)

Chuyển đổi một số nguyên thành một chuỗi bát phân

 

 

 

Toán tử trong Python

 

 

Toán tử là các biểu tượng cụ thể mà thực hiện một số hoạt động trên một số giá trị và cho ra một kết quả. Ví dụ biểu thức 2 + 3 = 5, thì 2 và 3 được gọi là các toán hạng và dấu + được gọi là toán tử.

Các loại toán tử trong Python

Python hỗ trợ các loại toán tử sau:

  • Toán tử số học
  • Toán tử quan hệ (còn gọi là toán tử so sánh)
  • Toán tử gán
  • Toán tử logic
  • Toán tử membership
  • Toán tử identify
  • Toán tử thao tác bit

Toán tử số học trong Python

Assume variable a holds 10 and variable b holds 20, then −

Toán tử

Miêu tả

//

Thực hiện phép chia, trong đó kết quả là thương số sau khi đã xóa các chữ số sau dấu phảy

+

Phép cộng

-

Phép trừ

*

Phép nhân

/

Phép chia

%

Phép chia lấy phần dư

**

Phép lấy số mũ (ví dụ 2**3 cho kết quả là 8)

Dưới đây là ví dụ minh họa các toán tử số học trong Python.

>>> 10+2030>>> 20-1010>>> 10*220>>> 10/25>>> 10%31>>> 2**38>>> 10//33>>> 

Toán tử quan hệ trong Python

Python hỗ trợ các toán tử quan hệ (toán tử so sánh) sau:

Toán tử

Miêu tả

Nhỏ hơn. Nếu giá trị của toán hạng trái là nhỏ hơn giá trị của toán hạng phải, thì điều kiện trở thành true

Lớn hơn

<=

Nhỏ hơn hoặc bằng

<=

Lớn hơn hoặc bằng

==

Bằng

!=

Không bằng

<> 

Không bằng (tương tự !=)

Dưới đây là ví dụ minh họa cho các toán tử quan hệ trong Python:

>>> 10+20

30

>>> 20-10

10

>>> 10*2

20

>>> 10/2

5

>>> 10%3

1

>>> 2**3

8

>>> 10//3

3

>>>


Toán tử gán trong Python

Python hỗ trợ các loại toán tử gán sau:

Toán tử

Miêu tả

=

Phép gán

/=

Chia toán hạng trái cho toán hạng phải, và gán kết quả cho toán hạng trái

+=

Cộng và gán

-=

Trừ và gán

*=

Nhân và gán

%=

Chia lấy phần dư và gán

**=

Lấy số mũ và gán

//=

Thực hiện phép chia // và gán

Dưới đây là ví dụ minh họa cho các toán tử gán trong Python:

>>> 10<20

True

>>> 10>20

False

>>> 10<=10

True

>>> 20>=15

True

>>> 5==6

False

>>> 5!=6

True

>>> 10<>2

True

>>>


Toán tử logic trong Python

Python hỗ trợ các toán tử logic sau:

Toán tử

Miêu tả

and

Phép Và. Nếu cả hai điều kiện là true thì kết quả sẽ là true

or

Phép Hoặc. Nếu một trong hai điều kiện là true thì kết quả là true

not

Phép phủ định. Được sử dụng để đảo ngược trạng thái logic của toán hạng

Dưới đây là ví dụ minh họa cho các toán tử logic trong Python:

a=5>4 and 3>2print ab=5>4 or 3<2print bc=not(5>4)print c

Kết quả là:

>>> TrueTrueFalse>>> 

 

Toán tử thao tác bit trong Python

Toán tử thao tác bit làm việc trên các bit và thực hiện các hoạt động theo từng bit. Giả sử a = 60 và b = 13 thì định dạng nhị phân của chúng lần lượt là

a = 0011 1100 và b = 0000 1101.

Python hỗ trợ các toán tử thao tác bit sau:

Toán tử

Miêu tả

Ví dụ

&

Sao chép một bit tới kết quả nếu bit này tồn tại trong cả hai toán hạng

(a & b) cho kết quả 0000 1100

|

Sao chép một bit tới kết quả nếu bit này tồn tại trong bất kỳ toán hạng nào

(a | b) = 61 (tức là 0011 1101)

^

Sao chép bit nếu nó được set (chỉ bit 1) chỉ trong một toán hạng

(a ^ b) = 49 (tức là 0011 0001)

~

Đây là toán tử một ngôi, được sử dụng để đảo ngược bit

(~a ) = -61 (tức là 1100 0011)

<< 

Toán tử dịch trái nhị phân. Giá trị của toán hạng trái được dịch chuyển sang trái một số lượng bit đã được xác định bởi toán hạng phải

a << = 240 (tức là 1111 0000)

>> 

Toán tử dịch phải nhị phân. Giá trị của toán hạng trái được dịch chuyển sang phải một số lượng bit đã được xác định bởi toán hạng phải

a >> = 15 (tức là 0000 1111)

Dưới đây là ví dụ minh họa cho các toán tử thao tác bit trong Python:

a = 60            # 60 = 0011 1100 

b = 13            # 13 = 0000 1101 

c = 0


c = a & b;        # 12 = 0000 1100

print "Dong 1 - Gia tri cua c la ", c


c = a | b;        # 61 = 0011 1101 

print "Dong 2 - Gia tri cua c la ", c


c = a ^ b;        # 49 = 0011 0001

print "Dong 3 - Gia tri cua c la ", c


c = ~a;           # -61 = 1100 0011

print "Dong 4 - Gia tri cua c la ", c


c = a << 2;       # 240 = 1111 0000

print "Dong 5 - Gia tri cua c la ", c


c = a >> 2;       # 15 = 0000 1111

print "Dong 6 - Gia tri cua c la ", c


Toán tử membership trong Python

Toán tử membership trong Python kiểm tra xem biến này có nằm trong dãy (có là một trong các thành viên của dãy) hay không. Có hai toán tử membership trong Python là:

Toán tử

Miêu tả

in

Trả về true nếu một biến là nằm trong dãy các biến, nếu không là false

not in

Trả về true nếu một biến là không nằm trong dãy các biến, nếu không là false

Dưới đây là ví dụ minh họa cho các toán tử membership trong Python:

a=10

b=20

list=[10,20,30,40,50];

if (a in list):

    print "a la trong list da cho"

else:

    print "a la khong trong list da cho"

if(b not in list):

    print "b la khong trong list da cho"

else:

    print "b la trong list da cho"

Kết quả là:

>>>

a la trong list da cho

b la trong list da cho

>>>

 

Toán tử identify trong Python

Toán tử identify so sánh các vị trí ô nhớ của hai đối tượng. Python có hai toán tử identify là:

Toán tử

Miêu tả

is

Trả về true nếu các biến ở hai bên toán tử cùng trỏ tới một đối tượng, nếu không là false

is not

Trả về false nếu các biến ở hai bên toán tử cùng trỏ tới một đối tượng, nếu không là true

Dưới đây là ví dụ minh họa cho các toán tử identify trong Python:

a=20

b=20

if( a is b):

print  ?a,b co cung identity?

else:

print ?a, b la khac nhau?

b=10

if( a is not b):

print  ?a,b co identity khac nhau?

else:

print ?a,b co cung identity?

Kết quả là:

>>>

a,b co cung identity

a,b co identity khac nhau

>>>

 

Thứ tự ưu tiên của các toán tử trong Python

Bạn cần chú ý thứ tự ưu tiên của các toán tử để mang lại kết quả như mong muốn trong quá trình làm việc. Bảng dưới đây liệt kê tất cả các toán tử trong Python với thứ tự ưu tiên từ cao xuống thấp.

Toán tử

Miêu tả

**

Toán tử mũ

~ + -

Phần bù; phép cộng và trừ một ngôi (với tên phương thức lần lượt là +@ và -@)

* / % //

Phép nhân, chia, lấy phần dư và phép chia //

+ -

Phép cộng và phép trừ

>> <<

Dịch bit phải và dịch bit trái

&

Phép Và Bit

 

^ |

Phép XOR và OR

 

<= < > >=

Các toán tử so sánh

 

<> == !=

Các toán tử so sánh bằng

 

= %= /= //= -= += *= **=

Các toán tử gán

 

is is not

Các toán tử Identity

 

in not in

Các toán tử Membership

 

not or and

Các toán tử logic