21. # Python interactive shell
$ python
# Python interactive shell
# (on steroid!)
$ pip install ipython
$ ipython
# QUIZ: What version of python
# are you currently using?
ENV* - EASIEST WAY TO PYTHON
24. # MORE TYPES - '' and ""
>>> b = 'a'
>>> c = 'abc'
>>> d = "abc"
# QUIZ: WHAT DATA TYPES ARE b, c and d?
>>> type(b)
>>> type(c)
>>> type(d)
101* - DATA TYPES
25. # MORE TYPES
# bool, NoneType, float, long
>>> e = True
>>> f = False
>>> g = None
>>> h = 1.0
>>> i = 1L
# QUIZ: WHAT IS None?
101* - DATA TYPES
27. # COLLECTION 1: LIST
>>> a = [1, 2, 3]
>>> b = list()
>>> b.append(1)
>>> b.append(2)
>>> b.append(3)
# QUIZ: How do we retrieve the value?
# QUIZ: Is a and b same?
101* - DATA TYPES
28. # SAME - EQUALITY or IDENTITY?
>>> a == b
True
>>> a is b
False
# QUIZ: WHAT IS THE DIFF
# BETWEEN == AND is
101* - DATA TYPES
29. # COLLECTION 2 - TUPLE
>>> c = (1, 2, 3)
>>> d = 1, 2, 3
# QUIZ: SO AGAIN, IS c SAME with d?
101* - DATA TYPES
30. # COLLECTION 3: dict
>>> e = {1: 11, 2: 22}
>>> e[1]
>>> e[2]
# QUIZ: IS THIS AN array?
# QUIZ: MUST THE key BE int?
101* - DATA TYPES
31. # COLLECTION 4: set
>>> f = set()
>>> f.add(1)
>>> f.add(2)
>>> f.add(3)
# QUIZ: WHAT IS THE DIFF
# BETWEEN list AND set?
101* - DATA TYPES
33. 101* - DATA TYPES
# if, else, elif
>>> a = 2
>>> if a == 1:
... print "hello"
... elif a == 2:
... print "world"
>>>
34. 101* - DATA TYPES
# if, else, elif CONTINUES
>>> a = 1
>>> if a == 1:
... print "hello"
... else:
... print "world"
>>>
35. 101* - DATA TYPES
# for LOOP
>>> for i in [1, 2, 3]:
... print i
>>> for j in range(1,3):
... print j
# QUIZ: WHAT DO YOU SEE WHEN print j
36. 101* - DATA TYPES
# for LOOP
>>> for i in (1, 2, 3):
... print i
>>> for k,v in {1: 11, 2: 22}.iteritems():
... print k, v
# QUIZ: WHAT DO YOU SEE WHEN print k, v
37. 101* - DATA TYPES
# list comprehension
>>> a = [1,2,3,4,5]
>>> b = [i+1 for i in a]
# QUIZ: WHAT IS THE VALUE OF b?
38. 101* - DATA TYPES
# list comprehension
>>> a = [1,2,3,4,5]
>>> b = [i for i in a if i % 2 == 0]
# QUIZ: WHAT IS THE VALUE OF b?
40. pip
∗ Package management system used to install and manage
software packages written in Python
∗ Why?
Easy package installations, updating, configuring and
removals with a single command
∗ Over 86,000 Python packages can be accessed through
PyPI
∗ Sample commands:
$ pip install flask
$ pip uninstall flask
41. python packages
∗ Mathematical Analytics: Numpy
∗ DB Connectors: MySQL, MongoDB,
PostgreSQL, etc.
∗ Web Frameworks: Pyramid, Django
∗ Twitter API client
∗ Many more…
“It’s like Swiss-army toolchain”
42. virtualenv
∗ Is an isolated working copy of Python which allows you to
work on a specific project without worry of affecting other
projects
∗ Why?
We might wants to maintain the package version
(prefer not upgrading it to newer version)
“Do not fix things that aren’t broken”
45. virtualenv
# ACTIVATE A VENV ON LINUX
workon Project1
# ON WINDOWS
$ /path/to/folder/Scripts/activate.bat
# LIST INSTALLED PACKAGES
(test)$ pip freeze
47. flask
∗ Flask is a micro web framework written in Python
∗ Micro framework means it does not require particular
tools or libraries and it just works
∗ Suitable for minimal website or a full featured website
∗ Many extensions freely available:
User authentications
Flask-Security
File Uploads
Database
49. PROG* - HELLO WORLD!
# INSTALL FLASK MODULE
$ pip install flask
# QUIZ: WHAT DO YOU SEE IN RESULT
# OF THE ABOVE COMMAND
50. PROG* - HELLO WORLD!
# EDIT A NEW FILE USING YOUR FAVOURITE
# TEXT EDITOR
$ vim hello.py
51. PROG* - HELLO WORLD!
# KEY IN THE FOLLOWING INTO THE FILE
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
52. NOOO WAY… R U KIDDING ME?
CONGRATULATIONS!
U HV COMPLETED
A WORKING PROGRAM WEB SERVICE
53. # LET’S START THE WEB SERVICE
$ export FLASK_APP=hello.py
$ flask run
# IF WINDOWS
$ set FLASK_APP=hello.py
$ flask run
# QUIZ: WHAT’S NEXT?
PROG* - HELLO WORLD!
59. PROG* - MOOOOOOORE~
# KEY IN THE FOLLOWING INTO THE FILE
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Not Hello World!"
@app.route("/hello")
def hello():
return "Hello World!"
# QUIZ: MUST THE ROUTE NAME SAME WITH
# THE METHOD NAME?
60. PROG* - MOOOOOOOORE~
# QUIZ: CAN I DON’T RESTART FLASK
# EVERY TIME I MODIFY MY FILE?
$ export FLASK_DEBUG=1
$ flask run
# QUIZ: WHAT IS THE COMMAND IF YOU USE
# WINDOWS?
61. PROG* - MOOOOOOORE~
# KEY IN THE FOLLOWING INTO THE FILE
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Index!"
@app.route("/user/<username>")
def user(username):
return "Hello %s!" % username
# QUIZ: WHAT HAPPEN WHEN YOU VISIT
# http://localhost:5000/user
Python isnt made for web. It’s a general purpose scripting language. Can do many things with it. Compared to PHP, it’s made for web dev. That’s why flask come in, to be able to write web using Python.
Micro means so simple and doesnt include any extra things. But you can add them as you want.