함수(Function)
def hello(): print("Hello Python") # hello() #Hello Python
def hello(string): print("Hello", string) # hello("Python") #Hello Python
def hello(): return "Hello Python" # hello() #Hello Python
def square(num): return num * num # square(5) #25
def add(n1, n2): return n1 + n2 # print(add(5,8)) print(add(n2 =5, n1=8)) #13 #13
def add(n1, n2): return n1 + n2 # print(add(n2=5, n1=8)) #13
def sum(*args): result = 0 for i in args: result = result + i return result # print(sum(1,2,3)) print(sum(1,2,3,4,5)) #6 #15
'**'
을 표시def print_kwargs(**kwargs): print(kwargs) print(type(kwargs)) # print_kwargs(n1=5, n2=8) print_kwargs(id = "mminjuns", pw="48109") #{'n1': 5, 'n2': 8} #<class 'dict'> #{'id': 'mminjuns', 'pw': '48109'} #<class 'dict'>
def power(b=2, n=2): return pow(b,n) # print(power()) print(power(3)) print(power(5,2)) print(power(n=3)) #4 #9 #25 #8
def plus_and_minus(n1, n2): return n1+n2, n1-n2 # result = plus_and_minus(8,5) print(result) # result1, result2 = plus_and_minus(8,5) print(result1, result2)
def calc(op, n1, n2): result = 0 if op == '+': result = n1 + n2 elif op == '-': result = n1 - n2 elif op == '*': result = n1 * n2 elif op == '/': result = n1/n2 # return result print(calc('+', 8, 5)) print(calc('*', 8, 5)) #13 #40
def avg(*args): sum = 0 for i in args: sum += i return (sum/len(args)) # print(avg(1,2,3,4,5))
def var_scope(a): a = a+1 # a = 10 var_scope(a) print(a) #10
a = 10 def func1(): a = 20 print(a) # def func2(): print(a) # func1() func2() #20 #10
함수 내부에서 전역 변수를 사용하기 위한 global 키워드
a = 10 def func1(): global a a = 20 print(a) # def func2(): print(a) # func1() func2() #20 #20
def func1(n1, n2): def func2(num1, num2): return num1 + num2 return func2(n1,n2) # print(func1(5,8)) #13
count() 함수
내부에서 count() 함수
를 호출def count(n): if n >= 1: print(n, end=' ') count(n-1) else: return # count(10) #10 9 8 7 6 5 4 3 2 1
sum() 함수
내부에서 sum() 함수
를 호출def sum(n): if n == 1: return 1 else: return n + sum(n-1) # print(sum(10)) print(sum(100)) #55 #5050
def factorial(n): if n == 1: return 1 else: return n * factorial(n-1) # print(factorial(3)) print(factorial(5)) print(factorial(10)) #6 #120 #3628800
함수를 한 줄로 간결하게 만들어 사용
def add(n1,n2): return n1 + n2 # print(add(5,8)) # add2 = lambda n1, n2 : n1+n2 print(add2(5,8)) #13 #13
map()
map()
: built-in 함수로 list 나 dictionary 와 같은 iterable 한 데이터를 인자로 받아 list 안의 개별 item을 함수의 인자로 전달하여 결과를 list로 형태로 반환해 주는 함수li = [1,2,3,4,5] square = lambda n : n*n li = list(map(square, li)) print(li) #[1, 4, 9, 16, 25]
li_1 = [1,2,3,4,5] li_2 = [6,7,8,9,10] li = list(map(lambda n_1, n_2 : n_1 + n_2, li_1, li_2)) print(li) #[7, 9, 11, 13, 15]
filter()
filter()
함수: iterable 한 데이터를 인자로 개별 item을 특정 조건에 해당하는 값으로만 필터링filter()
함수를 이용한 리스트 필터링li = list(range(10)) print(li) evens = filter(lambda n:n % 2 is 0, li) print(list(evens)) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #[0, 2, 4, 6, 8]
reduce()
import functools li = list(range(10)) print(li) sum = functools.reduce(lambda x, y: x+y, li) print(sum) len = functools.reduce(lambda x, y: x+1, li,0) print(len) max = functools.reduce(lambda x, y: x if x > y else y, li) print(max) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #45 #10 #9
yield
: 함수를 끝내지 않고 값을 계속 반환def gen(): yield 1 yield 2 yield 3 # print(gen()) print(list(gen())) #<generator object gen at 0x7ab5c91c31b0> #[1, 2, 3]
for i in gen(): print(i) #1 #2 #3
g = gen() print(next(g)) print(next(g)) print(next(g)) #1 #2 #3
def gen_even(n): for i in range(n): if i % 2 == 0: yield i # for i in gen_even(10): print(i) #0 #2 #4 #6 #8