- 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 is processed by the interpreter at run time.
- Interactive : Can interact directly with the interpreter through the command line shell
- Object-Oriented : Support object-oriented programming
- Beginner’s Language : easy to learn even for beginners
- Environment setup (Ubuntu)
- Should install python version> 3.5 (to learn the Django 3.0 framework later)
- On Ubuntu Linux, python3 is installed with just one command line:
sudo apt-get install python3.7
(python 3.6 is available on ubuntu 18.04). - Note when installing python3.7 on ubuntu there will be many versions of python2, python3.6, by default to use version 3.7, you need to find out
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
, by default will automatically choose 3.7 when using thepython3
command. Similarly if you want the defaultpython
command to be 3.7, you needsudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
- To be able to install more libraries for python3, need to install package manager pip3:
sudo apt install -y python3-pip
- So you can program python3, want to use any package, just install and complete the format:
pip3 install package_name
- “Hello, World” Program
sudo pip3.7 install virtualenv
: Install this package to help create a virtual environment. From here, all newly installed packages will be placed in the new directory instead of/usr/lib/python3/package_name
.- after creating the directory you want (the directory to code python),
virtualenv -p python3.7 venv
will create thevenv
environment directory, will not have to worry about the environment problem and just focus on the python language. - activate environment:
source venv/bin/activate
.
2. Basic Syntax
- Easy to read syntax:
print ("Hello, Python!")
- Can interact directly with the command line or run the execute file with * .py extension, eg:
python test.py
- Python uses Indentation to define block of code, all statements in the same block must be indented by the same amount.
- The subject line for compound statements, such as if, while, def, and class should be terminated with a colon
- Semicolon
;
is optional at the end of the statement.import sys; x = 'foo'; sys.stdout.write(x + 'n')
- Comment with
#
sign or pair'''
'''
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 consists of integers, real numbers and complex numbers:
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:
Access
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> |
Update: the string is immutable, so it cannot be changed, surrounded by single quotes '
, double quotes "
or quotes 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 keyword">not</span> support item assignment |
- List: Similar to array data types in other languages
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: Similar to the structure of the list, just different declared in
()
and immutable (like string). (quite similar to.freeze
in 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: Similar to associative arrays in php, java, or hash in 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 and output with 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> <span class="token string-interpolation"><span class="token string">f"welcome to python3, </span><span class="token interpolation"><span class="token punctuation">{</span> <span class="token builtin">input</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">}</span></span> <span class="token string">"</span></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 The types of operators in python3:
- Arithmetic operators
+
,-
,*
,/
,%
divide into remainder,**
exponentiate,//
divide round - Comparison operator (relation):
==
!=
,<
,>
,<=
,>=
- Assignment operator:
+=
,-=
,*=
,/=
,%=
,**=
,//=
- Logical operators
and
,or
,not
- The bit operator.
- Member Operator:
print(1 in [1,2,3,4]) # True
- Statement operator (pointer):
is
,is not
- Arithmetic operators
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
- The syntax of using regular expressions in python has the form:
re.match(pattern, string, flags = 0)
, string is the string to be processed, pattern is the regular expression used to match. - Basic methods:
match
,search
,sub
andsplit
- The syntax of using regular expressions in python has the form:
1. Macth: match
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> <span class="token string">r'(.*) 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> |
the result is:
1 2 3 4 | matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter |
2. match vs search: match and search
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> <span class="token string">r'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> <span class="token string">r'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> |
the result is:
1 2 3 | No match!! search --> matchObj.group() : dogs |
3. Search and Replace: search and replace
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> <span class="token string">r'#.*$'</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> <span class="token string">r'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> |
the result is:
1 2 3 | Phone Num : 2004-959-559 Phone Num : 2004959559 |
3. Split: Split the string
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> |
result
1 2 | ['welcome', 'to', 'the', 'jungle'] |
5. Statements and Control Structures
- Condition – Decision Making
General syntax
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> |
For example
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> |
result:
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 keyword">not</span> divisible by <span class="token number">3</span> enter number15 divisible by <span class="token number">3</span> <span class="token keyword">not</span> divisible by <span class="token number">2</span> enter number12 Divisible by <span class="token number">3</span> <span class="token keyword">and</span> <span class="token number">2</span> enter number5 <span class="token keyword">not</span> Divisible by <span class="token number">2</span> <span class="token keyword">not</span> divisible by <span class="token number">3</span> |
- Loop
Syntax With 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> |
With 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> |
For example
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> |
result:
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> |
Example 2 : with 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
declare and use
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> |
result:
1 2 3 | Values inside the function: [1, 2, 3, 4] Values outside the function: [10, 20, 30] |
Use parameters
Example 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> |
result:
1 2 3 4 5 6 7 | Name: miki Age 35 Name: miki Age 35 Name: miki Age 50 |
Example 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> |
the results:
1 2 3 4 5 6 7 | Output is: 10 Output is: 70 60 50 |
Anonymous function * The lamda function has no name, it will call another function. Lambda forms can take any number of arguments, but return only one value as an expression. They cannot contain commands or multiple expressions. * An anonymous function cannot call print
directly because lambda requires một biểu thức
.
- Phaps:
lambda [arg1 [,arg2,.....argn]]:expression
- For example:
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> |
the results:
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> |
result:
1 2 3 | Inside the function local total : 30 Outside the function global total : 0 |
7. Modules
Simply put, a module is a file that includes Python code. A module can define functions, clas, and variables (everything in python is an object). A module can also run as a script; For example, with a file named 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> |
The module usage is as follows:
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] >>> |
By checking the global __name__
variable at the end of the module, you can interact directly with the file fibo.py
to execute shell scripts:
Ubuntu/environments$ python fibo.py 10
produces:
1 2 3 | 0 1 1 2 3 5 8 module ran as a script |
You can check the functions and variables globally or locally dir()
, global()
, local()
: with module fibo.py
as follows:
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> |
result:
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__'] >>> |
Combine submodules into Packages : Suppose there is a Phone
folder with the module structure as follows:
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
: Similar to PotsPhone/G3.py
: Same 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> |
or
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> |
result: python hello.py
1 2 3 4 | I'm Pots Phone I'm Isdn Phone I'm G3 Phone |
continue P2:
- Classes
- File Handling
- Exceptions Handling
- Thematic