1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Python (ngôn ngữ lập trình)

11 320 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 148,38 KB

Nội dung

Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm 1990. Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.

Python (ngôn ngữ lập trình) Python (ngôn ngữ lập trình) Bởi: Lê Văn Tâm Python ngôn ngữ lập trình thông dịch Guido van Rossum tạo năm 1990 Python hoàn toàn tạo kiểu động dùng chế cấp phát nhớ tự động; tương tự Perl, Ruby, Scheme, Smalltalk, Tcl Python phát triển dự án mã mở, tổ chức phi lợi nhuận Python Software Foundation quản lý Theo đánh giá Eric S Raymond, Python ngôn ngữ có hình thức sáng sủa, cấu trúc rõ ràng, thuận tiện cho người học lập trình Cấu trúc Python cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu, nhận định Guido van Rossum vấn ông Ban đầu, Python phát triển để chạy Unix Nhưng theo thời gian, “bành trướng” sang hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux hệ điều hành khác thuộc họ Unix Mặc dù phát triển Python có đóng góp nhiều cá nhân, Guido van Rossum tác giả chủ yếu Python Ông giữ vai trò chủ chốt việc định hướng phát triển Python Lịch sử Sự phát triển Python đến chia làm giai đoạn: Python 1: bao gồm phát hành 1.x Giai đoạn này, kéo dài từ đầu đến cuối thập niên 1990 Từ năm 1990 đến 1995, Guido làm việc CWI (Centrum voor Wiskunde en Informatica - Trung tâm Toán-Tin học Amsterdam, Hà Lan) Vì vậy, phiên Python CWI phát hành Phiên cuối phát hành CWI 1.2 Vào năm 1995, Guido chuyển sang CNRI (Corporation for National Research Initiatives) Reston, Virginia Tại đây, ông phát hành số phiên khác Python 1.6 phiên cuối phát hành CNRI Sau phát hành 1.6, Guido rời bỏ CNRI để làm việc với lập trình viên chuyên viết phần mềm thương mại Tại đây, ông có ý tưởng sử dụng Python với phần mềm tuân theo chuẩn GPL Sau đó, CNRI FSF (Free Software Foundation - Tổ chức phần mềm tự do) hợp tác để làm quyền Python phù hợp với GPL Cùng 1/11 Python (ngôn ngữ lập trình) năm đó, Guido nhận Giải thưởng FSF Sự phát triển Phần mềm tự (Award for the Advancement of Free Software) Phiên 1.6.1 đời sau phiên đâu tiền tuân theo quyền GPL Tuy nhiên, hoàn toàn giống 1.6, trừ số sửa lỗi cần thiết Python 2: vào năm 2000, Guido nhóm phát triển Python dời đến BeOpen.com thành lập BeOpen PythonLabs team Phiên Python 2.0 phát hành Sau phát hành Python 2.0, Guido thành viên PythonLabs gia nhập Digital Creations Python 2.1 đời kế thừa từ Python 1.6.1 Python 2.0 Bản quyền phiên đổi thành Python Software Foundation License Từ thời điểm trở đi, Python thuộc sở hữu Python Software Foundation (PSF), tổ chức phi lợi nhuận thành lập theo mẫu Apache Software Foundation Python 3, gọi Python 3000 Py3K: Dòng 3.x không hoàn toàn tương thích với dòng 2.x, có công cụ hỗ trợ chuyển đổi từ phiên 2.x sang 3.x Nguyên tắc chủ đạo để phát triển Python 3.x "bỏ cách làm việc cũ nhằm hạn chế trùng lặp mặt chức Python" Trong PEP (Python Enhancement Proposal) có mô tả chi tiết thay đổi Python Các đặc điểm Python 3.0 trình bày phần cuối Đặc điểm Dễ học, dễ đọc Python thiết kế để trở thành ngôn ngữ dễ học, mã nguồn dễ đọc, bố cục trực quan, dễ hiểu, thể qua điểm sau: Từ khóa • Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế kí hiệu cấu trúc cú pháp so với ngôn ngữ khác • Python ngôn ngữ phân biệt kiểu chữ HOA, chữ thường • Như C/C++, từ khóa Python dạng chữ thường Khối lệnh Trong ngôn ngữ khác, khối lệnh thường đánh dấu cặp kí hiệu từ khóa Ví dụ, C/C++, cặp ngoặc nhọn { } dùng để bao bọc khối lệnh Python, trái lại, có cách đặc biệt để tạo khối lệnh, thụt câu lệnh 2/11 Python (ngôn ngữ lập trình) khối vào sâu (về bên phải) so với câu lệnh khối lệnh cha chứa Ví dụ, giả sử có đoạn mã sau C/C++: #include // delta = b * b – * a * c; if (delta > 0) { // Khối lệnh kí tự { đến } x1 = (- b + sqrt(delta)) / (2 * a); x2 = (- b - sqrt(delta)) / (2 * a); printf("Phuong trinh co hai nghiem phan biet:\n"); printf("x1 = %f; x2 = %f", x1, x2); } Đoạn mã viết lại Python sau: import math # delta = b * b – * a * c if delta > 0: # Khối lệnh mới, thụt vào đầu dòng x1 = (- b + math.sqrt(delta)) / (2 * a) x2 = (- b – math.sqrt(delta)) / (2 * a) print "Phuong trinh co hai nghiem phan biet:" print "x1 = ", x1, "; ", "x2 = ", x2 Ta sử dụng dấu tab khoảng trống để thụt câu lệnh vào Các thực Python viết từ ngôn ngữ khác, tạo thực khác Bản thực Python chính, gọi CPython, viết C, phân phối kèm thư viện chuẩn lớn viết hỗn hợp C Python CPython chạy nhiều khả chuyển nhiều khác Dưới đó, CPython chạy • Các hệ điều hành họ Unix: AIX, Darwin, FreeBSD, Mac OS X, NetBSD, Linux, OpenBSD, Solaris,… • Các hệ điều hành dành cho máy desktop: Amiga, AROS, BeOS, Mac OS 9, Microsoft Windows, OS/2, RISC OS • Các hệ thống nhúng hệ đặc biệt: GP2X, Máy ảo Java, Nokia 770 Internet Tablet, Palm OS, PlayStation 2, PlayStation Portable, Psion, QNX, Sharp Zaurus, Symbian OS, Windows CE/Pocket PC, Xbox/XBMC, VxWorks • Các hệ máy tính lớn hệ khác: AS/400, OS/390, Plan from Bell Labs, VMS, z/OS Ngoài CPython, có hai thực Python khác: Jython cho môi trường Java IronPython cho môi trường NET Mono Khả mở rộng 3/11 Python (ngôn ngữ lập trình) Python mở rộng: ta biết sử dụng C, ta dễ dàng viết tích hợp vào Python nhiều hàm tùy theo nhu cầu Các hàm trở thành hàm xây dựng sẵn (built-in) Python Ta mở rộng chức trình thông dịch, liên kết chương trình Python với thư viện dạng nhị phân (như thư viện đồ họa nhà sản xuất thiết bị cung cấp) Hơn nữa, ta liên kết trình thông dịch Python với ứng dụng viết từ C sử dụng mở rộng ngôn ngữ dòng lệnh phụ trợ cho ứng dụng Trình thông dịch Python ngôn ngữ lập trình dạng thông dịch, có ưu điểm tiết kiệm thời gian phát triển ứng dụng không cần phải thực biên dịch liên kết Trình thông dịch sử dụng để chạy file script, sử dụng theo cách tương tác Ở chế độ tương tác, trình thông dịch Python tương tự shell hệ điều hành họ Unix, đó, ta nhập vào biểu thức gõ Enter, kết thực thi hiển thị Đặc điểm hữu ích cho người học, giúp họ nghiên cứu tính ngôn ngữ; để lập trình viên chạy thử mã lệnh suốt trình phát triển phần mềm Ngoài ra, tận dụng đặc điểm để thực phép tính với máy tính bỏ túi Lệnh cấu trúc điều khiển Mỗi câu lệnh Python nằm dòng mã nguồn Ta không cần phải kết thúc câu lệnh kí tự Cũng ngôn ngữ khác, Python có cấu trúc điều khiển Chúng bao gồm: Cấu trúc rẽ nhánh: cấu trúc if (có thể sử dụng thêm elif else), dùng để thực thi có điều kiện khối mã cụ thể Cấu trúc lặp, bao gồm: • Lệnh while: chạy khối mã cụ thể điều kiện lặp có giá trị false • Vòng lặp for: lặp qua phần tử dãy, phần tử đưa vào biến cục để sử dụng với khối mã vòng lặp Python có từ khóa class dùng để khai báo lớp (sử dụng lập trình hướng đối tượng) lệnh def dùng để định nghĩa hàm Hệ thống kiểu liệu Python sử dụng hệ thống kiểu duck typing, gọi latent typing (tự động xác định kiểu) Có nghĩa là, Python không kiểm tra ràng buộc kiểu liệu thời điểm dịch, mà thời điểm thực thi Khi thực thi, thao tác đối tượng bị thất bại, có nghĩa đối tượng không sử dụng kiểu thích hợp 4/11 Python (ngôn ngữ lập trình) Python ngôn ngữ định kiểu mạnh Nó cấm thao tác không hợp lệ, ví dụ cộng số vào chuỗi kí tự Sử dụng Python, ta không cần phải khai báo biến Biến xem khai báo gán giá trị lần Căn vào lần gán, Python tự động xác định kiểu liệu biến Python có số kiểu liệu thông dụng sau: • int, long: số nguyên (trong phiên 3.x long nhập vào kiểu int) Độ dài kiểu số nguyên tùy ý, bị giới hạn nhớ máy tính • float: số thực • complex: số phức, chẳng hạn 5+4j • list: dãy phần tử thay đổi, chẳng hạn [8, 2, 'b', -1.5] Kiểu dãy khác với kiểu mảng (array) thường gặp ngôn ngữ lập trình chỗ phần tử dãy không thiết có kiểu giống Ngoài phần tử dãy dãy khác • tuple: dãy phần tử thay đổi • str: chuỗi kí tự Từng kí tự chuỗi thay đổi Chuỗi kí tự đặt dấu nháy đơn, nháy kép • dict: từ điển, gọi "hashtable": cặp liệu gắn theo kiểu {từ khóa: giá trị}, từ khóa từ điển thiết phải khác Chẳng hạn {1: "Python", 2: "Pascal"} • set: tập không xếp theo thứ tự, đó, phần tử xuất lần Ngoài ra, Python có nhiều kiểu liệu khác Xem thêm phần "Các kiểu liệu" bên Module Python cho phép chia chương trình thành module để sử dụng lại chương trình khác Nó cung cấp sẵn tập hợp modules chuẩn mà lập trình viên sử dụng lại chương trình họ Các module cung cấp nhiều chức hữu ích, hàm truy xuất tập tin, lời gọi hệ thống, trợ giúp lập trình mạng (socket),… Đa Python ngôn ngữ lập trình đơn giản hiệu • So với Unix shell, Python hỗ trợ chương trình lớn cung cấp nhiều cấu trúc • So với C, Python cung cấp nhiều chế kiểm tra lỗi Nó có sẵn nhiều kiểu liệu cấp cao, ví dụ mảng (array) linh hoạt từ điển (dictionary) mà ta phải nhiều thời gian viết C 5/11 Python (ngôn ngữ lập trình) Python ngôn ngữ lập trình cấp cao đáp ứng phần lớn yêu cầu lập trình viên: • Python thích hợp với chương trình lớn AWK Perl • Python sử dụng để lập trình Web Nó sử dụng ngôn ngữ kịch • Python thiết kế để nhúng phục vụ ngôn ngữ kịch để tuỳ biến mở rộng ứng dụng lớn • Python tích hợp sẵn nhiều công cụ có thư viện chuẩn phong phú, Python cho phép người dùng dễ dàng tạo dịch vụ Web, sử dụng thành phần COM hay CORBA, hỗ trợ loại định dạng liệu Internet email, HTML, XML ngôn ngữ đánh dấu khác Python cung cấp thư viện xử lý giao thức Internet thông dụng HTTP, FTP,… • Python có khả giao tiếp đến hầu hết loại sở liệu, có khả xử lí văn bản, tài liệu hiệu quả, làm việc tốt với công nghệ Web khác • Python đặc biệt hiệu lập trình tính toán khoa học nhờ công cụ Python Imaging Library, pyVTK, MayaVi 3D Visualization Toolkits, Numeric Python, ScientificPython,… • Python sử dụng để phát triển ứng dụng desktop Lập trình viên dùng wxPython, PyQt, PyGtk để phát triển ứng dụng giao diện đồ họa (GUI) chất lượng cao Python hỗ trợ tảng phát triển phần mềm khác MFC, Carbon, Delphi, X11, Motif, Tk, Fox, FLTK, … • Python có sẵn unit testing framework để tạo các test (test suites) Multiple paradigms (đa biến hóa) Python ngôn ngữ đa biến hóa (multiple paradigms) Có nghĩa là, thay ép buộc người phải sử dụng phương pháp lập trình, Python lại cho phép sử dụng nhiều phương pháp lập trình khác nhau: hướng đối tượng, có cấu trúc, chức năng, hướng đến khía cạnh Python kiểu kiểu động sử dụng thu gom rác để quản lí nhớ Một đặc điểm quan trọng Python giải pháp tên động, kết nối tên biến tên phương thức lại với suốt thực thi chương trình Sự tương đương true giá trị khác Cũng C/C++, giá trị khác tương đương với true ngược lại, giá trị tương đương với false Như vậy: if a != 0: tương đương với 6/11 Python (ngôn ngữ lập trình) if a: Cú pháp Sau cú pháp ngôn ngữ Python: Toán tử + - * / // (chia làm tròn) % (phần dư) ** (lũy thừa) ~ (not) & (and) | (or) ^ (xor) > (right shift) == (bằng) = != (khác) Python sử dụng kí pháp trung tố thường gặp ngôn ngữ lập trình khác Các kiểu liệu Kiểu số 1234585396326 (số nguyên dài vô hạn) -86.12 7.84E-04 2j + 8j (số phức) Kiểu chuỗi (string) "Hello" "It's me" '"OK"-he replied' Kiểu (tuple) (1, 2.0, 3) (1,) ("Hello",1,()) Kiểu danh sách (list) [4.8, -6] ['a','b'] Kiểu từ điển (dictionary) {"Vietnam":"Hanoi", "France":"Paris"} "Netherlands":"Amsterdam", Chú thích # dòng thích 7/11 Python (ngôn ngữ lập trình) Lệnh gán tên biến = biểu thức x = 23.8 y = -x ** z1 = z2 = x + y loiChao = "Hello!" i += # tăng biến i thêm đơn vị In giá trị print biểu thức print (7 + 8) / 2.0 print (2 + 3j) * (4 6j) Nội suy chuỗi (string interpolation) print "Hello %s" %("world!") print "i = %d" %i print "a = %.2f and b = %.3f" %(a,b) Cấu trúc rẽ nhánh Dạng 1: if biểu_thức_điều_kiện: # lệnh Dạng 2: if biểu_thức_điều_kiện: # lệnh else: # lệnh Dạng 3: if biểu_thức_điều_kiện_1: # lệnh (được thực biểu_thức_điều_kiện_1 đúng/true) elif biểu_thức_điều_kiện_2: # lệnh (được thực biểu_thức_điều_kiện_1 sai/false, biểu_thức_điều_kiện_2 đúng/true) else: # lệnh (được thực tất biểu thức điều kiện kèm if elif sai) Cấu trúc lặp while biểu_thức_đúng: # lệnh for phần_tử in dãy: # lệnh L = ["Ha Noi", "Hai Phong", "TP Ho Chi Minh"] for thanhPho in L: print thanhPho for i in range(10): print i 8/11 Python (ngôn ngữ lập trình) Hàm def tên_hàm (tham_biến_1, tham_biến_2, tham_biến_n): # lệnh return giá_trị_hàm def binhPhuong(x): return x*x Hàm với tham số mặc định: def luyThua(x, n=2): """Lũy thừa với số mũ mặc định 2""" return x**n print luyThua(3) # print luyThua(2,3) # Lớp class Tên_Lớp_1: # class Tên_Lớp_2(Tên_Lớp_1): """Lớp kế thừa lớp 1""" x = # biến thành viên lớp # def phương_thức(self, tham_biến): # # khởi tạo a = Tên_Lớp_2() print a.x print a.phương_thức(m) # m giá trị gán cho tham biến List Comprehension List Comprehension dạng cú pháp đặc biệt (syntactic sugar) (mới có từ Python 2.x) cho phép thao tác toàn dãy (list) mà không cần viết rõ vòng lặp Chẳng hạn y dãy mà phần tử bình phương phần tử dãy x: y = [xi**2 for xi in x] Xử lý lỗi try: câu_lệnh except Loại_Lỗi: thông báo lỗi Tốc độ thực Là ngôn ngữ thông dịch, Python có tốc độ thực chậm nhiều lần so với ngôn ngữ biên dịch Fortran, C, v.v Trong số ngôn ngữ thông dịch, Python đánh giá nhanh Ruby Tcl, chậm Lua Các đặc điểm Python 3.x Nội dung phần trích từ tài liệu Guido van Rossum Phần không liệt kê đầy đủ tất đặc điểm; chi tiết xin xem tài liệu nói Một số thay đổi cần lưu ý Lệnh print trở thành hàm print Theo sau print() ta cần nhớ gõ vào cặp ngoặc (): 9/11 Python (ngôn ngữ lập trình) print("Hello") print(2+3) Trả lại kết không list số trường hợp • dict.keys(), dict.items(), dict.values() kết cho "view" thay list • map filter trả lại iterator • range có tác dụng xrange, không trả lại list So sánh Không hàm cmp, cmp(a, b) thay (a > b) - (a < b) Số nguyên • • • • Kiểu long đổi tên thành int 1/2 cho ta kết số thực số nguyên Không số sys.maxint Kiểu bát phân kí hiệu 0o thay 0, chẳng hạn 0o26 Phân biệt văn - liệu nhị phân thay Unicode - chuỗi 8-bit • Tất chuỗi văn dạng Unicode, chuỗi Unicode mã hóa lại dạng liệu nhị phân Dạng mặc định UTF-8 • Không thể viết u"a string" để biểu diễn chuỗi phiên 2.x Các thay đổi cú pháp Cú pháp • Các tham biến chấp nhận keyword: Các tham biến phía sau *args phải gọi theo dạng keyword • Từ khóa nonlocal Muốn khai báo biến x với có phạm vi ảnh hưởng rộng hơn, chưa đến mức toàn cục, ta dùng nonlocal x • Gán giá trị vào phần tử tuple cách thông minh, chẳng hạn viết (a, *rest, b) = range(5) để có a = 0; b = [1,2,3]; c = • Dictionary comprehension, chẳng hạn {k: v for k, v in stuff} thay dict(stuff) • Kiểu nhị phân, chẳng hạn b110001 Cú pháp thay đổi • raise [biểu_thức [from biểu_thức]] • except lệnh as biến • Sử dụng metaclass đối tượng: class C(metaclass=M): pass 10/11 Python (ngôn ngữ lập trình) Cách dùng biến metaclass không hỗ trợ Cú pháp bị loại bỏ • Không dấu ``, thay đó, dùng repr • Không so sánh (dùng !=) • Không lớp kiểu classic 11/11 ... viết C 5/11 Python (ngôn ngữ lập trình) Python ngôn ngữ lập trình cấp cao đáp ứng phần lớn yêu cầu lập trình viên: • Python thích hợp với chương trình lớn AWK Perl • Python sử dụng để lập trình... Bell Labs, VMS, z/OS Ngoài CPython, có hai thực Python khác: Jython cho môi trường Java IronPython cho môi trường NET Mono Khả mở rộng 3/11 Python (ngôn ngữ lập trình) Python mở rộng: ta biết sử... cần thiết Python 2: vào năm 2000, Guido nhóm phát triển Python dời đến BeOpen.com thành lập BeOpen PythonLabs team Phiên Python 2.0 phát hành Sau phát hành Python 2.0, Guido thành viên PythonLabs

Ngày đăng: 18/05/2017, 22:42

TỪ KHÓA LIÊN QUAN

w