파이썬 공부중/파이썬 중급

파이썬 중급 01. 함수에 대하여

책다니엘 2024. 2. 10. 01:50

1. 함수는 def 키워드, 함수명, :, 들여쓰기를 이용해서 선언한다.

 

def addFunc():
    x = int(input('x 입력: '))
    y = int(input('y 입력: '))
    print('{} + {}의 결과는: {}'.format(x, y, x + y))
    return x+y

addFunc()

 

2. 함수 내에서 또 다른 함수를 호출할 수 있다.

3. 함수를 선언한 다음에는 개행 2번으로 구분해준다.

 

def func1():
    print('func1 호출!!')
    func2()


def func2():
    print('func2 호출!!')
    func3()


def func3():
    print('func3 호출!!')


func1()

 

4. 인수와 매개변수 갯수는 일치해야 한다.

# customer은 매개변수
def greet(customer):
    print(f'{customer}님 안녕하세요.')


# 홍길동은 인수
greet('홍길동')


# 매개변수와 인수의 갯수가 일치하지 않으면
def greet(customer):
    print(f'{customer}님 안녕하세요.')


greet('홍길동', 10)

# 오류가 발생한다.
# Traceback (most recent call last):
#  File "C:\Users\desktop\Python\pycharm\pythonProject\hello.py", line 7, in <module>
#    greet('홍길동', 10)
# TypeError: greet() takes 1 positional argument but 2 were given

 

5. 매개변수 갯수가 정해지지 않은 경우 *를 이용한다.

def printNumber(*numbers):
    for number in numbers:
        print(number, end="")
    print()


printNumber(1)
printNumber(1, 2)
printNumber(1, 2, 3)
printNumber(1, 2, 3, 4)
printNumber(1, 2, 3, 4, 5)

# 출력 결과
# 1
# 12
# 123
# 1234
# 12345

 

6. 지역변수는 함수 내에서만 사용가능한 변수이고, 전역변수는 어디서나 사용가능하지만 함수 내에서 수정할 수는 없다.

7. global을 사용하면 함수 안에서도 전역변수의 값을 수정할 수 있다.

 

num = 10

# 전역변수인 num을 함수 내에서 수정할 수는 없지만
# def printNumbers():
#     num = 20
#     print('num = {}').format(num)
#
# printNumbers()
#

# num을 global로 선언하면 사용가능하다


def printNumbers():
    global num
    num = 20
    print('num = {}'.format(num))


printNumbers()

# 출력 결과
# num = 20

 

8. 함수 안에 있는 함수를 함수 밖에서 호출할 수는 없다.

# 간단한 계산기 기능 구현하기

n1 = float(input('실수(n1)입력: '))
n2 = float(input('실수(n1)입력: '))
operator = int(input('1. 덧셈, 2.뺄셈, 3. 곱셈, 4. 나눗셈, 5.종료'))


def calculator(a, b, oper):
    def addCal(num1, num2):
        return num1 + num2

    def subCal(num1, num2):
        return num1 - num2

    def mulCal(num1, num2):
        return num1 * num2

    def divCal(num1, num2):
        return num1 / num2

    if oper == 1:
        return addCal(a, b)
    elif oper == 2:
        return subCal(a, b)
    elif oper == 3:
        return mulCal(a, b)
    elif oper == 4:
        return divCal(a, b)
    elif oper == 5:
        return '종료되었습니다.'


print(calculator(n1, n2, operator))

 

9. lambda 키워드를 이용하면 함수 선언을 보다 간단하게 할 수 있다.

10. PEP8에 따르면, lambda 함수를 선언하는 것은 권장되지 않는다. def가 훨씬 더 가독성이 좋으므로, def를 사용하는 것을 권장하고 있다.

# PEP 8: E731 do not assign a lambda expression, use a def

def addNum(num1, num2):
    return num1 + num2


addNum2 = lambda num1, num2: num1 + num2


print(addNum(10, 2))
print(addNum2(10, 2))