본문 바로가기
파이썬

왕초보를 위한 파이썬 연습하기 예제 공부하기_함수편(return, lambda, reduce, map, filter)

by 혜룐 2015. 11. 10.


https://wikidocs.net/64
지역변수, 전역변수
함수 안에서 전역변수 사용하기 : global glb
return 함수
True : False 
return 1+2 == 4
lambda 인자 : 표현식
print map(lambda x: x ** 2, range(5,9)) -->결과 [25, 36, 49, 64]
5,6,7,8 리스트에 각 제곱을 계산 후 , 그 결과를 새로운 리스트에 담는다.
map( 함수, 리스트)
리스트로부터 원소를 하나씩 꺼내, 함수를 적용한 후, 그 결과를 새로운 리스트에 담아준다는 의미
reduce( 함수, 순서형 자료 )
순서형 자료인, 리스트, 튜플의 원소를 함수에 적용
print 'x+y : ', reduce( lambda x,y: x+y, 'abcdefghi' ) -->결과 x+y : abcdefghi
print 'y+x : ', reduce( lambda x,y: y+x, 'abcdefghi' ) -->결과 y+x : ihgfedcba
filter( 함수, 리스트)
리스트에 들어잇는 원소들을 함수에 적용 시키고, 결과가 참인 값들로 새로운 리스트를 만든다.
function.py 스크립트 전문이다.
[lhr@tpl-master python]# cat function.py 
#!/usr/bin/python 
###### global, local
## 함수 안에서 global 변수를 사용할때 :
global glb
def globalFn():
global glb
glb = 9
print 'glb value is',glb,'. ^^' 
globalFn()
## 전역변수로 선언이 잘되었는지 확인
print 'one more~ glb value is',glb,'. ^^'
###### return fn
def returnfn(x):
a=9
b=16
y = a*x+b
return y
returnVal = returnfn(100)
print 'returnVal is ',returnVal
## return 이 아니라, print 를 하게 되면 어떻게 될까?
def printInsteadOfreturnfn(x):
a=9
b=16
y = a*x+b
print y
printVal = printInsteadOfreturnfn(100)
print 'printVal is ',printVal -->결과 printVal is None
###### test_1
def triangleArea(w,h):
area = (w*h)/2
return area
tArea = triangleArea(4,10)
print 'tArea is ', tArea
###### test_2
def number0(n):
return 0 == int(n)
n1 = number0(0)
n10 = number0(10)
print 'n1 is ', n1 ,', n2 is ', n10
## 2개의 인자를 받아서, 삼각형의 너비 구하기
def inputTriangleArea():
w = int( raw_input('width : ') )
result = number0(w)
h = int( raw_input('height : ') )
area = (w*h)/2
return area
trArea = inputTriangleArea()
print 'trArea is ', trArea
###### lamda param : expression
print 'lamabda sum is : ',(lambda x,y : x+y)(9,11)
###### map(function, list)
## x^2
print map(lambda x: x ** 2, range(5,9))
def jegop():
numArr = [];
for i in range(5,9):
numArr.append(i ** 2)
print 'numArr : ',numArr
jegop()
## x^3
print map(lambda x: x ** 3, range(5,9))
## x*2
print map(lambda x: x * 2, range(5,9))
print list( map(lambda x: x ** 2, range(5)) )
###### reduce( function, ordinal data)
print reduce( lambda x,y: x+y, range(10) )
print 'x+y : ', reduce( lambda x,y: x+y, 'abcdefghi' )
## reverse
print 'y+x : ', reduce( lambda x,y: y+x, 'abcdefghi' )
###### filter( function, list )
print filter( lambda x: x<= 5, range(6))
print filter( lambda x: x>5, range(6))
print filter( lambda x: x != 5, range(6))
print filter( lambda x: x%2 == 0, range(6))
print filter( lambda x: x%2 != 0, range(6))
스크립트 실행
[lhr@tpl-master python]# python function.py 
glb value is 9 . ^^
one more~ glb value is 9 . ^^
returnVal is 916
916
printVal is None
tArea is 20
n1 is True , n2 is False
width : 2
height : 2
trArea is 2
lamabda sum is : 20
[25, 36, 49, 64]
numArr : [25, 36, 49, 64]
[125, 216, 343, 512]
[10, 12, 14, 16]
[0, 1, 4, 9, 16]
45
x+y : abcdefghi
y+x : ihgfedcba
[0, 1, 2, 3, 4, 5]
[]
[0, 1, 2, 3, 4]
[0, 2, 4]
[1, 3, 5]