
위 사진으로 쉽게 이해할 수 있다
예제
#함수 선언하기
def sum(a, b):
result = a+b
return result
#함수 호출하기
a = sum(3,4)
print(a) -> 7
(예제1) 입력값이 있는 함수
def sum1(num1, num2):
result = num1 + num2
return result
sum1()
sum1(3,4) -> 7
sum을 그냥 실행할 경우 이런 메세지가 뜬다. 즉 값을 저장해달라는 의미
sum() missing 2 required positional arguments: 'num1' and 'num2'
return의 의미
def sum2(num1, num2):
print(num1+num2)
sum2(3,4) -> 7
(예제2) 입력값이 없는 함수
def say():
return 'Hi
즉, num1과 num2의 정의가 있지 않다는 내용이다. 에러가 뜨지 않게 하기 위해선 어떻게 해야할까?
sum(3,4) -> 7
값을 집어넣으면 이렇게 결과값이 나온다
함수의 기본 구조
sum(3,4)
sum(num1 = 3, num2 = 4)
#기본적으로 순서가 들어가 있음
#파라미터를 명시한다면 순서가 지켜지지 않아도 된다
예제
def say_myself(name, old, man = True):
print(f'나의 이름은 {name}입니다')
print(f'나의 나이는 {old}입니다')
if man:
print('남자입니다')
else:
print('여자입니다')
say_myself('서준범',26) #아래 구문과 동일
say_myself('서준범',26,True)
say_myself('서이준',27,False)
say_myself(old = '10', name = '뽀로로')
전역변수 vs. 지역변수
def test():
local_var = 20
test()
----
print(local_var)-> error
지역변수 예제
def test2():
local_var = 20
return local_var
a = test2()
print(a) -> 20
def test3():
global local_var = 20
local_var = 20
test3()
----
print(local_var)-> 20
args 함수: 입력개수 상관없이 변수를 삽입할 수 있음
def means(*args):
return args
print(means(1,2,3))
print(means(1,2,3,4,5,6))
Example 2-9. 입력하는 모든 수의 평균을 계산하는 함수 만들기
입력 개수에 상관없이 사용하기 위해, 함수 입력 값 자리에, *args를 사용
def means(*args):
sum1 = 0
count1 = 0
for i in args:
sum1 = sum1 + i
count1 += 1
result = sum1/count1
return result
print(mean(1,2,3))
Example 2-10. 두 수를 입력 받아 사칙연산(+,-, x, /)을 하는 함수 만들기
def four(num1, num2):
plus = num1 + num2
minus= num1 - num2
multiple = num1 * num2
divide = num1 / num2
return plus,minus,multiple,divide
클래스
class Calculator:
def __init__(self):
self.result = 0
def adder(self, num):
self.result += num
return self.result
result1 = Calculator()
result2 = Calculator()

안보고 작성이 가능한 정도
클래스: Person
인스턴스: Alice / Bob
속성: Person 클래스의 속성
method: 클래스 내부의 함수
self: 인스턴스 자기 자신을 의미
init: 생성자
예제
class FourCal:
def set_data(self, num1, num2)
self.num1 = num1
self.num2 = num2
def add(self):
return self.num1 + self.num2
a = FoulCal() # -> a라는 인스턴스 클래스를 사용
a.set_data(10,20)
print(a.num1, a.num2)
print(a.add())
생성자
class FourCal:
def __init__(self, num1, num2)
self.num1 = num1
self.num2 = num2
def add(self):
return self.num1 + self.num2
def abst(self):
return self.num1 + self.num2
def multi(self):
return self.num1 * self.num2
def divis(self):
return self.num1 / self.num2
a = FoulCal(10,20) # -> a라는 인스턴스 클래스를 사용
__init__ 생성자를 통해 자기 자신을 지칭예제
class BackAccount:
def __init__(self,num, name, default):
self.num = num
self.name = name
self.default = default
def deposit(self, money):
self.default = self.default + money
def withdraw(self, money):
self.default = self.default- money
def check(self):
print(f'{self.name}님의 잔고는 {self.default}입니다.')
a = BackAccount('122333','서준범',10000)
a.check()
class FourCal:
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
def add(self):
return self.num1 + self.num2
def abst(self):
return self.num1 - self.num2
def multi(self):
return self.num1 * self.num2
def divis(self):
return self.num1 / self.num2
a = FourCal(20, 30)
class MoreFourCal(FourCal):
pass
a = MoreFourCal(4,2)
a.add()
오버라이딩
b = FoulCal(2,0)
b.divis() --> 0이기 때문에 오류가 뜸
class MoreFourCal(FourCal):
def divis(self):
if self.num2 == 0:
return 0
else:
return self.num1/num2
모듈
패키지
__init__.py파일이 있어야 함__init__.py 없어도 됨main.py
## import my_package.math_operations as mo
from my_package import math_operations as mo
# math_operations의 함수들을 사용할 수 있음
result = mo.add(3,5)
print(result)
result2 = mo.sub(3,5)
print(result2)
math_operations.py
def add(a,b):
return a + b
def sub(a,b):
return a - b
def mul(a,b):
return a * b
def div(a,b):
return a / b

행(row) 튜플(tuple) 레코드(record)
열(column) 필드(field) 속성(attribute)
데이터를 쓰는 입장인 우리는, 어떻게 데이터를 가져올 것인가를 알아야 함