파이썬(Python)

파이썬 - 사용자 정의 함수

BlueNoa 2021. 6. 15. 00:14
728x90
반응형

· 사용자 정의 함수

사용자가 직접 함수를 정의해서 원하는 기능을 만들어서 사용할 수도 있다. 이렇게 Maker에서 제공하는 함수 외의 함수들은 모두 사용자가 정의한 함수가 된다.

기존의 함수를 사용자 함수에 사용함으로 재활용을 극대화할 수 있다.

· 사용자 함수의 기본 형식

형식

def 함수명(매개변수, ...):

수행문

...

함수 호출

함수명(인수)

 

· 사용자 함수의 사용법과 특징

사용자 함수는 다른 변수에 할당하여 사용할 수도 있으며 다른 위치에 있는 파일에서도 import 하여 사용할 수도 있다.

단, 다른 변수에 할당하여 사용할 때는 함수명에서 ()를 제외하고 할당해주고, 변수에서 ()을 붙여서 실행한다.

그냥 함수명만 할당해주면 해당 함수의 주소를 주는 것이고, ()를 붙이면 값을 주는 것이다. 변수에게 주소를 할당해주기 위함이기 때문에 괄호는 빼주어야 한다.

 

def fun1(cnt):
    cnt = cnt + 1
    print('함수 실행 : ' + str(cnt) + '회')
    
print('함수의 주소 : ', fun1) # 함수의 주소
Func1 = fun1; print('할당된 주소 : ', Func1)
fun1(2)
함수의 주소 :  <function fun1 at 0x000001ADAAF17280>
할당된 주소 :  <function fun1 at 0x000001ADAAF17280>
함수 실행 : 3회

 

 

· 사용자 함수에 print()로만 출력할 경우

def fun2(msg):
    print('fun2 함수 실행')
    print(msg)
    # return None이 생략되어 있다.

print(fun2(123)) # 생략된 None이 출력된다.
a = fun2(365)
print(a)
fun2 함수 실행
123
None
fun2 함수 실행
365
None

 

· 사용자 함수 예시

def fun3(arg1, arg2):
    result = arg1 + arg2
    return result # return None을 무시하고 result를 출력하고 함수 종료

print(fun3(4, 10)) # return result가 출력된다.
print(fun3('문자의', '합')) # 문자열의 합도 가능하다.


def fun4(no1, no2):
    hap = no1 + no2
    if hap % 2 == 0:
        print('나누어 떨어진다!')
        return hap 
    else:
        return # 빠져나온다. -> None

print(fun4(10, 22))
# 조건문 안에 자기 자신의 함수에 새로운 값을 주고 부른는 것이 가능하다.
14
문자의합
나누어 떨어진다!
32

 

<삼각형의 넓이 구하는 함수 만들기>

def tri(a, b): # a = 밑변, b = 높이, c = 넓이
    c = a * b / 2
    tri_print(c)
    
def tri_print(c):
    print('삼각형의 넓이는 : ', c)

tri(10, 7)
삼각형의 넓이는 :  35.0

 

def is0dd(arg):
    return arg % 2 == 1

print(is0dd(3))

mydict = {x:x*x for x in range(11) if is0dd(x)}
print(mydict)
True
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}

 

· 현재 사용중인 함수를 확인하는 방법

print(globals())
{'__name__': '__main__', '__doc__': "\nimport random\nb = 0\nnCnt = 0\nfor i in range(1, 4): # 주사위의 횟수\n    a = random.randint(1,6)\n    b += a # 3회 던지는 것의 누적\n    print(a, b)\n    if b % 10 == 0:\n        nCnt += 1\n        print('주사위의 합 : ', b, '건 수: ', nCnt)\n\n", '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000025E574208E0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:\\work\\psou\\pypro1\\pack_other\\jump_to_python.py', '__cached__': None, 'math': <module 'math' (built-in)>, 'arg2spec': <function arg2spec at 0x0000025E59D68670>, 'tri': <function tri at 0x0000025E57407280>, 'tri_print': <function tri_print at 0x0000025E59D68DC0>}

※ 위의 출력 결과는 실행하는 사람마다 모두 결과가 다르게 나온다.

 

728x90
반응형

'파이썬(Python)' 카테고리의 다른 글

파이썬 - 함수 추가 내용(1)  (1) 2022.10.25
함수 내에서 변수의 생존 범위  (0) 2021.06.16
파이썬 - 내장 함수  (0) 2021.06.14
정규 표현식(정규식) - 2  (0) 2021.06.13
정규 표현식(정규식) - 1  (0) 2021.06.13