본문 바로가기
Development/Python

[Python] 사용자 정의 함수 사용 시 주의 할 점

by 성딱이 2021. 10. 6.
반응형

def 를 통해서 함수를 정의하고, 이 함수에 객체를 Input 값 으로 넣을 경우 주의할 점이 한 가지 있다.

바로, 사용자 정의 함수에서 입력 받은 객체에 대해서 직접 조작을 한다면, 굳이 return으로 변경내역을 전달해주지 않아도 원본에 적용이 된다는 점이다.

따라서 객체의 원본을 보존함과 동시에 함수를 적용한 객체를 각각 갖고자 한다면, 함수 내외부적으로 복사본을 만들어 적용시켜야 한다.

 

# 원본 자체가 변경 되는 경우
def change_df(df_org) : 
    df_org['col1'] = df_org['col1'] + 1
    
    return df_org
    
# 원본과 결과를 각각 보존하고자 하는 경우
def change_df2(df_org) :
    df = df_org.copy()
    df['col1'] = df['col1'] + 1
    
    return df

 

끄읏.

 

 

출처 : https://stackoverflow.com/questions/31614011/dataframe-modified-inside-a-function

 

DataFrame modified inside a function

I face to a modification of a dataframe inside a function that I have never observed previously. Is there a method to deal with this and no modify the initial dataframe ? In[30]: def test(df): ...

stackoverflow.com

 

 

 

반응형

댓글