Python Syntax - ZaWiki

Werbung
2017/01/14 10:39
1/19
Python Syntax
Python Syntax
General
Command line Stuff
Execute of an python skript
start ⇒ programs ⇒ python25 ⇒ IDLE menü ⇒ open file
Start Python
run ⇒ python
Stop Python
+ Z,
Sourcefile
sourcefile.py
#!/usr/bin/python
# -*- coding: utf-8 -*# -*- coding: latin1 -*# -*- coding: iso-8859-1 -*# durch coding auch umlaut möglich
print 'Hello Wörld'
Help informations
help(command or object) q ⇒ Exit help
Import
There are two ways of import
ZaWiki - http://zawiki.praxis-arbor.ch/
+ F5 (run)
Last update: 2017/01/11 07:21
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
First way
You import the module. you have to call each time modulname.function to access each function
import <modulname>
<modulname>.<modulfunction>
Second way
Inthe second way you import one one or with * all functions of a module. But if you import the same
function of two different modules, or if you import * from two modules which has common function
names the interpreter won't know which one you are calling.
from <modulname> import <function>
<function>
Example
import.py
# First way
import math
math.sqrt(25)
# Second way
from math import sqrt
sqrt(25)
# Second way but import everything (need for math. anymore)
from math import *
sqrt(25)
log(10)
Conventions
; = zum Erzeugen von logischen Zeilen in einer physikalischen Zeile
Einrückungsebene beachten
Ein Tabulator pro Ebene verwenden
conventions.py
print i
== print i;
print \
== print i
http://zawiki.praxis-arbor.ch/
Printed on 2017/01/14 10:39
2017/01/14 10:39
3/19
i
print i
print z
== print i; print z
print i # Error kein Leerzeichen am anfang
Strings and Numbers
strings&numbers.py
'' => Spaces and symbols will be taken
"" => Same as Strings with ''
''' ''' or """ """
Multiline Strings, inside '' and "" can be used
'This is a String.' / "This too!"
''' This is a Multiline String. Frist Line
And this is the "Second Line"
'''
##Zahlentypen
int / long / float / complex
5 / 1.23 / 9.25e-3 /(5.3 + 3j)
Convert
conv.py
int()
float()
complex()
long()
unichr()
ord()
str()
#
#
#
#
#
#
#
to int
to float
to complex
to long
int to 1 char
1 element string to int
int to string
Maskierungscode, falls ' or “ or \ im Sting vorkommt muss man mit \ notieren
ASCII_char.py
\'
\"
\\
ZaWiki - http://zawiki.praxis-arbor.ch/
# = '
# = "
# = \
Python Syntax
Last update: 2017/01/11 07:21
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
\n
\t
\
# = New Line
# = Tabulator
# = Line feed
String Bin Hex convertions
hex2bin2string.py
hex_bin = binascii.unhexlify(hex_string)
hex_string = binascii.hexlify(hex_bin)
def hex2bin(self, str):
bin = ['0000','0001','0010','0011',
'0100','0101','0110','0111',
'1000','1001','1010','1011',
'1100','1101','1110','1111']
aa = ''
for i in range(len(str)):
aa += bin[int(str[i],base=16)]
return aa
# END hex2bin
bin_string = hex2bin(hex_string)
hex_string = hex(int_number)
int_number = int(hex_string,16)
# 2 digit hex string
hex_string = "0x%0.2X" % 255 # = 0xFF
hex_string = "%0.2X" % 255
# = FF
# Format strings the easy way
string = "{0} {1}".format(firstReplacer , secondReplacer))
print("{:03} {:3}".format(nbr1 , nbr2))
# {:03} = right aligned 3 numbers filled with 0 e.g. 005 or 015
# {:3} = right aligned 3 numbers
e.g.
5
15
# More examples
print("{0: >6,.4}".format(nbr0, nbr1)
# print nbr0, align right, fill with " ", 6 places width, 4 digits
precision
Format Mini Language
format_spec ::=
http://zawiki.praxis-arbor.ch/
[[fill]align][sign][#][0][width][,][.precision][type]
Printed on 2017/01/14 10:39
2017/01/14 10:39
fill
align
sign
width
precision
type
"o" | "s" |
5/19
Python Syntax
::= <any character>
::= "<" | ">" | "=" | "^"
::= "+" | "-" | " "
::= integer
::= integer
::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" |
"x" | "X" | "%"
"{" [field_name] ["!" conversion] [":" format_spec] "}"
/
"r"|"s"
\
/
(r)epr
(s)tr
\
arg_name
\
| ("." attribute_name | "[" element_index "]")*
\
|
|
|
\
|
identifier
integer | index_string
|
|
(quotes
|
[identifier
not required)
|
|integer]
|
|
_________________________________________________________/ \________
/
\
":"
[[fill]align][sign][#][0][width][,][.precision][type]
[default]--> < left
+
| | (int)
(int)
b base 2
[default --> > right [-] | |
c character
for
^ center " " | \
d base 10
numbers]
=
|
`zero padding
e exponent (e)
|
E exponent (E)
use 0b,0o,0x
f fixed point
for 2 8 16
F ^^(same)^^
b base 2
c character
[default]--> g general (???)
o base 8
s string
G general 2 (?)
d base 10
n number (general 3)
x base 16
o base 8
X base 16
s string
e, E
exponent
(lower case) x base 16
f, F, % fixed point
(upper case) X base 16
g, G, n (general numbers)
(x100, f) % percentage
Operator priority
op.py
+
*
**
/
//
ZaWiki - http://zawiki.praxis-arbor.ch/
#
#
#
#
#
#
Plus
3 + 5 = 8 'a' + 'b' = 'ab'
Minus
-5.2 order 5 - 2
Multiplcation 2 * 3 = 6
Power
3 ** 4 = 3 * 3 * 3 * 3 = 81
Division
4 / 3 = 1 oder 4.0/3 = 1.3333...
Integer Division 4 // 3.0 = 1.0
Last update: 2017/01/11 07:21
%
<<
>>
&
¦
^
~
<
>
<=
>=
==
!=
not
and
or
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
Modulo
8 % 3 = 2
Bitwise left 2 << 2 = 8
(in binary)
Bitwise right 11 >> 1 = 5 (in binary)
Bitwise AND 5 & 3 = 1
(in binary)
Bitwise OR
5 | 3 = 7
(in binary)
Bitwise XOR 5 ^ 3 = 6
(in binary)
Bitwise NOT ~5 = -6
Smaller as
Bigger as
Smaller Equal
Bigger Equal
Equal
Not Equal
log NOT
log AND
log OR
A Line will be evaluated from left to right
op_priority.py
## High priority
lambda
or
and
not x
in, not in
is, is not
<,<=,>,>=,!=,==
|
^
&
<<,>>
+,*,/,%
+x,-x
~x
**
x.attribut
x[index]
x[index:index]
f(param ...)
(ausdruck, ...)
[ausdruck, ...]
{key:value, ...}
'ausdruck, ...'
## Low priority
http://zawiki.praxis-arbor.ch/
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
lambda function
log OR
log AND
log NOT
Part of test (in Sequences)
Identity test
Comparison
Bitwise OR
Bitwise XOR
Bitwise AND
Bitwise Shift
Add, Sub
Mul, Div, Mod
pos-, neg-sign
Bitwise NOT
Pow
Attribut reference
Index
range of a sequence
function call
brackets
List
Dictionaries
Umwandlung in Stringdarstellung
Printed on 2017/01/14 10:39
2017/01/14 10:39
7/19
Syntax
if elif else
syntax_if.py
number = 23
guess = int(raw_input('Enter a number: '))
if guess == zahl:
print 'YES'
elif guess < number:
print 'Higher'
else:
print 'Lower'
while
syntax_while.py
number = 23
nostop = True
while nostop:
guess = int(raw_input('Enter a number: '))
if number == guess:
print 'Yes'
nostop = False # End of while
elif guess < number:
print 'Higher'
else:
print 'Lower'
else:
print 'End of while loop'
for
syntax_for.py
for i in range(1, 5):
print i
else:
print 'End of for loop'
ZaWiki - http://zawiki.praxis-arbor.ch/
Python Syntax
Last update: 2017/01/11 07:21
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
break
syntax_break.py
while True:
s = raw_input('Enter something: ')
if s == 'end':
break
print 'The length of the string is', len(s)
continue
continue use for “while” and “for”
syntax_continue.py
while True:
s = raw_input('Enter something: ')
if s == 'end':
break
if len(s) < 3:
continue
print 'Sufficient long'
# Treat input here
pass
syntax_pass.py
# pass is used to create an empty block
def function():
pass
doc strings
Widely used for document the code.
syntax_docsting.py
def printMax(x, y):
"""return the maximum of two numbers.
Both values need to be integer"""
http://zawiki.praxis-arbor.ch/
Printed on 2017/01/14 10:39
2017/01/14 10:39
9/19
x = int(x)
y = int(y)
if x > y:
print x, 'is bigger'
else:
print y, 'is bigger'
printMax(3, 5)
print printMax.__doc__ # displays a docstring
Functions
General
function_general.py
def hello_world():
print 'hello cruel world!'
# End of function
hello_world() # function call
def printMax(a, b):
if a > b:
print a, 'is max value'
else:
print b, 'is max value'
printMax(3, 4) # function call with number
x = 5
y = 7
printMax(x, y) # function call with arguments
Global variable
function_global.py
def func():
global x
print 'x ist', x
x = 2
print 'global x is now', x
x = 50
func()
print 'The value of x is', x # x = 2 because of global var
ZaWiki - http://zawiki.praxis-arbor.ch/
Python Syntax
Last update: 2017/01/11 07:21
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
Predefined Arguments
If a function parameter is not given, the default value will be used. All parameter with default values
need to be at the end of the parameter list.
function_argument.py
def sag(message, loops = 1):
print message * loops
sag('Hello')
sag('World', 5)
Keywords with param
function_keyparam.py
def func(a, b=5, c=10):
print 'a is', a, 'and b is', b, 'and c is', c
func(3, 7)
func(25, c=24)
func(c=50, a=100)
Return
.py
def maximum(x, y):
if x > y:
return x
else:
return y
print maximum(2, 3)
Modules
Definition of a Module
Everything in Python is a module (almost)
http://zawiki.praxis-arbor.ch/
Printed on 2017/01/14 10:39
2017/01/14 10:39
11/19
modules_def.py
def hello():
print 'Hello, this is a module'
version = '0.1'
Usage of a Module
The Module need to be in the same folder
modules_use.py
import myModule
myModule.hello()
print 'Version', mmyModule.version
from .. import
modules_fromimport.py
from myModule import hello, version
# OR:
from myModule import *
hello()
print 'Version', version
Data structures
List
lists.py
# This is a list
list = ['Book', 'Pencil', 'Apple', 'Glass']
print 'I have ', len(list), ' to buy.'
print 'These things are:', # Don't forget the comma at the end
for thing in list:
print thing,
print '\nI also have to buy Bananas'
ZaWiki - http://zawiki.praxis-arbor.ch/
Python Syntax
Last update: 2017/01/11 07:21
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
list.append('Banans')
print 'My list is now', list
print 'Sort My list'
list.sort()
print 'The sorted list is ', list
print 'First I'll buy', list[0]
oldthing =list[0]
del list[0]
print 'I did buy ', oldthing
print 'My list is now', list
Tuple
tuple.py
zoo = ('Wolf', 'Elefant', 'Pinguin')
print 'The number of animals in the Zoo is: ', len(zoo)
new_zoo = ('Ape', 'Delfin', zoo)
print 'The number of animals in the new Zoo is: ', len(new_zoo)
print 'All animals in the new Zoo are: ', new_zoo
print 'The animals from the old Zoo are', new_zoo[2]
print 'The last animal is a: ', new_zoo[2][2]
Dictionaries
dict.py
ab = { 'Swaroop'
: '[email protected]',
'Larry'
: '[email protected]',
'Matsumoto' : '[email protected]',
'Spammer'
: '[email protected]'
}
print "Swaroops Adresse ist %s" % ab['Swaroop']
# Ein Schluessel/Wert-Paar hinzufuegen
ab['Guido'] = '[email protected]'
# Ein Schluessel/Wert-Paar loeschen
del ab['Spammer']
print '\nEs gibt %d Kontakte im Adressbuch\n' % len(ab)
for name, adresse in ab.items():
print '%s hat die Adresse %s' % (name, adresse)
if 'Guido' in ab: # oder: ab.has_key('Guido')
print "\nGuidos Adresse ist %s" % ab['Guido']
http://zawiki.praxis-arbor.ch/
Printed on 2017/01/14 10:39
2017/01/14 10:39
13/19
Python Syntax
Sequence
sequence.py
list = ['Book', 'Pencil', 'Apple', 'Glass']
# Index
print 'Pos 0 is', list[0]
# Book
print 'Pos 1 is', list[1]
# Pencil
print 'Pos 2 is', list[2]
# Apple
print 'Pos 3 is', list[3]
# Glass
print 'Pos -1 is', list[-1]
# Glass
print 'Pos -2 is', list[-2]
# Apple
# List range
print 'Pos 1 to 3 is', list[1:3]
# ['Pencil', 'Apple']
print 'Pos 2 to End is', list[2:]
# ['Apple', 'Glass']
print 'Pos 1 to -1 is', list[1:-1] # ['Pencil', 'Apple']
print 'Pos begin to is', list[:]
# ['Book', 'Pencil', 'Apple',
'Glass']
# List range on a string
name = '1234567'
print 'Chars 1 bis 3 ist', name[1:3]
# 23
print 'Chars 2 bis Ende ist', name[2:] # 34567
print 'Chars 1 bis -1 ist', name[1:-1] # 3456
print 'Chars Begin to End', name[:]
# 1234567
References and Objects
list = ['Book', 'Pencil', 'Apple', 'Glass']
mylist = list
“mylist” is another name pointing to the same object. Delete one item
del list[0]
print 'list is', list
print 'mylist is', mylist
Both list return it's items without the deleted item “Book”. This shows that both point to the same
object
print 'Copy with range'
mylist = list[:] # this copies the whole list
del mylist[0]
print 'list is', list
print 'mylist is', mylist
Both lists are different now, will the copy created a new list.
ZaWiki - http://zawiki.praxis-arbor.ch/
Last update: 2017/01/11 07:21
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
Oriented Objects Programming
self == this == addr des Objektes
__init__-Method
__init__.py
class Person:
def __init__(self, name):
self.name = name
def sagHallo(self):
print 'Hallo, mein Name ist', self.name
p = Person('Swaroop')
p.sagHallo()
# Dieses kurze Beispiel kann auch als
# Person('Swaroop').sagHallo() geschrieben werden.
Klassen und Objekt variablen
class&obj.py
class Person:
'''Stellt eine Person dar.'''
bevoelkerung = 0
def __init__(self, name):
'''Initialisiert die Daten der Person.'''
self.name = name
print '(Initialisiere %s)' % self.name
# Wenn diese Person erzeugt wird,
Person.bevoelkerung += 1
def __del__(self):
'''Ich sterbe.'''
print '%s verabschiedet sich.' % self.name
Person.bevoelkerung -= 1
if Person.bevoelkerung == 0:
print 'Ich bin der letzte.'
else:
print 'Es gibt noch %d Leute.' % Person.bevoelkerung
def sagHallo(self):
'''Begruessung durch die Person.
Das ist wirklich alles, was hier geschieht.'''
print 'Hallo, mein Name ist %s.' % self.name
def wieViele(self):
http://zawiki.praxis-arbor.ch/
Printed on 2017/01/14 10:39
2017/01/14 10:39
15/19
Python Syntax
'''Gibt die aktuelle Bevoelkerungszahl aus.'''
if Person.bevoelkerung == 1:
print 'Ich bin ganz allein hier.'
else:
print 'Es gibt hier %d Leute.' % Person.bevoelkerung
* Alle Variablen sind normalerweise public
* Mit __privatvar wird es zu einer Privaten Variable
* Mit __doc__ kann auf die ''' Infos zugegriffen werden Person.__doc__ or
Person.sagHallo.__doc__
* __init__ wird immer bei der erzeugung eines Objektes ausgeführt
* __del__ wird automatisch aufgerufen falls das Objekt nicht mehr
gebraucht wird
Vererbung
vererbung.py
class SchulMitglied:
'''Repraesentiert ein beliebiges Mitglied der Hochschule.'''
def __init__(self, name, alter):
self.name = name
self.alter = alter
print '(SchulMitglied %s initialisiert)' % self.name
def auskunft(self):
'''Gib Auskunft ueber das Mitglied.'''
print 'Name: "%s" Alter: "%s"' % (self.name, self.alter),
class Dozent(SchulMitglied):
'''Repraesentiert einen Dozenten der Hochschule.'''
def __init__(self, name, alter, gehalt):
SchulMitglied.__init__(self, name, alter)
self.gehalt = gehalt
print '(Dozent %s initialisiert)' % self.name
def auskunft(self):
SchulMitglied.auskunft(self)
print 'Gehalt: "%d Euro"' % self.gehalt
class Student(SchulMitglied):
'''Repraesentiert einen Studenten der Hochschule.'''
def __init__(self, name, alter, note):
SchulMitglied.__init__(self, name, alter)
self.note = note
print '(Student %s initialisiert)' % self.name
def auskunft(self):
SchulMitglied.auskunft(self)
print 'Letzte Pruefungsnote: "%1.1f"' % self.note
d = Dozent('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 1.7)
mitglieder = [d, s]
ZaWiki - http://zawiki.praxis-arbor.ch/
Last update: 2017/01/11 07:21
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
for mitglied in mitglieder:
mitglied.auskunft() # geht bei Dozenten und Studenten
Input & Output
File
io.py
text = 'sein oder nicht sein'
# Write
f = file('gedicht.txt', 'w') # "w" = Schreiben
f.write(text)
# schreibe den Text in die Datei
f.close()
# schliesse die Datei
# Read
f = file('gedicht.txt')
while True:
line = f.readline()
if len(line) == 0:
break
print line,
f.close()
# kein Modus bedeutet "r" = Lesen
# eine leere Zeile = Dateiende (EOF)
# das , für Zeilenvorschub Unterdrückung
# schliesse die Datei
Freeze and Unfreeze
freeze.py
import cPickle as p
# Datei, in der das Objekt speichert wird
einkaufsdatei = 'einkaufsliste.data'
einkaufsliste = ['Aepfel', 'Mangos', 'Karotten']
# Schreibe in die Datei
f = file(einkaufsdatei, 'w')
#Einfrieren
p.dump(einkaufsliste, f) # speichere das Objekt in der Datei
f.close()
del einkaufsliste
# loesche die einkaufsliste
# Lies die Einkaufsliste aus der Datei wieder ein
f = file(einkaufsdatei)
http://zawiki.praxis-arbor.ch/
Printed on 2017/01/14 10:39
2017/01/14 10:39
17/19
Python Syntax
#Auftauen
gespeicherteliste = p.load(f)
print gespeicherteliste
Exceptions
try .. except
●
●
Ctrl + d or Ctrl + z - Aktiervierung von exceptions
Jede Try Kausel hat mind. eine except klausel
exeptions.py
try:
s = raw_input('Geben Sie etwas ein --> ')
except EOFError:
print '\nWarum haben Sie die Eingabe abgebrochen?'
sys.exit() # beendet das Programm
except:
print '\nIrgendein Fehler hat eine Ausnahme ausgeloest.'
print 'Fertig'
Exceptions auslösen
exe_exception.py
class KurzeEingabeAusnahme(Exception):
'''Eine benutzerdefinierte Ausnahmeklasse.'''
def __init__(self, laenge, mindestens):
Exception.__init__(self)
self.laenge = laenge
self.mindestens = mindestens
try:
s = raw_input('Geben Sie etwas ein --> ')
if len(s) < 3:
raise KurzeEingabeAusnahme(len(s), 3)
# Hier kann man ganz normal mit der Arbeit fortfahren
except EOFError:
print '\nWarum haben Sie die Eingabe abgebrochen?'
except KurzeEingabeAusnahme, x:
print 'KurzeEingabeAusnahme: Eingabe hatte die Laenge %d,' \
' gefordert war mindestens %d.' % (x.laenge, x.mindestens
ZaWiki - http://zawiki.praxis-arbor.ch/
Last update: 2017/01/11 07:21
tschinz:pysyntax http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
else:
print 'Es wurde keine Ausnahme ausgeloest.'
try .. finally
Falls im Programm eine Exception ausgelöst wird z.B. Ctrl + c Keyboard interrupt, wird bevor das
Programm geschlossen wird, noch die finally klausel ausgelöst
tryfinally.py
import time
try:
f = file('gedicht.txt')
while True: # unsere uebliche Weise, Dateien zu lesen
zeile = f.readline()
if len(zeile) == 0:
break
time.sleep(2)
print zeile,
finally:
f.close()
print 'Raeume auf... Datei geschlossen.'
Buildin Methods
__init__()
Wird aufgeführt bevor ein Objekt zurückgegeben wird
__init__(self, ...)
__del__()
Wird aufgerufen bevor ein Objekt zerstört wird
__del__(self)
__str__()
Wird aufgerufen falls print oder str() benutzt wird
http://zawiki.praxis-arbor.ch/
Printed on 2017/01/14 10:39
2017/01/14 10:39
19/19
__str__(self)
__it__()
Wird aufgerufen falls < benutzt wird lt == less than
Es gibt auch für andere Operatoren solche Methoden
__it__(self, other)
__getitem__()
Wird aufgerufen falls ein Idizierung operator benutzt wird x[key]
__getitem__(self, key)
__len__()
Wird aufgerufen falls die len() funktion benutzt wird
__len__(self)
tschinz, programming, lang, python, syntax
From:
http://zawiki.praxis-arbor.ch/ - ZaWiki
Permanent link:
http://zawiki.praxis-arbor.ch/doku.php/tschinz:pysyntax
Last update: 2017/01/11 07:21
ZaWiki - http://zawiki.praxis-arbor.ch/
Python Syntax
Herunterladen