TIL #16. 파이썬 기본(4)

김광일·2022년 1월 28일
1

PYTHON

목록 보기
5/13
post-thumbnail

1. FUNCTION

함수는 반복되는 코드 재사용과 유지보수를 위해 사용한다.
가독성을 위해 사용한다.

function 기본 꼴

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문이 다 돌고나서 대입하여 출력할 것이 없기 때문이 아닐까..? 싶다. 이거슨 나으 추축..

2. CLASS

class는 굳이 사용하지 않더라도 코드에 전혀 문제는 없지만, 유지보수와 가독성을 위해서 사용하는 것이 좋다.
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

이 때 car1car2 는 객체이고, 이 객체 car1, car2NewCarinstance이다.
colorclass instanceself에 영향을 받지 않고 고정할 수 있지만, 따로 지정을 해주게 되면 변경은 가능하다.

그리고 여기서 def carmethod 라고 한다.
method는 함수이긴 하지만, class에 종속되어 사용되는 함수이다.

profile
부족함 없이 공부하자

0개의 댓글