Python#


(P2) indicates Python 2
(P3) indicates Python 3

Running#

Create a file named "file1.py"

python3  file1.py

Data Types - all are objects#

NoneType None (like null or nil)
bool False / True (also acts like 0 / 1)
int unlimited size (P3), 23 (0x22 hex, 0o34 octal, 0b010 binary)
long P2 only, 48L
float 3.141
str “string” or ‘string’ - immutable
characters are just strings of length 1
[a,b] list - mutable
(a,b) tuple - immutable

Data Conversion#

int(x) convert to int
long(x) P2 only
str(x) convert to str

Misc#

Comments start with #

All variables are object references (boxed)

Identifiers start with a letter or underscore - case sensitive

All variables are dynamically typed

type(x) returns the class of x

Zero based indexing using []. Also allows negative indexing from the back (-1 = last character)

Logical operations#

In conditionals, the following are all false:

False
None
0
“”
All else is true.

x is y do x and y refer to the same object
x is not y
== compares values, works on strings
1 < x > 10 range check
2 in [1, 2, 3, 4]
‘el’ in ‘hello there’

Logical operators (works like lisp!)

and
or
not

Function Definition#

def fun():
	line 1
	line 2

Can use return x (without return, returns None)

Function names that begin with underscore are private (by convention - not enforced)

Statement grouping is indicated by space characters at the beginning of each line rather than braces, begin / end statements, etc.

All variables are local unless declared with global

Statements#

if cond1:
	stmt 1
elif cond2:
	stmt 2
else:
	stmt 3

while cond:
	stmts

for var in lst:
	stmt using var
try:
	stmts
except type as var:
	stmts

Operators#

+= works on all data types
"""string""" to embed newlines in string
pass is statement that does nothing (used where statements are required)

Modules & Packages#

(Application) Module X = X.py file

Also system modules like: sys os etc.

import  file1             # imports file "file1.py"
import  file1, file2, file3
import  file1 as mymodule

or

from file1 import *        # imports into the current package

from file1 import (obj1, obj2, …)

Accessing objects imported via the lines starting with “import” is done:

file1.obj1
Accessing objects imported via the lines starting with “from” is done:
obj1

Python searches for modules as follows:

  1. same directory as file with the import statement
  2. PYTHONPAH environment variable
  3. sys.path

import only loads it the first time but will not re-load a changed file

Reloading a changed file can be done with reload(file1)

Input / Output#

print(x) prints x and newline (P3)
x = input(“prompt”) input string with prompt (P3)
x = raw_input(“prompt”) input string with prompt (P2)
x = input() input string without prompt (throws EOFError exception)

Dictionary#

dict = {}
dict[‘key’] = value
value = dict['key']
dict.clear()
len(dict)
dict.get(‘key’)
dict.has_key(‘key’)
dict.keys()
key in dict
del dict['key']

Classes#

Top of hierarchy is “object”

Supports multiple-inheritance & metaclasses

class MyClass:
	...
class MyClass (SuperClass1, SuperClass2, …):
         ...
class MyClass:
    cv1 = None
    def __init__(self):
        self.iv1 = None
        self.iv2 = None
    def getiv1(self):
        return self.iv1
    def setiv1(self, val):
    	self.iv1 = val
    @classmethod
    def getcv1(cls):
        return MyClass.cv1
    @classmethod
    def setcv1(cls, val):
        MyClass.cv1 = val
    def __repr__(self):   #  printed representation (also str() if no
        return "aabb"     #  __str__
    def __str__(self):   #  str() representation
        return "xxxxyyyy"   

x = MyClass()
MyClass.setcv1(55)
x.setiv1(33)

MyClass.cv1 = 77
x.iv1 = 32

class MyClass2(MyClass):
    def __init__(self):
        super().__init__()

Virtual environments#

mkdir myProject				create virtual environment
cd myProject
virtualenv venv

source venv/bin/activate		enter virtual environment

deactivate				exit virtual environment

ODBC#

import pyodbc

conn = pyodbc.connect('DSN=XXX;UID=YYY;PWD=ZZZ;DATABASE=MyDatabase')

cursor = conn.cursor()

cursor.execute("SELECT * from my_table")

while 1:
   row = cursor.fetchone()
   if not row:
       break
   print row.name

https://code.google.com/p/pyodbc/wiki/GettingStarted

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-8) was last changed on 14-Feb-2019 13:32 by Administrator