본문 바로가기
Programming/Python

[python] 보안프로그래밍3 기말고사 정리(3)

by graygreat 2017. 6. 14.
728x90
반응형


함수 인수값 전달방법

 

def f4(b):
    b[1] = 10

a = [4,5,6]
f4(a)
print a

// 결과값

[4, 10, 6]


def f5(b): b['a'] = 10 a = {'a':1, 'b':2} f5(a) print a


// 결과값

{'a' : 10, 'b' : 2}



함수 인수 처리

 

● 기본 인수 값 : 함수를 호출할 때 인수를 넘겨주지 않아도 인수가 기본적으로 가지는 값


def incr(a, step = 1):
    return a + step

b = 1
b = incr(b)
print b

b = incr(b, 10)
print b

// 결과값

2

12


--> 에러가 발생하는 이유 : 기본인자가 없으면 error가 발생한다. 왜냐하면 정의한 함수의 인자가 2개이기 때문이다.


※ 문제


이 코드에서 에러가 발생하는 이유를 적어라.


def incr(step = 1, a):
    return a + step

b = 1
b = incr(b)
print b

b = incr(b, 10)
print b


함수를 정의할 때 기본 값을 지닌 인수 뒤에 일반적인 인수가 올 수 없다. 하지만 위 코드를 보게되면 incr(step = 1, a)라고 적혀있다. 그러므로 이 코드는 잘못된 코드이고 실행하게 되면 에러가 난다.



람다 함수

 

incr = lambda x, inc = 1:x + inc
print incr(10)
print incr(10, 5)

// 결과값

11

15


def g(func):
    return [func(x) for x in range(-10, 10)]

print g(lambda x: x * x + 3 * x - 10)
print g(lambda x: x*x*x)

// 결과값

[60, 44, 30, 18, 8, 0, -6, -10, -12, -12, -10, -6, 0, 8, 18, 30, 44, 60, 78, 98] [-1000, -729, -512, -343, -216, -125, -64, -27, -8, -1, 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]


func = [lambda x, y: x + y, lambda x, y: x - y, lambda x, y: x * y, lambda x, y : x/y]

def menu():
    print "0. add"
    print "1. sub"
    print "2. mul"
    print "3. div"
    print "4. quit"
    return input("Select menu : ")

while 1:
    sel = menu()
    if sel < 0 or sel > len(func):
        continue
    if sel == len(func):
        break
    x = input("First operand : ")
    y = input("Second operand : ")
    print "Result = ", func[sel](x, y)



Filter 내장 함수


filter(function, seq)


- seq 시퀀스 자료형이 지닌 각 원소값들에 대해 function에 적용한 결과가 참인 원소값들만을 동일 시퀀스 

  자료형으로 반환한다.


print filter(lambda x: x > 2, [1, 2, 3, 4])

// 결과값

[3, 4]



● 주어진 시퀀스 내에 있는 정수 중 홀수만 필터링


print filter(lambda x : x % 2, [1,2,3,4,5,6]) 

// 결과값

[1, 3, 5]


● 주어진 시퀀스 내에 있는 정수 중 만 필터링

print filter(lambda x : x % 2 - 1, [1,2,3,4,5,6])

// 결과값

[2, 4, 6]


- 1 % 2 = 나머지가 1 --> true


- 2 % 2 = 나머지가 0 --> false


reduce 내장 함수


reduce(function, seq[, initial])


- seq 시퀀스 자료형이 지닌 원소값들에 대해 function 함수를 적용하면서 하나의 값으로 매핑한다.


- 첫 번째 인자인 function 함수는 반드시 두 개의 인자 (예를 들어, x, y)를 받아야 한다.


- 추가적으로 제공가능한 세번째 인자인 initial은 첫번째 단계에 x에 할당할 초기값으로 사용된다.


print reduce(lambda x, y : x + y, [1,2,3,4,5]) 

// 결과값

15


- 세번째 인자 있는 경우

print reduce(lambda x, y : x + y, [1,2,3,4,5], 100)

// 결과값

115


print reduce(lambda x, y : x + y, range(1, 11), 0)

// 결과값

55


print reduce(lambda x, y : y + x, 'abcde')


// 결과값

edcba


반응형

댓글