부스트캠프 AI Tech 4기

1. Variables/String & Advanced function concept

StoneSeller 2022. 9. 16. 10:42

Variables

시퀀스 자료형: list의 copy

  • 1차원: Shallow Copy
    list_copy = list[:]
    list_copy = list.copy()

만약 아래 코드와 같이 b=a로 a를 복사하려고 한다면 a를 수정할 때 b도 같이 수정될 것이다.

실제 리스트는 1개만 존재하고 a, b라는 다른 이름으로 같은 값을 가르키게 되기 때문이다.

 

>>> a = [1,2,3,4]
>>> b = a

>>> print(b is a)
# True

>>> a.append(5)
>>> print("a: ", a)
>>> print("b: ", b)
# a:  [1, 2, 3, 4, 5]
# b:  [1, 2, 3, 4, 5]

 

 

리스트의 경우는 가변(mutable)객체이기 때문에 Shallow Copy를 이용해 복사해야 한다.

  Immutable(불변성) Mutable(가변성)
Type int, float, bool, str, tuple list, dict, set

 

>>> a = [1,2,3,4]
>>> b = a[:] # b = a.copy()

>>> print(b is a)
# False

>>> a.append(5)
>>> print("a: ", a)
>>> print("b: ", b)
# a:  [1, 2, 3, 4, 5]
# b:  [1, 2, 3, 4]

 

  • 2차원: Deep Copy
    import copy
    list_copy = copy.deepcopy(list)

2차원 리스트는 Shallow Copy로 복사할 수 없다.

리스트 안의 요소가 리스트(가변 객체)이기 때문이다.

따라서 Deep Copy를 통해 객체의 변형성에 따라서, 불변형 객체는 그대로 가져오고 변형 객체는 새로운 공간에 값을 복사하여 가져오게 하여 두 객체는 같은 값을 가진 완전히 다른 객체가 된다.

 

>>> import copy

>>> a = [[802, 906],[216, 820]]
>>> b = copy.deepcopy(a)

print(b is a)
# False

>>> a[0][0] = 208
>>> print("a: ", a)
>>> print("b: ", b)
# a:  [[208, 906], [216, 820]]
# b:  [[802, 906], [216, 820]]

 

 


String & Advanced function concept

raw string

특수문자 기호 '\'를 그대로 출력

>>> raw_string = "그대로 출력할 수 있다는 것이 사실입니까? \n 앞에 r을 붙여야함"
>>> print(raw_string)
# 그대로 출력할 수 있다는 것이 사실입니까?
#  앞에 r을 붙여야함
 
>>> raw_string = r"그대로 출력할 수 있다는 것이 사실입니까? \n 진짜임"
>>> print(raw_string)
# 그대로 출력할 수 있다는 것이 사실입니까? \n 진짜임

▮ call by object reference

함수에서 parameter 전달 방식

1. Call by value: 값만 넘김

2. Call by reference: 메모리 주소를 넘김 (parameter 값 변경 시 호출자의 값도 변경됨)

3. Python의 경우
    Call by object reference: “객체의 주소”가 함수로 전달됨

  • 전달된 객체를 참조해 변경 시 호출자에게 영향 줌
  • 새로운 객체 생성 시 호출자에게 영향 주지 않음

function type hints

파이썬은 dynamic typing이기 때문에 처음 함수를 사용하는 사용자가 interface를 알기 어렵다.

따라서 function을 정의할 때 파라미터의 type과 리턴값의 type을 명시하여 사용자가 쉽게 사용할 수 있다.

def temp(level: int) -> int:
	return level+1

 function docstring

함수에 대한 설명과 목적을 기술하는 것

def solution(survey, choices):
    """성격유형 지표 결과를 반환
    
    	Parameters:
        	survey (list) : 질문마다 판단하는 지표를 담은 1차원 문자열 배열
            choices (list) : 질문마다 선택지를 담은 1차원 정수 배열
        Returns:
            answer (str) : 성격유형 검사 결과 지표 문자열
    """
    ...코드 생략...
    return answer

 

 


부스트캠프 AI Tech 교육 자료를 참고하였습니다.

728x90