Boostcamper's TIL (2)

2021/08/03

학습한 내용

Python Basic

Python Object-Oriented Programming

현실 세계를 모델링해 속성과 행동을 가지는 객체를 만드는 객체지향 프로그래밍에 대해 공부했다. 객체지향 프로그래밍의 의미는 프로그래밍 언어에 따라 큰 차이가 없어서 문법적 차이점을 익히는데 집중했다.

//java class
class Student{
    private String name;
    private String major;
    private int age;
    
    public Student(String name, String major, int age){
        this.name = name;
        this.major = major;
        this.age = age;
    }
    //getter()
    //setter()
    //method()
}
#python class
class Student(object):
    def __init__(self, name, major, age):
        self.name = name
        self.major = major
        self.age = age

가장 큰 차이점은 java, c++ 언어에서는 클래스를 생성할 때 가장 먼저 생성자 함수가 실행되어 멤버 변수를 초기화 할 수 있다.
python 에서는 def __init__ 객체 초기화 예약 함수가 실행 되어 인스턴스가 갖는 특성들을 정의한다. 이때 파라미터 self는 생성된 인스턴스 자기 자신을 의미한다.

#python class
class Student(object):
    def __init__(self, name, major, age):
        self.name = name
        self.major = major
        self.age = age
        self.__private = True
        
    def __str__(self):
        return "Hi. My name is %s" % (self.name)
    
    @property
    def private(self):
        return self.__private
        
student = Student("kim", "software", 20)
print(student.__str__())
#"Hi, My name is kim"

__ 는 특수한 예약 함수나 변수, 맨글링으로 사용된다.
private 변수를 선언할 때 __ 을 변수 앞에 붙여 사용하면 외부 접근이 금지된다.
@property decorator를 사용해 숨겨진 변수를 반환할 수 있는 함수를 만들 수 있다.

First-class objects

파이썬의 함수는 일급함수

- 변수, 데이터 구조에 할당 가능
- 파라메터 전달이 가능
- 리턴 값으로 사용 가능
# 변수에 할당 가능
def sum(x, y):
   return x+y

f = sum
print(f(2,3))
# '5'

# 함수를 파라메터로 사용가능
def formula(method, val):
   return method(val, val + 2)

print(formula(f, 4))
# '10'

AI Math

딥러닝 학습 방법

확률론

통계학


코드리뷰

피어세션에서 다른 캠퍼님들이 사용한 코드를 보면서 좋아보이는 것을 배우고 복습한다.

  • str.strip()
    str.rstrip() 함수는 오른쪽 여백을 제거하는 함수로 알고 있었다. 그래서 자연스럽게 str.strip()은 문장의 처음(왼쪽)여백을 제거하는 함수로 인식했다. 알고보니 str.strip()은 양쪽 모두 여백을 제거해주는 함수라는 것을 다른 캠퍼분이 알려주셔서 정확히 알게 되었다.
words = "   Hello, World   "

print(words.strip())
# "Hello, World"
print(words.rstrip())
# "   Hello, World"
  • 리프리헨션
    리스트 리프리헨션을 학습하고 익숙해지기 위해 최대한 많이 사용하려 했는데 str.join(리프리헨션)이 가능하다는 것을 다른 캠퍼분의 코드를 보고 배웠다.
words = "Hello World"
result = '-'.join([w if w == 'o' for w in list(words)]
print(result)
# "o-o"
  • str.split()
    split() 함수 파라메터에 아무것도 넣지 않으면 한칸 여백을 기준으로 자르는 줄 알았는데 아무것도 넣지 않으면 공백의 길이에 상관없이 자를 수 있다는 것을 배웠다.
words = "  hi  my name i s choi    "
print(words.split())
# ["hi", "my", "name", "i", "s", "choi"]

캠퍼분들과 코드리뷰를 하는 시간에 많은 것을 배울 수 있었다. 지금까지 코딩하면서 처음 내 코드를 다른분에게 보여주고 피드백 받는것이 처음이었는데 새로운 경험이었다.

좋은 웹페이지 즐겨찾기