Copyright 2012, Chin This work is licensed under the Creative Commons Attribution 3.0 Unported License. Dưới đây là những kiến thức tóm tắt. Có thể tham khảo các nguồn khác đầy đủ hơn [có lẽ cũng dễ hơn nữa =]]: Python là một ngôn ngữ thông dịch [interpreted], tức là ngôn ngữ không cần phải biên dịch một lần ra file chạy mà đọc code đến đâu chạy đến đấy. Khi chạy lệnh Sơ lược về Python
Giới thiệu về ngôn ngữ
4 ta sẽ có một giao diện dòng lệnh giống của Unix, có thể chạy từng dòng code Python ngay trực tiếp tại đây. Ngoài ra còn có `b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
5 là một phiên bản cải tiến hơn của dòng lệnh `b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
4 có đánh mã màu, tự động điền khi ấn tab [autocomplete] và nhiều tính năng khác khiến việc khám phá ngôn ngữ trở nên dễ dàng hơn.`b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
NOTE Nên phân biệt 2 khái niệm ở đây là ngôn ngữ Python viết hoa chữ cái đầu bằng text thường và
4 là dòng lệnh và trình thông dịch của Python. Nên phân biệt 2 khái niệm ở đây là ngôn ngữ Python viết hoa chữ cái đầu bằng text thường và `b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
`b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
4 là dòng lệnh và trình thông dịch của Python.Python có mặt ở mọi nơi và dễ dàng cài đặt. Gần như tất cả các bản phân phối Linux đều cài sẵn Python, Mac OS X từ bản Lion trở đi cũng cài sẵn Python. Trên Windows có thể tải Python từ trang chủ.
Python có rất nhiều module đi kèm và vô số module từ các bên thứ ba để tăng thêm tính năng cho ngôn ngữ như truy cập mạng, hệ thống file, mã hóa, giao diện đồ họa, 3D...
Python có hệ thống documentation rất độc đáo, đi kèm trong code luôn. VD: vào
`b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
8 chạy lệnh sau `b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
9Basic stuffs
Biến [variable]
Biến trong Python không cần khai báo, dùng đến đâu tạo đến đấy. Thậm chí không cần nói rõ biến là kiểu biến gì, Python sẽ tự suy luận từ giá trị được gán cho biến.
Có một số loại biến cơ bản là:
0 [số nguyên]if :
elif : # else + if = elif
elif :
else:
VD:
1if :
elif : # else + if = elif
elif :
else:
2 [số thập phân]if :
elif : # else + if = elif
elif :
else:
VD:
3if :
elif : # else + if = elif
elif :
else:
4 [chuỗi ký tự]if :
elif : # else + if = elif
elif :
else:
VD:
5if :
elif : # else + if = elif
elif :
else:
hoặc `a = "abc"` # tự động escape dấu ' hoặc `a = """abc"""` # escape tất cả mọi thứ
6 [danh sách, truy cập bằng thứ tự, giống array nhưng linh hoạt hơn rất nhiều]if :
elif : # else + if = elif
elif :
else:
VD:
7 ->if :
elif : # else + if = elif
elif :
else:
8 =if :
elif : # else + if = elif
elif :
else:
9if :
elif : # else + if = elif
elif :
else:
`b = ['a', 'b', 'c']` -> `b[1]` = `'b'` `c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
0 [mappingif age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
1 tương tựif age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
6 nhưng truy cập thành phần bằng tên chứ không bằng số thứ tự]if :
elif : # else + if = elif
elif :
else:
VD:
3 ->if age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
4 =if age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
9if :
elif : # else + if = elif
elif :
else:
If/else
Chả cần phải giải thích nhiều =]]
if :
elif : # else + if = elif
elif :
else:
VD:
if age > 18:
print['legal']
elif age == 18:
print['barely legal']
else:
print['go home, kid']
NOTE Trong Python không dùng begin/end hay {} để đánh dấu code block mà dùng indentation [việc thụt đầu dòng] để đánh dấu. Thường dùng 4 dấu cách hoặc một phím tab để indent. Không cần đóng code block vì chỉ cần khác indent tức là khác level rồi. Trong Python không dùng begin/end hay {} để đánh dấu code block mà dùng indentation [việc thụt đầu dòng] để đánh dấu. Thường dùng 4 dấu cách hoặc một phím tab để indent. Không cần đóng code block vì chỉ cần khác indent tức là khác level rồi.
VD:
level 1
level 2
level 3
vẫn level 3
quay lại level 2
Vòng lặp
Vòng lặp
6:if age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
while :
VD:
i = 0 while i < 5: print[i] i = i + 1
Vòng lặp
7:if age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
for in :
VD:
for i in [1, 2, 3, 4]: print[i]
NOTE Python có hàm range[] để tạo list tự động rất phù hợp để dùng chung với
7. Python có hàm range[] để tạo list tự động rất phù hợp để dùng chung vớiif age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
7.if age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
VD:
9 cho kết quả là một list như sauif age > 18: print['legal'] elif age == 18: print['barely legal'] else: print['go home, kid']
0. Chạylevel 1 level 2 level 3 vẫn level 3 quay lại level 2
1 để biết thêm chi tiết.level 1 level 2 level 3 vẫn level 3 quay lại level 2
Đối tượng
Trong Python gần như mọi thứ đều là các đối tượng. Đối tượng là những cục code có chứa các biến và các hàm để thực hiện trên đối tượng đó.
VD: 'abc' là một đối tượng string. Ta có thể gọi hàm
level 1
level 2
level 3
vẫn level 3
quay lại level 2
2 để return 'ABC' hoặc level 1
level 2
level 3
vẫn level 3
quay lại level 2
3 để có được 'abc'. Chạy lệnh level 1
level 2
level 3
vẫn level 3
quay lại level 2
4 để list những tính năng [hàm, biến] mà đối tượng 'abc' sở hữu. Sau đó dùng hàm level 1
level 2
level 3
vẫn level 3
quay lại level 2
5 để biết thêm về những hàm, biến đó. Thử chạy level 1
level 2
level 3
vẫn level 3
quay lại level 2
6 xem :DModule
Module là các đối tượng được viết sẵn để tạo thêm tính năng cho ngôn ngữ. Khi muốn sử dụng một tính năng thuộc module nào đó thì phải import module đó:
level 1
level 2
level 3
vẫn level 3
quay lại level 2
7.VD:
Module
8 [system] để truy cập các thành phần hệ thống. VD:level 1 level 2 level 3 vẫn level 3 quay lại level 2
9 để thoát chương trình.level 1 level 2 level 3 vẫn level 3 quay lại level 2
0 chứa phiên bản Python hiện tại.while :
1 chứa tên hệ điều hành hiện tại.while :
2 hoặc trong ipython, gõwhile :
3 và nhấnwhile :
4 để biết thêm chi tiết.while :
Module
5 có các hàm, biến, hằng để làm việc với thời gian. VD:while :
6 sẽ pause chương trình trong 3 giây.while :
Now let's get dirty
Dưới đây là một chuỗi bài tập về việc implement lại các lệnh cơ bản của Unix bằng Python.
Bài tập 1: cat
while :
7 là lệnh để đưa input ra output. Chạy while :
7 không có đối số, nó sẽ lặp vô hạn, đợi input từ người dùng và ghi ngược cái input đó ra màn hình.Thường dùng để:
Tạo file mới
cat > new_file.txt
[khi chạy lệnh, cat sẽ đợi input, gõ văn bản vào và nhấn Control-D để kết thúc]
In nội dung file text ra màn hình
0`b = ['a', 'b', 'c']` -> `b[1]` = `'b'` `c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
Ý tưởng:
- Nếu có argument là file thì mở file và in ra màn hình.
- Nếu không thì lặp vô hạn việc đọc input và ghi ra output.
NOTE Để làm được bài tập này thì cần biết thêm một số khái niệm sau Để làm được bài tập này thì cần biết thêm một số khái niệm sau
Module
8 dùng để giao tiếp với hệ thống. Nó có một số hàm và biến khá hay ho:level 1 level 2 level 3 vẫn level 3 quay lại level 2
0 dùng để thoát chương trình khi cần.i = 0 while i < 5: print[i] i = i + 1
1 là một list chứa các argument của chương trình. Hãy tưởng tượng chương trình là một hàm, được hệ thống gọi, có đối số,i = 0 while i < 5: print[i] i = i + 1
1 cho ta truy cập các đối số đó.i = 0 while i < 5: print[i] i = i + 1
VD: Nếu chạy lệnh sau trong terminal
3 thì sys.argv sẽ chứa giá trịi = 0 while i < 5: print[i] i = i + 1
4i = 0 while i < 5: print[i] i = i + 1
Hàm
5 dùng để nhập dữ liệu từ người dùng, luôn return một string. Có thể so sánh vớii = 0 while i < 5: print[i] i = i + 1
6 của C vài = 0 while i < 5: print[i] i = i + 1
7 của Pascal.i = 0 while i < 5: print[i] i = i + 1
Hàm
8 dùng để mở file. Return một đối tượng file.i = 0 while i < 5: print[i] i = i + 1
Code mẫu:
`b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
1Bài tập 2: echo
i = 0
while i < 5:
print[i]
i = i + 1
9 là lệnh để in ra màn hình. Cách dùng:`b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
2Ý tưởng:
- Nếu không có argument nào thì thoát
- Nếu có thì nối hết lại thành một string và in ra màn hình
NOTE Để làm được bài tập này thì cần biết thêm một số khái niệm sau Để làm được bài tập này thì cần biết thêm một số khái niệm sau
- trong đối tượng string có một hàm là hàm
0 dùng để nối các phần tử của list với nhau sử dụng dấu phân cách chính là đối tượng string đang nhắc tới.for in :
VD:
for in :
1 return kết quả là for in :
2Code mẫu:
`b = ['a', 'b', 'c']` -> `b[1]` = `'b'`
`c = [1, 'b', 3.5]` -> `c[1]` = `3.5`
3Bài tập 2: echo
i = 0
while i < 5:
print[i]
i = i + 1
9 là lệnh để in ra màn hình. Cách dùng:Ý tưởng: