함수는 반복되는 코드 재사용과 유지보수를 위해 사용한다.
가독성을 위해 사용한다.
def 함수 이름(입력1, 입력2):
코드
return 출력
입력 값은 내가 정의한 숫자만큼 넣는다.
위의 경우엔 입력값을 2개로 정하였고, 그 이상으로 할 수도 있다.
ex)
def add(num1, num2):
num1 = num1 * 2
num2 = num2 * 2
return num1 + num2
a = add(1,2)
print(a) # 무언가를 출력하고 싶을 때 쓰는 것이 print
# ---> 이 경우 a = 2 + 4 = 6
법칙은 아니지만 보통은 동사로 함수명을 짓고 띄어쓰기 같은 경우엔 underbar(_)를 사용한다.
ex)
def make_구구단(num):
for i in range(1,10):
print(f"{num} x {i} = {num * i}")
num = 2
a = make_구구단(num)
위에서 보는 것처럼 한글로 함수명을 지을 수도 있다.
하지만 우리가 만드는 코드는 한국인만 보는 것은 아니기 때문에 한글로 함수명을 짓는 것은 지양한다.
위의 예시의 출력물을 보게되면,
2단을 출력하게 된다.
근데 이 때
def make_구구단(num):
for i in range(1,10):
print(f"{num} x {i} = {num * i}")
num = 2
a = make_구구단(num)
print(a)
a - make_구구단(num)
줄 아래에 print(a)
를 추가하여 출력하게 되면 마지막에 None이 추가로 붙게 된다. None 도 하나의 객체이다.
None이 붙는 이유는 아마도 for문이 다 돌고나서 대입하여 출력할 것이 없기 때문이 아닐까..? 싶다. 이거슨 나으 추축..
class는 굳이 사용하지 않더라도 코드에 전혀 문제는 없지만, 유지보수와 가독성을 위해서 사용하는 것이 좋다.
class는 하나의 속성에 대해서 데이터와 함수가 같이 있다.
class 클래스이름:
def __init__(self):
self.속성 = 값 # 인스턴스 속성 만들기
def 메서드(self):
self.속성 # self 뒤에 .을 붙여서 인스턴스 속성에 접근
...
인스턴스 = 클래스() # 인스턴스(객체) 만들기
인스턴스.속성 # 인스턴스 속성에 접근
...
class의 이름은 대문자로 시작한다. 그리고 띄어쓰기가 있으면 그 부분도 대문자로 적는다. (ex : ProductView) 쉽게 생각해서 단어의 첫글자는 무조건 대문자로 시작한다고 보면 된다.
이 class에서 가장 중요한 부분은 __init__
(생성자) , def 함수명(self)
이다.
class NewCar:
color = "red"
def __init__(self, maker, year, auto_drive):
self.maker = maker
self.year = year
self.auto_drive = auto_drive
def car(self):
if self.maker == "Hyundai":
print("현대차가 최고입니다.")
if self.maker == "Kia":
print("기아차가 최고입니다.")
if self.year > 2019:
print("반짝반짝 눈이 부신 새차네요!")
else:
print("조금 오래 되었네요")
if self.auto_drive == True:
print("반자율 주행이 가능합니다. 그렇다고 한눈 팔면 큰일나요!")
else:
print("운전자가 스스로 조작해야합니다. 정신차리세요!")
car1 = NewCar("Kia", 2021, True)
print(car1.maker) # "Kia"
print(car1.year) # 2021
print(car1.auto_drive) # True
print(car1.color) # red
car1.car() #Kia차가 최고입니다.
#최신차입니다.
#반자율 주행이 가능합니다. 그렇다고 한눈 팔면 큰일나요!
car2 = NewCar("HyunDai", 2018, False)
car2.color = "blue"
print(car2.color) # blue
print(car2.maker) # Hyundai
car2.car() #HyunDai
#조금 오래 되었네요.
#운전자가 스스로 조작해야합니다. 정신차리세요!
NewCar.color = "black"
print(car1.color) # black
print(car2.color) # black
이 때 car1
과 car2
는 객체이고, 이 객체 car1
, car2
는 NewCar
의 instance
이다.
color
는 class instance
로 self
에 영향을 받지 않고 고정할 수 있지만, 따로 지정을 해주게 되면 변경은 가능하다.
그리고 여기서 def car
를 method
라고 한다.
이 method
는 함수이긴 하지만, class
에 종속되어 사용되는 함수이다.