티스토리 뷰

문자열

쉽다. dir(str)을 이용해 모르는 것이 나오면 찾아서 해결하자.

 

함수와 모듈

매개변수 미리 지정

함수를 선언할 때 매개변수의 기본값을 지정할 수 있다. 기본값을 지정함으로써 해당 매개변수를 생략하더라도 오류를 발생시키지 않는다.

def para_func(v1, v2, v3=0):
	return v1 + v2 + v3
    
print(para_func(10, 20))       # 30
print(para_func(10, 20, 30))   # 60

 

매개변수의 개수를 지정하지 않고 전달하는 방법

먼저 튜플 형식으로 받을 경우,

def para_func(*para):
    result = 0
    for i in para:
        result += i
    return result
    
print(para_func(10, 20, 30, 40))  # 매개변수는 튜플 형식으로 전달, 100

매개변수 앞에 *을 입력한다 

 

딕셔너리로 매개변수를 받고자 원할 경우 **을 입력한다.

def para_func(**para):
    result = 0
    for i in para:
        result += para[i]
    return result
    
print(para_func(사자=10, 물고기=20, 고라니=30, 나비=40))  # 매개변수는 딕셔너리 형식으로 전달, 100

 

모듈에 대해

모듈은 함수의 집합으로 별도의 파일에 함수들을 모아 놓은 것

패키지(모듈 여러 개, 폴더 형태) > 모듈(함수 여러 개) > 함수

 

모듈표준 모듈, 사용자 정의 모듈, 서드 파티 모듈로 나뉜다.

 

 

클래스

class Car: # 슈퍼 클래스
    
    #############################
    #########  필드 부분  #########
    #############################
    
    name = ''  # 인스턴스 변수
    speed = 0  # 인스턴스 변수
    count = 0  # 클래스 변수



    ##############################
    #########  메서드 부분  #########
    ##############################
    
    def __init__(self, value):  # 생성자 (인스턴스를 생성하면 무조건 호출되는 메서드)
                                # 매개변수가 있는 생성자, self만 있는 생성자는 기본 생성자라고 부름
        self.name = value  # 매개변수를 받아와서 인스턴스 변수에 대입 -> 초기값 설정
        self.speed = 40  # 초기값 설정
        Car.count += 1  # 클래스 변수 조작

        print('\n"%s" 이름의 자동차가 생성되었습니다!\n' % self.name)
    
    def SpeedUP(self, value):
        self.speed += value

    def SpeedDOWN(self, value):
        self.speed -= value

class Sedan(Car):  # 클래스의 상속 => class 서브_클래스(슈퍼_클래스)

    def SpeedUP(self, value):  # 메서드 오버라이딩 또는 재정의 (일부 내용을 수정하기 위해 사용)
        self.speed += value
        
        if self.speed > 100:
            print('"%s" 이름의 자동차가 최고속도 규정을 위반했습니다.' % self.name)

class Truk(Car):  # 클래스의 상속 => class 서브_클래스(슈퍼_클래스)

    def SpeedUP(self, value):  # 메서드 오버라이딩 또는 재정의 (일부 내용을 수정하기 위해 사용)
        self.speed += value
        
        if self.speed > 120:
            print('"%s" 이름의 자동차가 최고속도 규정을 위반했습니다.' % self.name)
            
    def SpeedDOWN(self, value):  # 메서드 오버라이딩 또는 재정의 (일부 내용을 수정하기 위해 사용)
        self.speed -= value
        
        if self.speed < 30:
            print('"%s" 이름의 자동차가 최저속도 규정을 위반했습니다.' % self.name)

class Ben(Car):
    pass # 슈퍼 클래스 메서드를 그대로 상속



    ###############################
    #########  메인코드 부분  #########
    ###############################

MyCar1 = Sedan('1호 자동차') # 인스턴스 생성
print('현재 속도:', MyCar1.speed) # MyCar1.speed : 필드 값 불러오기
MyCar1.SpeedUP(100) # 메서드의 호출
print('현재 속도:', MyCar1.speed)
MyCar1.SpeedDOWN(130) # 메서드의 호출
print('현재 속도:', MyCar1.speed)

print()
print('현재 자동차 개수:', MyCar1.count) # MyCar1.count : 클래스 변수에 접근
print()

MyCar2 = Truk('2호 자동차')
print('현재 속도:', MyCar1.speed)
MyCar2.SpeedUP(100)
print('현재 속도:', MyCar1.speed)
MyCar2.SpeedDOWN(130)
print('현재 속도:', MyCar1.speed)

print()
print('현재 자동차 개수:', MyCar1.count) # 2
print('현재 자동차 개수:', MyCar2.count) # 2. => 클래스 변수는 각각의 인스턴스에 독립적으로 작용x 전체로 작용함!
print()

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함