코딩 테스트 스터디/엘리스 이론 강의

도레미 파이썬 Vol.2

남쪽마을밤송이 2022. 1. 26. 17:31

 [01 기초 자료형 II

문자열/리스트 활용

  • list.pop(i) : 인덱스 i의 원소를 제거 후 그 원소를 반환(return), 괄호를 비울 시 마지막 원소를 제거
  • seq.count(d) : 시퀀스 내부의 자료 d의 개수를 반환
    my_seq = [2,2,2,4,4]
    print(my_seq.count(2)) # 3​
  • str.split(c) : c를 기준으로 문자열을 쪼개서 리스트로 반환, 괄호를 비울 시 공백이 기준
    my_str = "1 2 3 4 5"
    prin(my_str.split()) #
    element = "Na, Mg, Al, Si"
    print(element.split(',')) #​
  • str.join(list) : str을 기준으로 리스트를 합쳐서 문자열을 반환, 괄호를 비울 시 공백이 기준
    my_list = ['a', 'p', 'p', 'l', 'e']
    print(''.join(my_list)) # apple​

튜플

  • 리스트는 값이 바꾸는 것이 가능 = 값이 바뀔 위험이 있음
  • 튜플은 여러 자료를 함께 함들 수 있는 자료형
  • () - 소괄호로 묶어서 표현
    개수가 하나면 ,를 꼭 붙여줘야 함
    소괄호를 사용하지 않고 그냥 자료를 나열하면 파이썬은 튜플로 인식함
    tuple_zero = () # 빈 튜플
    tule_one = (1,)
    tuple = (1,2,3,4,5)
    tuple_ = 1,2,3,4,5​
  • 시퀀스 자료형으로 index를 이용한 인덱싱, 슬라이싱
  • in 연산자, len 함수, + 연산자, * 연산자 사용 가능
  • 자료를 추가하고 삭제하고 변경하는 것이 불가

딕셔너리

  • 짝꿍이 있는 자료형
  • {} - 중괄호로 묶어서 표현
  • {key:value}의 형식, key를 알면 value를 알 수 있음
    person = {'name':'Michael', 'age':10}
    print(person['name']) # Michael
    print(person['age']) # 10
  • key에 문자열을 사용하려면 똑같이 '' 써주어야 함
  • 원소 추가, 삭제가 가능
    person = {'name':'Michael', 'age':10}
    person['hometown'] = Seoul # 자료 추가
    
    person = {'name':'Michael', 'age':10}
    del person['age'] # 원소 삭제
    print(person) # {'name':'Michael'}​
  • key는 변할 수 없는 자료형이어야 함, 따라서 리스트는 안되고 튜플은 가능
    datas = {[1, 2, 3]:'Alphabet'} # Error
    datas = {(1, 2, 3):'Number'} # OK

  • c를 기준으로 또한 한 딕셔너리 내에 2개 이상의 동일한 Key가 있어선 안 됨

 [02 함수와 메서드] 

전역 변수와 지역 변수

  • 전역 변수는 어디서든지 사용할 수 있는 변수 = 함수 밖에서 정의된 변수
  • 지역 변수는 특정 구문(for문, 함수...) 안에서 정의한 변수 = 변수를 정의한 범위에서만 사용이 가능

메서드(Method)

  • 특정 자료에 대해 특정 기능을 하는 코드 (자료 뒤에 .을 찍어 사용)
    my_list = [1,2,3]
    my_list.append(4)
    my_list.count(2)
    my_list.pop()​
  • 함수는 특정 기능을 함
    my_list = [1,2,3]
    len(my_list)
    sum(my_list)
    min(my_list)​
  • 메서드 .sort()와 내장 함수 sorted()의 차이 : .sort()는 특정 자료를 순서대로 정렬해 반환하지만 sorted()는 정렬된 결과를 반환하고 본체는 변형하지 않음
    a = [1, 10, 4, 7, 6]
    a.sort()
    print(a) # [1, 4, 6, 7, 10]
    
    x = [1 ,11, 2, 3]
    y = sorted(x)
    print(x) # [1, 11, 2, 3]
    print(y) # [1, 2, 3, 11]​

인자와 매개변수

  • 매개변수(parameter) : 함수를 정의할 때(만들 때) 넘겨받은 값을 관리하는 변수
  • 인자(argument) : 함수를 호출할 때(사용할 때) 함수로 넘겨주는 자료

변수 이름 규칙

  • 숫자로 시작하면 안 됨
  • 숫자로만 구성되면 안 됨
  • 파이썬 문법에서 사용되는 예약어
  • 공백 문자와 연산자 사용 금지변수 이름 규칙

 [03 모듈과 패키지] 

모듈

  • 모듈은 특정 목적을 가진 함수와 자료의 모임
  • 모듈의 필요성 : 코드의 길이가 너무 길어지는 것을 방지하며 누군가 만들어놓은 함수, 변수를 사용하여 편리성 향상
  • 원하는 내용이 담긴 모듈을 .py(파이썬 파일)로 만들 수 있음
  • 만든 모듈은 필요할 때 import로 불러와 함수와 변수를 사용할 수 있음
    (파일 이름에서 .py를 빼고 호출)
  • import random을 호출하고
    random.randrange(start, end) : start부터 end까지의 숫자 중 하나를 랜덤하게 출력

패키지

  • 모듈을 폴더(Directory)로 구분하여 관리하는 것
  • 패키지의 필요성 : 모듈을 편리하게 관리하기 위해서
  • 사용 방법 1 : import를 이용해서 폴더를 불러온 후 함수 실행
    ex) import user.cal # user 폴더 안의 cal.py 모듈 import
         print(cal.plus(3,4))
  • 사용 방법 2 : from-import 사용, 함수나 변수 사용시 .을 써주지 않아도 됨
    다만 현재 파일 내에 해당 함수나 변수의 이름이 있다면 충돌이 일어나므로 주의
    ex) from user.cal import plus # user 폴더 안의 cal.py 모듈로부터 plus 함수 import
         print(plus(3,4))

 [04 객체의 세계로] 

객체

  • 객체는 성질과 할 수 있는 행동이 담긴 자료
     ex) 성질 - 이름: 성진, 나이: 21, 사는 곳: 서울 ...
          행동 - 밥 먹기, 운동하기, 잠자기 ...

클래스와 인스턴스

  • 클래스는 객체를 만들 수 있는 틀
  • 필드는 객체가 가지고 있는 성질 = 객체가 가지고 있는 변수
  • 메서드는 객체가 할 수 있는 행동 = 객체가 할 수 있는(안에 선언된) 함수
  • self : 메서드라면 가져야 하는 첫 번째 매개변수로 객체 자기 자신을 나타냄, 매개변수의 이름을 self가 아닌 다른 이름으로 지어도 무관하지만, 관습적으로 self로 명명함
    class Human:
    	name = ""
    	age = 0
    	def exercise(self):
        	print("스쿼시!")​
  • 매개변수의 이름을 self가 아닌 다른 이름으로 지어도 무관하지만, 관습적으로 self로 명명합니다.
  • 인스턴스는 객체를 만들 수 있는 틀(클래스)로 찍어낸 객체
  • 인스턴스의 변수와 메서드는 인스턴스.변수 혹은 인스턴스.메서드()로 불러옴
  • 클래스는 상속이 가능함, class 클래스명(상속할 클래스명)으로 상속
    객체 선언은 객체명 = 클래스명(매개변수...)의 형식을 따름
    class Pet:
        attr = "cute"
        def cry():
            return "멍멍!"
            
    class Dog(Pet):
        pass # 아무런 동작도 하지 않음, 오류 방지
        
    maltese = Dog()
    print(maltese.attr) # cute​
     
  •  다형성 : 같은 모양의 코드가 다른 역할을 하는 것, 다형성을 통해 유사한 역할을 하는 필드와 메서드를 같은 이름으로 관리할 수 있음
    class Car:
        type = "자동차"
        horsePower = 100
            
    class Lamborghini(Car):
        horsePower = 700 # Car 클래스를 상속받아 horsePower 겂을 재지정
            
    aventador = Lamborghini()
    print(aventador.type) #자동차
    print(aventador.horsePower) #700