Python

Popularity of Python:

Python is general purpose programming language.
Python is adopted in scientific computing and machine learning areas.

The Zen of Python

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
 ~ Tim Peters

Python Standard Types

  • Numeric type: int - no decimal points; int_var = 5
  • Numeric type: float - real numbers with decimal points; flt_var = 7.4
  • String - sequence of characters; str_var = 'str'
  • List - mutable, stores multiple members; list_vaar = [1, 2.5, 'str']
  • Tuple - immutable, stores multiple members; tpl_var = (2, 4.7, 'abc')
  • Dictionary - key-value pairs; dict_var = {'planet': 'Mars', 'population': 0}
SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
	1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
	
def approximate_size(size, kilobyte_is_1024_bytes=True):
	'''Convert a file size to human-readable form.
	Keyword arguments:
	size -- file size in bytes
	kilobyte_is_1024_bytes -- if True (default), use multiples of 1024
	if False, use multiples of 1000
	Returns: string
	'''
	if size < 0:
		raise ValueError('number must be non-negative')
	multiple = 1024 if kilobyte_is_1024_bytes else 1000
	for suffix in SUFFIXES[multiple]:
		size /= multiple
		if size < multiple:
			return '{0:.1f} {1}'.format(size, suffix)
	raise ValueError('number too large')


approximate_size(1000000000000, False) # 1.0 TB
approximate_size(1000000000000) # 931.3 GiB
approximate_size(size=4000, kilobyte_is_1024_bytes=False) # 4.0 KB
approximate_size(kilobyte_is_1024_bytes=False, size=4000) # 4.0 KB

Working with string

Convert to string (Casting to string)

str(77)

Convert to integer

int('77')

Convert to float

float('7.7')

Check types

isinstance([], list) # True
isinstance({}, dict) # True
isinstance('', str) # True
type(requested_page)
type([]) is list # True
type({}) is dict # True
type('') is str # True
type(0) is int # True
type({}) # <type 'dict'>
type([]) # <type 'list'>

Logging

import logging
logging.warn('warning')

if-elif-else-endif in Jinja templates

{% if kenny.sick %}
    Kenny is sick.
{% elif kenny.dead %}
    You killed Kenny! You bastard!!!
{% else %}
    Kenny looks okay. So far.
{% endif %}

While:

while True:
    print('Username:')
    username = raw_input()
    if username != 'jack':
        continue
    print('Hello, Jack. What is the password?')
    password = raw_input()
    if password == 'aloha':
        break
print('Access granted.')

Clear session:

self.session.pop('session_data', None)

Safe conversion to int (safe int casting):

card_amount = self.request.POST.get('card_amount', 0)
try:
	card_amount = int(card_amount)
except(ValueError, TypeError):
	card_amount = 0

Delete all text files

import os
for filename in os.listdir():
    if filename.endswith('.txt'):
        os.unlink(filename)

Pythonic way

# Looping over a range of numbers

for i in [0, 1, 2, 3, 4, 5]:
    print i**2

# Looping over a range of numbers in a pythonic way
	
for i in range(6):
    print i**2
	
	
# Looping over a collection

colors = ['red', 'green', 'blue']
for i in range(len(colors)):
    print colors[i]
	
# Looping over a collection in a pythonic way
	
colors = ['red', 'green', 'blue']
for color in colors:
    print color

	
# Looping backwards

colors = ['red', 'green', 'blue']
for i in range(len(colors)-1, -1, -1):
    print colors[i]
	
# Looping backwards in a pythonic way

colors = ['red', 'green', 'blue']
for color in reversed(colors):
    print color

	
# Looping over a collection and indicies

colors = ['red', 'green', 'blue']
for i in range(len(colors)):
    print i, '-->', colors[i]
	
# Looping over a collection and indicies in a pythonic way
	
colors = ['red', 'green', 'blue']
for i, color in enumerate(colors):
    print i, '-->', color
	
	
# Looping in sorted order in a pythonic way

colors = ['red', 'green', 'blue']
for color in sorted(colors):
    print color
	
# Looping in sorted reversed order in a pythonic way

colors = ['red', 'green', 'blue']
for color in sorted(colors, reverse=True):
    print color


# Function calls with keyword arguments

twitter_search('@tesla', False, 20, True)

# Function calls with keyword arguments in a pythonic way

twitter_search('@tesla', retweets=False, numtweets=20, popular=True)


# Concatenating strings

colors = ['red', 'green', 'blue']
s = colors[0]
for color in colors[1:]:
    s += ', ' + color
print s

# Concatenating strings in a pythonic way

colors = ['red', 'green', 'blue']
print ', '.join(colors)
import antigravity
# opens browser with custom URL

================

pip install virtualenvwrapper-win
mkvirtualenv myproject
workon myproject
cd /_django-dev/
django-admin startproject devsite
cd devsite
python manage.py runserver
python manage.py migrate

Leave a Comment