Phần 1 – Giới thiệu python3
- https://www.tutorialspoint.com/python3
- https://drive.google.com/drive/u/1/folders/1hNnSd9FiUHSViVA0qo5_g7XSuX5NGCeP
- https://www.codecademy.com/learn/learn-python-3
- https://www.udemy.com/course/try-django-2-2-python-web-development/
- https://docs.python.org/3.7/tutorial/
1. Introduction
- Overview
- Interpreted: Python được trình thông dịch xử lý trong thời gian chạy.
- Interactive: Có thể tương tác trực tiếp với trình thông dịch thông qua command line shell
- Object-Oriented: Hỗ trợ lập trình hướng đối tượng
- Beginner’s Language: dễ học ngay cả với người mới bắt đầu lập trình
- Environment setup (Ubuntu)
- Nên cài đặt python version > 3.5 (để sau đó học luôn framework Django 3.0)
- Trên Ubuntu Linux, python3 được cài chỉ bằng 1 command line:
sudo apt-get install python3.7
(python 3.6 có sẵn trên ubuntu 18.04). - Chú ý khi cài python3.7 trên máy ubuntu sẽ có nhiều version của python2, python3.6, để mặc định sử dung version 3.7 cần tìm hiểu
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
,sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
, mặc định sẽ tự động chọn 3.7 khi dùng lệnhpython3
. Tương tự nếu muốn lệnhpython
mặc định là 3.7 cầnsudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
- Để có thể cài đặt thêm các thư viện cho python3, cần cài thêm package manager là pip3:
sudo apt install -y python3-pip
- Vậy là đã có thể lập trình python3, muốn sử dụng package nào chỉ cần cài vào là xong theo format:
pip3 install package_name
- “Hello, World” Program
sudo pip3.7 install virtualenv
: Cài đặt package này giúp tạo môi trường ảo. Từ đây, tất cả những packages được cài đặt mới sẽ đặt nằm trong thư mục mới thay vì/usr/lib/python3/package_name
.- sau khi tạo thư mục bạn muốn(thư mục để code python),
virtualenv -p python3.7 venv
sẽ tạo thư mục môi trườngvenv
, sẽ không phải lo lắng vấn đề môi trường và chỉ cần tập trung vào ngôn ngữ python. - activate môi trường:
source venv/bin/activate
.
2. Basic Syntax
- Cú pháp dễ đọc:
print ("Hello, Python!")
- Có thể tương tác trực tiếp bằng command line hoặc chạy file execute có đuôi *.py, vd:
python test.py
- python sử dụng Indentation để xác định block code, tất cả các câu lệnh trong cùng một khối phải được thụt vào cùng một lượng.
- Dòng tiêu đề cho các câu lệnh ghép, chẳng hạn như if, while, def và class nên được kết thúc bằng dấu hai chấm (
- Dấu chấm phẩy
;
là tùy chọn ở cuối câu lệnh.import sys; x = 'foo'; sys.stdout.write(x + 'n')
- comment bằng dấu
#
hoặc cặp'''
'''
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token comment"># python comment first</span> <span class="token triple-quoted-string string">''' Python comment on multiple lines '''</span> <span class="token keyword">if</span> <span class="token boolean">True</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Answer"</span><span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"True"</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Answer"</span><span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"False"</span><span class="token punctuation">)</span> |
3. Datatypes and Objects
- Number gồm số nguyên, số thực và số phức:
import math; x = 16; print(math.sqrt(x)) # => 4
import math; y = 4; print(math.pow(y, 2)) # => 16
print(complex(2,3)) # => (2 + 3j)
- String:
Truy xuất
1 2 3 4 5 6 7 8 | <span class="token comment">#!/usr/bin/python3</span> var1 <span class="token operator">=</span> <span class="token string">'Hello World!'</span> var2 <span class="token operator">=</span> <span class="token string">"Python Programming"</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"var1[0]: "</span><span class="token punctuation">,</span> var1<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># var1[0]: H</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"var2[1:5]: "</span><span class="token punctuation">,</span> var2<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">:</span><span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># var2[1:5]: ytho</span> |
Cập nhật: chuỗi là immutable, nên ko thể thay đổi, được bao bởi nháy đơn '
, nháy kép "
hoặc nháy 3 '''
1 2 3 4 5 6 7 8 | <span class="token operator">>></span><span class="token operator">></span> <span class="token builtin">str</span> <span class="token operator">=</span> <span class="token string">"Strings are immutable"</span> <span class="token operator">>></span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token string">'S'</span> <span class="token operator">>></span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">"1"</span> Traceback <span class="token punctuation">(</span>most recent call last<span class="token punctuation">)</span><span class="token punctuation">:</span> File <span class="token string">"<stdin>"</span><span class="token punctuation">,</span> line <span class="token number">1</span><span class="token punctuation">,</span> <span class="token keyword">in</span> <span class="token operator"><</span>module<span class="token operator">></span> TypeError<span class="token punctuation">:</span> <span class="token string">'str'</span> <span class="token builtin">object</span> does <span class="token operator">not</span> support item assignment |
- List: Tương tự kiểu dữ liệu mảng trong các ngôn ngữ khác
1 2 3 4 5 6 | <span class="token builtin">list</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'physics'</span><span class="token punctuation">,</span> <span class="token string">'chemistry'</span><span class="token punctuation">,</span> <span class="token number">1997</span><span class="token punctuation">,</span> <span class="token number">2000</span><span class="token punctuation">]</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Value available at index 2 : "</span><span class="token punctuation">,</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># Value available at index 2 : 1997</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">2001</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"New value available at index 2 : "</span><span class="token punctuation">,</span> <span class="token builtin">list</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># New value available at index 2 : 2001</span> |
- Tuple: Tương tự cấu trúc list chỉ khác khai báo trong
()
và immutable (giống string). (khá giống.freeze
trong ruby)
1 2 3 4 | t <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">print</span> <span class="token punctuation">(</span>t<span class="token punctuation">)</span> <span class="token comment"># (3,)</span> <span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">2</span> <span class="token punctuation">;</span> <span class="token keyword">print</span><span class="token punctuation">(</span>v<span class="token punctuation">)</span> <span class="token comment"># TypeError: 'tuple' object does not support item assignment</span> |
- Dictionary: Tương tự mảng kết hợp trong php, java, hay hash trong ruby
1 2 3 4 5 6 7 8 9 | <span class="token comment">#!/usr/bin/python3</span> <span class="token builtin">dict</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'Name'</span><span class="token punctuation">:</span> <span class="token string">'Zara'</span><span class="token punctuation">,</span> <span class="token string">'Age'</span><span class="token punctuation">:</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token string">'Class'</span><span class="token punctuation">:</span> <span class="token string">'First'</span><span class="token punctuation">}</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token string">'Age'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">8</span><span class="token punctuation">;</span> <span class="token comment"># update existing entry</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token string">'School'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">"DPS School"</span> <span class="token comment"># Add new entry</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"dict['Age']: "</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token string">'Age'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"dict['School']: "</span><span class="token punctuation">,</span> <span class="token builtin">dict</span><span class="token punctuation">[</span><span class="token string">'School'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> |
- I/O: input và output với python shell interface
1 2 3 4 5 6 7 8 9 10 | <span class="token operator">>></span><span class="token operator">></span> x <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"enter your name:n"</span><span class="token punctuation">)</span> enter your name<span class="token punctuation">:</span> Nguyễn Phi Việt <span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">print</span><span class="token punctuation">(</span> x <span class="token punctuation">)</span> Nguyễn Phi Việt <span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">print</span><span class="token punctuation">(</span>f<span class="token string">"welcome to python3, {input()}"</span><span class="token punctuation">)</span> VietNP welcome to python3<span class="token punctuation">,</span> VietNP <span class="token operator">>></span><span class="token operator">></span> |
4. Expressions and Operators
- Basic Operators
Các kiểu toán tử trong python3:- Toán tử số học
+
,-
,*
,/
,%
chia lấy dư,**
luỹ thừa,//
chia làm tròn - Toán tử so sánh (quan hệ):
==
,!=
,<
,>
,<=
,>=
- Toán tử gán:
+=
,-=
,*=
,/=
,%=
,**=
,//=
- Toán tử logic
and
,or
,not
- Toán tử thao tác bit.
- Toán Tử thành viên:
print(1 in [1,2,3,4]) # True
- Toán tử nhận định (con trỏ):
is
,is not
- Toán tử số học
1 2 3 4 5 6 7 8 9 10 11 | a <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">]</span> b <span class="token operator">=</span> a c <span class="token operator">=</span> a <span class="token keyword">print</span><span class="token punctuation">(</span>a <span class="token keyword">is</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment"># False</span> <span class="token keyword">print</span><span class="token punctuation">(</span>b <span class="token keyword">is</span> a<span class="token punctuation">)</span> <span class="token comment"># True</span> <span class="token keyword">print</span><span class="token punctuation">(</span>b <span class="token keyword">is</span> c<span class="token punctuation">)</span> <span class="token comment"># True</span> d <span class="token operator">=</span> <span class="token number">1</span> e <span class="token operator">=</span> <span class="token number">1</span> <span class="token keyword">print</span><span class="token punctuation">(</span>d <span class="token keyword">is</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token comment"># True</span> <span class="token keyword">print</span><span class="token punctuation">(</span>e <span class="token keyword">is</span> d<span class="token punctuation">)</span> <span class="token comment"># True</span> |
- Regular Expressions
- Cú pháp sử dụng biểu thức chính quy trong python có dạng:
re.match(pattern, string, flags = 0)
, string là chuỗi cần xử lý, pattern là biểu thức chính quy dùng để so khớp. - Các phương thức cơ bản:
match
,search
,sub
vàsplit
- Cú pháp sử dụng biểu thức chính quy trong python có dạng:
1. Macth: so khớp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <span class="token comment">#!/usr/bin/python3</span> <span class="token keyword">import</span> re line <span class="token operator">=</span> <span class="token string">"Cats are smarter than dogs"</span> matchObj <span class="token operator">=</span> re<span class="token punctuation">.</span>match<span class="token punctuation">(</span> r<span class="token string">'(.*) are (.*?) .*'</span><span class="token punctuation">,</span> line<span class="token punctuation">,</span> re<span class="token punctuation">.</span>M<span class="token operator">|</span>re<span class="token punctuation">.</span>I<span class="token punctuation">)</span> <span class="token keyword">if</span> matchObj<span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"matchObj.group() : "</span><span class="token punctuation">,</span> matchObj<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"matchObj.group(1) : "</span><span class="token punctuation">,</span> matchObj<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"matchObj.group(2) : "</span><span class="token punctuation">,</span> matchObj<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"No match!!"</span><span class="token punctuation">)</span> |
kết quả là:
1 2 3 4 | matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter |
2. match vs search: so khớp và tìm kiếm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <span class="token comment">#!/usr/bin/python3</span> <span class="token keyword">import</span> re line <span class="token operator">=</span> <span class="token string">"Cats are smarter than dogs"</span><span class="token punctuation">;</span> matchObj <span class="token operator">=</span> re<span class="token punctuation">.</span>match<span class="token punctuation">(</span> r<span class="token string">'dogs'</span><span class="token punctuation">,</span> line<span class="token punctuation">,</span> re<span class="token punctuation">.</span>M<span class="token operator">|</span>re<span class="token punctuation">.</span>I<span class="token punctuation">)</span> <span class="token keyword">if</span> matchObj<span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"match --> matchObj.group() : "</span><span class="token punctuation">,</span> matchObj<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"No match!!"</span><span class="token punctuation">)</span> searchObj <span class="token operator">=</span> re<span class="token punctuation">.</span>search<span class="token punctuation">(</span> r<span class="token string">'dogs'</span><span class="token punctuation">,</span> line<span class="token punctuation">,</span> re<span class="token punctuation">.</span>M<span class="token operator">|</span>re<span class="token punctuation">.</span>I<span class="token punctuation">)</span> <span class="token keyword">if</span> searchObj<span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"search --> searchObj.group() : "</span><span class="token punctuation">,</span> searchObj<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Nothing found!!"</span><span class="token punctuation">)</span> |
kết quả là:
1 2 3 | No match!! search --> matchObj.group() : dogs |
3. Search and Replace: tìm kiếm và thay thế
1 2 3 4 5 6 7 8 9 10 11 12 13 | <span class="token comment">#!/usr/bin/python3</span> <span class="token keyword">import</span> re phone <span class="token operator">=</span> <span class="token string">"2004-959-559 # This is Phone Number"</span> <span class="token comment"># Delete Python-style comments</span> num <span class="token operator">=</span> re<span class="token punctuation">.</span>sub<span class="token punctuation">(</span>r<span class="token string">'#.*$'</span><span class="token punctuation">,</span> <span class="token string">""</span><span class="token punctuation">,</span> phone<span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Phone Num : "</span><span class="token punctuation">,</span> num<span class="token punctuation">)</span> <span class="token comment"># Remove anything other than digits</span> num <span class="token operator">=</span> re<span class="token punctuation">.</span>sub<span class="token punctuation">(</span>r<span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">""</span><span class="token punctuation">,</span> phone<span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Phone Num : "</span><span class="token punctuation">,</span> num<span class="token punctuation">)</span> |
kết quả là:
1 2 3 | Phone Num : 2004-959-559 Phone Num : 2004959559 |
3. Split: Tách chuỗi
1 2 3 4 5 6 | txt <span class="token operator">=</span> <span class="token string">"welcome to the jungle"</span> x <span class="token operator">=</span> txt<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span> |
kết quả
1 2 | ['welcome', 'to', 'the', 'jungle'] |
5. Statements and Control Structures
- Condition – Decision Making
Cú pháp tổng quát
1 2 3 4 5 6 7 8 9 10 11 12 13 | <span class="token keyword">if</span> expression1<span class="token punctuation">:</span> statement<span class="token punctuation">(</span>s<span class="token punctuation">)</span> <span class="token keyword">if</span> expression2<span class="token punctuation">:</span> statement<span class="token punctuation">(</span>s<span class="token punctuation">)</span> <span class="token keyword">elif</span> expression3<span class="token punctuation">:</span> statement<span class="token punctuation">(</span>s<span class="token punctuation">)</span> <span class="token keyword">else</span> statement<span class="token punctuation">(</span>s<span class="token punctuation">)</span> <span class="token keyword">elif</span> expression4<span class="token punctuation">:</span> statement<span class="token punctuation">(</span>s<span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> statement<span class="token punctuation">(</span>s<span class="token punctuation">)</span> |
Ví dụ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <span class="token comment"># !/usr/bin/python3</span> num <span class="token operator">=</span> <span class="token builtin">int</span><span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"enter number"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">if</span> num<span class="token operator">%</span><span class="token number">2</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">:</span> <span class="token keyword">if</span> num<span class="token operator">%</span><span class="token number">3</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Divisible by 3 and 2"</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"divisible by 2 not divisible by 3"</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">if</span> num<span class="token operator">%</span><span class="token number">3</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"divisible by 3 not divisible by 2"</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"not Divisible by 2 not divisible by 3"</span><span class="token punctuation">)</span> |
kết quả:
1 2 3 4 5 6 7 8 9 10 11 12 | enter number8 divisible by <span class="token number">2</span> <span class="token operator">not</span> divisible by <span class="token number">3</span> enter number15 divisible by <span class="token number">3</span> <span class="token operator">not</span> divisible by <span class="token number">2</span> enter number12 Divisible by <span class="token number">3</span> <span class="token operator">and</span> <span class="token number">2</span> enter number5 <span class="token operator">not</span> Divisible by <span class="token number">2</span> <span class="token operator">not</span> divisible by <span class="token number">3</span> |
- Loop
Cú pháp
Với for
:
1 2 3 4 5 | <span class="token keyword">for</span> iterating_var <span class="token keyword">in</span> sequence<span class="token punctuation">:</span> <span class="token keyword">for</span> iterating_var <span class="token keyword">in</span> sequence<span class="token punctuation">:</span> statements<span class="token punctuation">(</span>s<span class="token punctuation">)</span> statements<span class="token punctuation">(</span>s<span class="token punctuation">)</span> |
Với while
:
1 2 3 4 5 | <span class="token keyword">while</span> expression<span class="token punctuation">:</span> <span class="token keyword">while</span> expression<span class="token punctuation">:</span> statement<span class="token punctuation">(</span>s<span class="token punctuation">)</span> statement<span class="token punctuation">(</span>s<span class="token punctuation">)</span> |
Ví dụ
1 2 3 4 5 6 7 8 9 | <span class="token comment">#!/usr/bin/python3</span> <span class="token keyword">import</span> sys <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">11</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">for</span> j <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">11</span><span class="token punctuation">)</span><span class="token punctuation">:</span> k <span class="token operator">=</span> i<span class="token operator">*</span>j <span class="token keyword">print</span> <span class="token punctuation">(</span>k<span class="token punctuation">,</span> end<span class="token operator">=</span><span class="token string">' '</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token punctuation">)</span> |
kết quả:
1 2 3 4 5 6 7 8 9 10 11 | <span class="token number">1</span> <span class="token number">2</span> <span class="token number">3</span> <span class="token number">4</span> <span class="token number">5</span> <span class="token number">6</span> <span class="token number">7</span> <span class="token number">8</span> <span class="token number">9</span> <span class="token number">10</span> <span class="token number">2</span> <span class="token number">4</span> <span class="token number">6</span> <span class="token number">8</span> <span class="token number">10</span> <span class="token number">12</span> <span class="token number">14</span> <span class="token number">16</span> <span class="token number">18</span> <span class="token number">20</span> <span class="token number">3</span> <span class="token number">6</span> <span class="token number">9</span> <span class="token number">12</span> <span class="token number">15</span> <span class="token number">18</span> <span class="token number">21</span> <span class="token number">24</span> <span class="token number">27</span> <span class="token number">30</span> <span class="token number">4</span> <span class="token number">8</span> <span class="token number">12</span> <span class="token number">16</span> <span class="token number">20</span> <span class="token number">24</span> <span class="token number">28</span> <span class="token number">32</span> <span class="token number">36</span> <span class="token number">40</span> <span class="token number">5</span> <span class="token number">10</span> <span class="token number">15</span> <span class="token number">20</span> <span class="token number">25</span> <span class="token number">30</span> <span class="token number">35</span> <span class="token number">40</span> <span class="token number">45</span> <span class="token number">50</span> <span class="token number">6</span> <span class="token number">12</span> <span class="token number">18</span> <span class="token number">24</span> <span class="token number">30</span> <span class="token number">36</span> <span class="token number">42</span> <span class="token number">48</span> <span class="token number">54</span> <span class="token number">60</span> <span class="token number">7</span> <span class="token number">14</span> <span class="token number">21</span> <span class="token number">28</span> <span class="token number">35</span> <span class="token number">42</span> <span class="token number">49</span> <span class="token number">56</span> <span class="token number">63</span> <span class="token number">70</span> <span class="token number">8</span> <span class="token number">16</span> <span class="token number">24</span> <span class="token number">32</span> <span class="token number">40</span> <span class="token number">48</span> <span class="token number">56</span> <span class="token number">64</span> <span class="token number">72</span> <span class="token number">80</span> <span class="token number">9</span> <span class="token number">18</span> <span class="token number">27</span> <span class="token number">36</span> <span class="token number">45</span> <span class="token number">54</span> <span class="token number">63</span> <span class="token number">72</span> <span class="token number">81</span> <span class="token number">90</span> <span class="token number">10</span> <span class="token number">20</span> <span class="token number">30</span> <span class="token number">40</span> <span class="token number">50</span> <span class="token number">60</span> <span class="token number">70</span> <span class="token number">80</span> <span class="token number">90</span> <span class="token number">100</span> |
Ví dụ 2: với range
1 2 3 4 5 6 7 8 9 10 | <span class="token operator">>></span><span class="token operator">></span> a <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'Mary'</span><span class="token punctuation">,</span> <span class="token string">'had'</span><span class="token punctuation">,</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token string">'little'</span><span class="token punctuation">,</span> <span class="token string">'lamb'</span><span class="token punctuation">]</span> <span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token builtin">len</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> a<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token number">0</span> Mary <span class="token number">1</span> had <span class="token number">2</span> a <span class="token number">3</span> little <span class="token number">4</span> lamb |
6. Functions
khai báo và sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <span class="token comment">#!/usr/bin/python3</span> <span class="token comment"># Function definition is here</span> <span class="token keyword">def</span> <span class="token function">changeme</span><span class="token punctuation">(</span> mylist <span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token string">"This changes a passed list into this function"</span> mylist <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">]</span> <span class="token comment"># This would assi new reference in mylist</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Values inside the function: "</span><span class="token punctuation">,</span> mylist<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token comment"># Now you can call changeme function</span> mylist <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span><span class="token number">20</span><span class="token punctuation">,</span><span class="token number">30</span><span class="token punctuation">]</span> changeme<span class="token punctuation">(</span> mylist <span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Values outside the function: "</span><span class="token punctuation">,</span> mylist<span class="token punctuation">)</span> |
kết quả:
1 2 3 | Values inside the function: [1, 2, 3, 4] Values outside the function: [10, 20, 30] |
Sử dụng tham số
VD 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <span class="token comment">#!/usr/bin/python3</span> <span class="token comment"># Function definition is here</span> <span class="token keyword">def</span> <span class="token function">printinfo</span><span class="token punctuation">(</span> name<span class="token punctuation">,</span> age <span class="token operator">=</span> <span class="token number">35</span> <span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token string">"This prints a passed info into this function"</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Name: "</span><span class="token punctuation">,</span> name<span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Age "</span><span class="token punctuation">,</span> age<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token comment"># Now you can call printinfo function</span> printinfo<span class="token punctuation">(</span> <span class="token string">"miki"</span> <span class="token punctuation">)</span> printinfo<span class="token punctuation">(</span> name <span class="token operator">=</span> <span class="token string">"miki"</span> <span class="token punctuation">)</span> printinfo<span class="token punctuation">(</span> age <span class="token operator">=</span> <span class="token number">50</span><span class="token punctuation">,</span> name <span class="token operator">=</span> <span class="token string">"miki"</span> <span class="token punctuation">)</span> |
kết quả:
1 2 3 4 5 6 7 | Name: miki Age 35 Name: miki Age 35 Name: miki Age 50 |
VD 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token comment">#!/usr/bin/python3</span> <span class="token comment"># Function definition is here</span> <span class="token keyword">def</span> <span class="token function">printinfo</span><span class="token punctuation">(</span> arg1<span class="token punctuation">,</span> <span class="token operator">*</span>vartuple <span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token string">"This prints a variable passed arguments"</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Output is: "</span><span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span>arg1<span class="token punctuation">)</span> <span class="token keyword">for</span> var <span class="token keyword">in</span> vartuple<span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span>var<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token comment"># Now you can call printinfo function</span> printinfo<span class="token punctuation">(</span> <span class="token number">10</span> <span class="token punctuation">)</span> printinfo<span class="token punctuation">(</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">60</span><span class="token punctuation">,</span> <span class="token number">50</span> <span class="token punctuation">)</span> |
kết qủa:
1 2 3 4 5 6 7 | Output is: 10 Output is: 70 60 50 |
Hàm nặc danh
* Hàm lamda không có tên, nó sẽ gọi đến thêm 1 hàm khác. Các biểu mẫu Lambda có thể nhận bất kỳ số lượng đối số nào nhưng chỉ trả về một giá trị dưới dạng biểu thức. Chúng không thể chứa các lệnh hoặc nhiều biểu thức.
* Một hàm ẩn danh không thể gọi trực tiếp print
vì lambda yêu cầu một biểu thức
.
- Cú phaps:
lambda [arg1 [,arg2,.....argn]]:expression
- Ví dụ:
1 2 3 4 5 6 7 8 9 | <span class="token comment">#!/usr/bin/python3</span> <span class="token comment"># Function definition is here</span> <span class="token builtin">sum</span> <span class="token operator">=</span> <span class="token keyword">lambda</span> arg1<span class="token punctuation">,</span> arg2<span class="token punctuation">:</span> arg1 <span class="token operator">+</span> arg2 <span class="token comment"># Now you can call sum as a function</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Value of total : "</span><span class="token punctuation">,</span> <span class="token builtin">sum</span><span class="token punctuation">(</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span> <span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Value of total : "</span><span class="token punctuation">,</span> <span class="token builtin">sum</span><span class="token punctuation">(</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">20</span> <span class="token punctuation">)</span><span class="token punctuation">)</span> |
kết qủa:
1 2 3 | Value of total : 30 Value of total : 40 |
Global vs. Local variables
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <span class="token comment">#!/usr/bin/python3</span> total <span class="token operator">=</span> <span class="token number">0</span> <span class="token comment"># This is global variable.</span> <span class="token comment"># Function definition is here</span> <span class="token keyword">def</span> <span class="token function">sum</span><span class="token punctuation">(</span> arg1<span class="token punctuation">,</span> arg2 <span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># Add both the parameters and return them."</span> total <span class="token operator">=</span> arg1 <span class="token operator">+</span> arg2<span class="token punctuation">;</span> <span class="token comment"># Here total is local variable.</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Inside the function local total : "</span><span class="token punctuation">,</span> total<span class="token punctuation">)</span> <span class="token keyword">return</span> total <span class="token comment"># Now you can call sum function</span> <span class="token builtin">sum</span><span class="token punctuation">(</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span> <span class="token punctuation">)</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Outside the function global total : "</span><span class="token punctuation">,</span> total <span class="token punctuation">)</span> |
kết quả:
1 2 3 | Inside the function local total : 30 Outside the function global total : 0 |
7. Modules
Đơn giản, một module là một file bao gồm code Python. Một module có thể định nghĩa các function, các clas và các variable (mọi thứ trong python đều là đối tượng). Một module cũng có thể chạy như một scripts;
VD, với file có tên fibo.py
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <span class="token comment"># Fibonacci numbers module</span> <span class="token keyword">def</span> <span class="token function">fib</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># write Fibonacci series up to n</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span> <span class="token keyword">while</span> a <span class="token operator"><</span> n<span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> end<span class="token operator">=</span><span class="token string">' '</span><span class="token punctuation">)</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> b<span class="token punctuation">,</span> a<span class="token operator">+</span>b <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">def</span> <span class="token function">fib2</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># return Fibonacci series up to n</span> result <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span> <span class="token keyword">while</span> a <span class="token operator"><</span> n<span class="token punctuation">:</span> result<span class="token punctuation">.</span>append<span class="token punctuation">(</span>a<span class="token punctuation">)</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> b<span class="token punctuation">,</span> a<span class="token operator">+</span>b <span class="token keyword">return</span> result <span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span> <span class="token keyword">import</span> sys fib<span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">(</span>sys<span class="token punctuation">.</span>argv<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"module ran as a script"</span><span class="token punctuation">)</span> |
thì cách sử dụng module như sau:
1 2 3 4 5 6 7 | >>> from fibo import fib, fib2 >>> fib(100) 0 1 1 2 3 5 8 13 21 34 55 89 >>> print( fib2(50) ) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] >>> |
Với việc kiểm tra biến global __name__
ở cuối module, có thể tương tác trực tiếp với file fibo.py
để thực thi shell scripts:
Ubuntu/environments$ python fibo.py 10
cho kết quả:
1 2 3 | 0 1 1 2 3 5 8 module ran as a script |
Có thể kiểm tra các function và biến toàn cụ hay cục bộ dir()
, global()
, local()
:
với module fibo.py
như sau:
1 2 3 4 5 6 7 8 9 10 | <span class="token keyword">def</span> <span class="token function">fib</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># write Fibonacci series up to n</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span> <span class="token keyword">while</span> a <span class="token operator"><</span> n<span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> end<span class="token operator">=</span><span class="token string">' '</span><span class="token punctuation">)</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> b<span class="token punctuation">,</span> a<span class="token operator">+</span>b <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"---"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token builtin">locals</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"---"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"n="</span><span class="token punctuation">,</span> n<span class="token punctuation">,</span> <span class="token string">"a="</span><span class="token punctuation">,</span> a<span class="token punctuation">,</span> <span class="token string">"b="</span><span class="token punctuation">,</span> b<span class="token punctuation">)</span> |
kết quả:
1 2 3 4 5 6 7 8 9 10 | >>> from fibo import fib >>> fib(100) 0 1 1 2 3 5 8 13 21 34 55 89 --- {'n': 100, 'a': 144, 'b': 233} --- n= 100 a= 144 b= 233 >>> dir(fib) ['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] >>> |
Gộp các submodule lại thành Packages:
Giẳ sử có thư mục Phone
với cấu trúc module như sau:
Phone/Pots.py
:
1 2 3 | <span class="token keyword">def</span> <span class="token function">Pots</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"I'm Pots Phone"</span><span class="token punctuation">)</span> |
Phone/Isdn.py
: tương tự PotsPhone/G3.py
: tương tự PotsPhone/__init__.py
:
1 2 3 4 | <span class="token keyword">from</span> <span class="token punctuation">.</span>Pots <span class="token keyword">import</span> Pots <span class="token keyword">from</span> <span class="token punctuation">.</span>Isdn <span class="token keyword">import</span> Isdn <span class="token keyword">from</span> <span class="token punctuation">.</span>G3 <span class="token keyword">import</span> G3 |
hello.py
:
1 2 3 4 5 6 | <span class="token keyword">import</span> Phone Phone<span class="token punctuation">.</span>Pots<span class="token punctuation">(</span><span class="token punctuation">)</span> Phone<span class="token punctuation">.</span>Isdn<span class="token punctuation">(</span><span class="token punctuation">)</span> Phone<span class="token punctuation">.</span>G3<span class="token punctuation">(</span><span class="token punctuation">)</span> |
hoặc
1 2 3 4 5 6 7 | <span class="token keyword">from</span> Phone <span class="token keyword">import</span> Pots<span class="token punctuation">,</span> Isdn<span class="token punctuation">,</span> G3 Pots<span class="token punctuation">(</span><span class="token punctuation">)</span> Isdn<span class="token punctuation">(</span><span class="token punctuation">)</span> G3<span class="token punctuation">(</span><span class="token punctuation">)</span> |
kết qủa: python hello.py
1 2 3 4 | I'm Pots Phone I'm Isdn Phone I'm G3 Phone |
8. Classes
- class
Khai báo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <span class="token keyword">class</span> <span class="token class-name">Employee</span><span class="token punctuation">:</span> <span class="token string">'Common base class for all employees'</span> empCount <span class="token operator">=</span> <span class="token number">0</span> <span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> name<span class="token punctuation">,</span> salary<span class="token punctuation">)</span><span class="token punctuation">:</span> self<span class="token punctuation">.</span>name <span class="token operator">=</span> name self<span class="token punctuation">.</span>salary <span class="token operator">=</span> salary Employee<span class="token punctuation">.</span>empCount <span class="token operator">+=</span> <span class="token number">1</span> <span class="token keyword">def</span> <span class="token function">displayCount</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Total Employee %d"</span> <span class="token operator">%</span> Employee<span class="token punctuation">.</span>empCount<span class="token punctuation">)</span> <span class="token keyword">def</span> <span class="token function">displayEmployee</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">print</span> <span class="token punctuation">(</span><span class="token string">"Name : "</span><span class="token punctuation">,</span> self<span class="token punctuation">.</span>name<span class="token punctuation">,</span> <span class="token string">", Salary: "</span><span class="token punctuation">,</span> self<span class="token punctuation">.</span>salary<span class="token punctuation">)</span> |
Tạo instance
1 2 | Instance Objects |
- Inheritance
9. File Handling
10. Exceptions Handling
11. Thematic
- OOP, Class and objects
- Lambda, map, filter, reduce
- List, Tuple, Dictionary
- Zip
- Set
- Files
- Date & Time