totalrecall
138
2021-04-21 16:51:00 작성 2021-04-21 16:51:20 수정됨
5
229

파이썬 b = a 문제 심각함


파이썬 문법............문제가 많네요


b = a


이런 거 하면 안되네요

특히 회사 프로젝트를 할 때...


저는 멋도 모르고

totaldata = data

totaldata = pd.concat([totaldata, data])

이런 코딩을 했더니, 데이터가 중복이 발생하고, 속도가 엄청 느려지고

무엇보다도 완전한 프로그래밍 버그이더군요


그러니까 파이썬은 무조건

totaldata = copy.deepcopy(data)


이렇게 해야 하네요


파이썬이 이런 문법을 하는 이유는 속도 때문인가보죠?

이거 프로젝트에서 난리 나게 생겼네요


ㅎㄷㄷ

0
  • 답변 5

  • Dierslair
    4k
    2021-04-21 16:53:54

    보통 대입 연산자는 쓰레드 이동 or 클로저가 아닌 이상 reference(shallow) copy이지 않나요?

  • 드코
    3k
    2021-04-21 16:55:00

    파이썬

    https://wikidocs.net/16038

    얕은복사 , 깊은복사  공부를 해도 계속 연습해서 자기것으로 만들지 않으면 계속 헛갈리더라구요

  • totalrecall
    138
    2021-04-21 16:55:11 작성 2021-04-21 16:58:05 수정됨

    네, reference copy이죠

    저는 그래서 deepcopy 씁니다

    그냥 copy도 문제가 발생할 수 있다고 하네요. copy 못 믿겠음....

  • totalrecall
    138
    2021-04-21 16:56:42

    저는 옛날 C/C++ 문법이 좋습니다


    b = a

    자유롭게 쓰는 문법이 좋은데요......

  • aprilshower
    213
    2021-04-21 19:51:59

    언어는 언어마다의 특징이 있기 때문에 알고 사용해야합니다.

    메모리 주소를 참조하는 방식이 아닌데, 

    1. a = b 에서 deep copy 를 하는 것이 오히려 이상하지 않나요?
    2. a = b 에서 deep copy 가 되는 것이 원하는 것이라면 shallow copy 는 어떻게 표현하나요?
    3. deepcopy 를 한 코드에서 여러번 사용하는 일이 많지 않음

  • 로그인을 하시면 답변을 등록할 수 있습니다.