__author__ = 'mare'
def Times(a, b):
return a*b
print(Times)
#
print( Times(10, 10) )
#100
myTimes = Times;
r = myTimes(10, 10);
print( r )
#100
#return
def setValue(newValue):
x = newValue
retval = setValue(10)
print( retval )
#None
def swap(x, y):
return y, x
swap(1,2)
#(2,1)
a, b = swap(1,2)
#a = 2, b = 1
x = swap(1,2)
print( type(x) )
#
#more complex function
def intersect(prelist, postlist):
retlist = []
for x in prelist:
if x in postlist and x not in retlist:
retlist.append(x)
return retlist
list1 = "SPAM"
list2 = "AM"
list3 = intersect(list1, list2)
print(list3)
#['A', 'M']
#parameters
a=10
b=20
def sum1(x,y):
return x+y
print( sum1(a,b) )
#30
x = 10
def sum2(x,y):
x = 1
return x+y
print( sum2(x, b), x )
#21 10
def change(x):
x[0] = 'H'
wordlist = ['J', 'A', 'M' ]
change(wordlist)
print(wordlist)
#['H', 'A', 'M']
def change(x):
x = x[:]
x[0] = 'H'
return None
wordlist[0] = 'J'
change(wordlist)
print(wordlist)
#['J', 'A', 'M']
#scoping rule
x=1
def func2(a):
x=2
return a+x
print( func2(10) )
#12
def func3(a):
global x
x = 20
return x+a
print( func3(10 ), x)
#30 20
dir( __builtins__ )
#you can see inner function names
#arguments
def Times(a=10, b=20):
return a+b
print( Times() )
#30
print( Times(5) )
#25
#keyword arguments
def connectURI( server, port):
str = "http://" + server + ":" + port
return str
print( connectURI("test.com", "800" ))
print( connectURI(port="8080", server="test.com"))
#http://test.com:800
#http://test.com:8080
#variable argument
def test(*args):
print( type(args) )
test(1,2)
#
def union2(*ar):
res = []
for item in ar:
for x in item:
if not x in res:
res.append(x)
return res
print( union2( "HAM", "EGG", "SPAM" ) )
print( union2("GIR", "Generation", "gee") )
#['H', 'A', 'M', 'E', 'G', 'S', 'P']
#['G', 'I', 'R', 'e', 'n', 'r', 'a', 't', 'i', 'o', 'g']
def userURIBuilder(server, port, **user):
str = "Http://" + server + ":" + port + "/?"
for key in user.keys():
str += key + "=" + user[key] + "&"
return str
s = userURIBuilder("Test.com", "8080", id='userid', passwd='1234')
print(s)
#Http://Test.com:8080/?id=userid&passwd=1234&
#lambda function
g = lambda x, y : x*y
g(2,3)
#6
(lambda x: x*x)(3)
#9
#recursive function call
def factorial(x):
if x == 1:
return 1
return x*factorial(x-1)
factorial(10)
#3628800
#pass
#while True:
# pass #control + c if you stop
class temp:
pass
#help
def factorial(x):
"return factorial of n, ...."
if x == 1:
return 1
return x*factorial(x-1)
#help( factorial)
#return factorial of n, ....
#iterator
"""
for element in [1, 2, 3]:
for element in (1, 2, 3):
for key in {'one':1, 'two':2}:
for char in "123":
for line in open("myfile.txt") read line by line in the file
"""
#generator
def reverse(data):
for index in range(len(data) -1, -1, -1):
yield data[index]
for char in reverse('golf'):
print( char)
#f
#l
#o
#g
#enumerate
for i, season in enumerate(['spring', 'summer', 'fall', 'winter']):
print(i, season)
#0 spring
#1 summer
#2 fall
#3 winter
#iter
s='abc'
it = iter(s)
print(next(it))
#a
print(next(it))
#b
print(next(it))
#c
#print(next(it)) -> error