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))
'파이썬 공부중 > 파이썬 중급' 카테고리의 다른 글
| 파이썬 중급 05. 파일 읽고 쓰기 (1) | 2024.02.10 |
|---|---|
| 파이썬 중급 04. 상속, 오버라이드, 다중 상속, 예외 (1) | 2024.02.10 |
| 파이썬 중급 03. 객체 지향 프로그래밍, 클래스, 얕은 복사와 깊은 복사 (1) | 2024.02.10 |
| 파이썬 중급 02. 모듈에 대하여 (1) | 2024.02.10 |