[파이썬 클래스] 원본 변수가 바뀌는 경우 해결 (copy 함수를 사용해야 하는 이유)
아래 코드를 봅시다. 어떻게 동작하는지 먼저 이해해봅시다. class add : def __init__(self,lst): self.lst=lst.append(5) a=[1,2,3,4,5] mcls=add(a) 위 코드는는 a를 [1,2,3,4,5,5] 으로 바꾸고 mcls.list 에는 아무것도 저장되지 않습니다. 결과는 아래와 같습니다 . >>> a [1, 2, 3, 4, 5, 5] >>> mcls.list list.append(5) 의 결과가 none 이기 때문입니다. 클래스 안의 def 에서 변수를 입력받을 때 참조해서 가져오기 때문에 append 를 적용하면 원본인 a가 바뀝니다. 변수를 참조가 아닌 복사해서 가져오는 방법은 아래와 같습니다. copy 함수를 사용하면 됩니다. class add ..
2023. 5. 25.
[파이썬] 함수는 입력되는 변수를 참조로 가져온다 (copy함수의 사용)
아래 코드를 봅시다. def add(lst) : lst.append(6) a=[1,2,3,4,5] add(a) 이 코드에서 a를 출력하면 무엇이라고 나올까요? 아래와 같은 결과가 나옵니다. >>> a [1, 2, 3, 4, 5, 6] 함수에 변수가 입력되면 변수를 참조해서 가져오기 때문에 원래 변수가 변하게 됩니다. 변수를 참조하지 않고 가져오려면 아래와 같이 copy 함수를 사용해야 합니다. def add(lst): new_lst = lst.copy() # 또는 new_lst = list(lst) new_lst.append(5) return new_lst a = [1, 2, 3, 4, 5] result = add(a) 결과는 아래와 같습니다. >>> a [1, 2, 3, 4, 5]
2023. 5. 25.
[파이썬 클래스] 원본 변수가 바뀌는 경우 해결 (copy 함수를 사용해야 하는 이유)
아래 코드를 봅시다. 어떻게 동작하는지 먼저 이해해봅시다. class add : def __init__(self,lst): self.lst=lst.append(5) a=[1,2,3,4,5] mcls=add(a) 위 코드는는 a를 [1,2,3,4,5,5] 으로 바꾸고 mcls.list 에는 아무것도 저장되지 않습니다. 결과는 아래와 같습니다 . >>> a [1, 2, 3, 4, 5, 5] >>> mcls.list list.append(5) 의 결과가 none 이기 때문입니다. 클래스 안의 def 에서 변수를 입력받을 때 참조해서 가져오기 때문에 append 를 적용하면 원본인 a가 바뀝니다. 변수를 참조가 아닌 복사해서 가져오는 방법은 아래와 같습니다. copy 함수를 사용하면 됩니다. class add ..
2023. 5. 25.