기초 PYTHON 프로그래밍 14. 함수 - 1 1. 함수 2. 파이썬내장함수 3. 사용자정의함수 4. 함수의인수와반환값 5. 함수의위치와 main 작성하기
1. 함수 블랙박스 (black box) 함수는입력과출력을갖는 black box이다. 주어진입력에대해서어떤과정을거쳐출력이나오는지가숨겨져있다. >>> print('hello world') Hello world print 함수의재사용성 (reuse) 함수이름, 입력, 출력중요함. Hello world 2
2. 파이썬내장함수 내장함수 (built-in functions) 파이썬언어에서미리만들어서제공하는함수들 IDLE에서 dir( builtins ) 라고입력하면파이썬에서제공하는내장함수목록을볼수있다. 내장함수에어떤것들이있는지학습하고적절히사용할줄아는것이중요하다. 사용자정의함수 (user-defined functions) 사용자가직접만드는함수 함수작성문법을익히고직접작성해보는것이중요하다. 3
2. 파이썬내장함수 >>> dir( builtins ) ['ArithmeticError', 'ZeroDivisionError', '_', ' build_class ', ' debug ', ' doc ', ' import ', ' loader ', ' name ', ' package ', ' spec ', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip'] 4
2. 파이썬내장함수 군집자료형에유용한함수들 len(), max(), min(), sum(), sorted(), reversed() 함수 >>> L = [6,4,9,8,10,50,7] >>> len(l) 7 >>> max(l) 50 >>> min(l) 4 >>> sum(l) 94 >>> sorted(l) [4, 6, 7, 8, 9, 10, 50] >>> L [6, 4, 9, 8, 10, 50, 7] >>> T = (4,6,10,2,1,5) >>> a = len(t) >>> b = max(t) >>> c = min(t) >>> d = sum(t) >>> print(a,b,c,d) 6 10 1 28 >>> S = sorted(t) >>> print(s) [1, 2, 4, 5, 6, 10] >>> type(s) <class 'list'> >>> S = {4,6,2,7,5} >>> a = len(s) >>> b = max(s) >>> c = min(s) >>> d = sum(s) >>> print(a,b,c,d) 5 7 2 24 >>> T = sorted(s) >>> print(t) [2, 4, 5, 6, 7] >>> type(t) <class 'list'> 5
2. 파이썬내장함수 reversed 함수 군집자료형데이터를역순으로바꾼다. 순서가있는 list, tuple, str 에만적용할수있다. >>> L = [1,3,5,7,9] >>> M = reversed(l) >>> print(m) <list_reverseiterator object at 0x03DC92B0> >>> M = list(reversed(l)) >>> print(m) [9, 7, 5, 3, 1] >>> T = (2,4,6,8) >>> K = list(reversed(t)) >>> print(k) [8, 6, 4, 2] >>> S = 'HELLO' >>> P = list(reversed(s)) >>> print(p) ['O', 'L', 'L', 'E', 'H'] 6
3. 사용자정의함수 함수정의하기 def 함수명 ( parameter ) : """ 이함수는두정수에서큰값을찾아서반환하는함수이다. """ return 반환값 docstring : """ """ 함수명 변수명규칙과같다. 영문대소문자, 숫자, _ 로구성됨. 숫자로시작할수없음. parameter ( 매개변수 ) a b if a > b : y = a else : y = b y 반환값 함수명 : find_max def find_max (a,b): if a > b : y = a else : y = b return y 7
3. 사용자정의함수 함수호출하기 함수명에인수를넘기면서호출함. def find_max (a,b): if a > b : y = a else : y = b return y a,b : 매개변수 (parameter) # main m = find_max(10,20) n = find_max(7,3) print(m,n) # 10, 20 : 인수 (arguments) # 7, 3 : 인수 (arguments) 8
4. 함수의인수와반환값 인수, 반환값이없는함수 함수에입력이없으면빈괄호로둔다. 함수에출력이없을수도있다 (return 구문이없다 ). def hello(): print('hello world') print('hello python~') # main 여기에서프로그램수행시작 print('start of the program') hello() print('middle of the program') hello() print('end of the program') 9
4. 함수의인수와반환값 인수가여러개인함수 ( 인수개수만큼 parameter 필요함 ) 예 ) main 에서국어, 영어, 수학성적을입력받아 calculate 함수의 입력으로넘긴다. calculate 함수는평균을반환한다. def calculate(kor, eng, math): total = kor + eng + math average = total / 3 return average # main kor_score = int(input(' 국어성적을입력하시오 : ')) eng_score = int(input(' 영어성적을입력하시오 : ')) math_score = int(input(' 수학성적을입력하시오 : ')) avg = calculate(kor_score, eng_score, math_score) print(' 평균 :', avg) 10
4. 함수의인수와반환값 함수에서 return 문이여러번나오는경우 return 문이여러번나오더라도가장먼저 return 을만나는순간 함수는값을반환하고종료한다. def find_max (a,b): if a > b : y = a else : y = b return y 함수명 : find_max def find_max (a,b): if a > b : return a else: return b 11
4. 함수의인수와반환값 반환값이여러개인경우 함수에반환값이 2 개이상인경우튜플로묶어서반환한다. 예 ) 두수를입력받아서두수의합과두수의곱을반환하는함수 def add_multiply(x,y): sum = x + y mult = x * y return sum, mult # 튜플로반환한다. # main a = int(input('enter a : ')) b = int(input('enter b : ')) m,n = add_multiply(a,b) print(m,n) 12
5. 함수의위치와 main 작성하기 함수의위치 함수는호출전에정의되어있어야한다. print('start of the program') hello() print('middle of the program') hello() print('end of the program') def hello(): print('hello world') a = 10 b = 20 print('before test definition') def test(): print('i am test') print(a, b) print('start') test() print('end') 13
5. 함수의 main 작성하기 main 함수작성하기 main 은프로그램시작점을의미한다. def find_max (a,b): if a > b : return a else: return b x = find_max(10, 20) y = find_max(7,3) print(x,y) def find_max (a,b): if a > b : return a else: return b def main(): x = find_max(10, 20) y = find_max(7,3) print(x,y) if name == ' main ': main() 14