findall() | returning list with all matches |
search() | returns matching object, if existing |
split() | returns list of fragments |
replace() | replacing one or many matches |
[] | set of characters |
\ | special sequence (escape character) |
. | as single character (except newline) |
^ | starts with |
$ | ends with |
* | zero or more occurrences |
+ | one or more occurrences |
? | zero or one occurrences |
{} | exactly the specified number of occurrences |
| | either or |
() | capture and grouping |
#!/usr/bin/env python3 import re # regular expressions txt = "The rain in Spain falls mostly in ..." xFind = re.findall("in", txt) print("xFind : ", xFind) xSplit = re.split(" ", txt) print("xSplit : ", xSplit) # splitting at first position \s == space xSplit_1 = re.split("\s", txt, 1) print("xSplit_1: ", xSplit_1) # replace 3 times xSub = re.sub("\s", "_", txt, 3) print("xSub : ", xSub) # search for an upper case "S" character in the beginning of a word # and print its position: # span() returns tuple with starting/ending index xSpan = re.search(r"\bS\w+", txt) print("xSpan : ", xSpan.span())
lambda
expressions are inline functions()
at the end for immediate call
\
x%2 and 'odd' or 'even'
'odd' if x%2 else 'even'
#!/usr/bin/env python3 print("*************************") print("simple lambda expressions") print("*************************") x = lambda a : a + 10 print("lambda a : a + 10 :",x(5)) y = lambda a, b : a * b print("lambda a, b : a * b :",y(5, 6)) # line continuation # no empty space after '\' z = lambda x: \ 'odd' if x%2 else 'even' # inline 'if then else" # x % 2 and 'odd' or 'even' # identical print("\'odd\' if x%2 else \'even\' :",z(5)) print() print("**************************************") print("function returning a lambda expression") print("**************************************") def myfunc(n): return lambda a : a * n mytripler = myfunc(3) # equivalent to # mytripler = lambda a : a*3 print("return lambda a : a * n :",mytripler(11)) print() print("**************") print("direct calling") print("**************") print("(lambda x: x + 1)(2) :",(lambda x: x + 1)(2))
var.__add__(5)
var+5
dir(int)
: directory listing of
magic methods (for int class) #!/usr/bin/env python3 # as simple function def myFunction(a): return a**2 # intVar+5 is just a short for # intVar.__add__(5) intVar = 10 print("using __add__() : ", intVar+5, intVar.__add__(5)) print() print("*******************") print("content of dir(int)") print("*******************") print() for mF in dir(int): # dir: directory of magic methods print(mF) print() print("**************************") print("content of dir(myFunction)") print("**************************") print() for mF in dir(myFunction): print(mF)
threading.Thread()
threading.Timer()
if (__name__ == "__main__"):
#!/usr/bin/env python3 import threading # omen est nomen import time class DeltaT: myTime = time.perf_counter() def diff(): newTime = time.perf_counter() deltaTime = newTime - DeltaT.myTime DeltaT.myTime = newTime return deltaTime def taskFunction(name): print(f'Thread {name:2d}: starting') time.sleep(3) print(f'Thread {name:2d}: finishing') # blocks out-of-us access if __name__ == "__main__": print(DeltaT.diff()) print(f'Main {DeltaT.diff():4.2f} : before creating thread') x = threading.Thread(target=taskFunction, args=(1,)) print(f'Main {DeltaT.diff():4.2f} : before running the thread') time.sleep(2) x.start() # can be started anywhere print(f'Main {DeltaT.diff():4.2f} : waiting for the thread to finish') x.join() # stop until thread is done print(f'Main {DeltaT.diff():4.2f} : all done')
time.sleep()
interrupt current thread (in seconds)
threading.Timer()
timer object#!/usr/bin/env python3 import time # time manipulation, sleeping import threading as thr # threading # a random target task function def taskFuntion(message): # time.sleep(3.0) # test it print(message) # # thread timer object invokes a task function with arguments # timer = thr.Timer(3, taskFuntion, args=('timer function executed',)) timer.start() # counting while waiting for the timer to finish counting = 0 while (timer.is_alive()): # try with 'not' time.sleep(0.3) # sleeping in seconds counting += 1 print("counting while waiting ", counting) # cancel the thread if (timer.is_alive()): print('canceling the timer') timer.cancel()
time.time()
elapsed timetime.perf_counter()
used time
#!/usr/bin/env python3 import math import time # times in seconds since last call class DeltaT: myTime = time.perf_counter() def diff(): newTime = time.perf_counter() deltaTime = newTime - DeltaT.myTime DeltaT.myTime = newTime return deltaTime print(time.perf_counter()) print() print(DeltaT.diff()) for i in range(int(1e7)): pow(math.log(i+1.0,10),math.log(i+1.0,10)) print(DeltaT.diff(), " time used (in secconds)")