簡體   English   中英

將全局變量用作局部變量(在函數內部)時,如何避免無意中更改它?

[英]How to avoid unintentional changing a global variable when using it as a local variable (inside a function)?

問題:

我正在使用一個函數,它將一個(全局)變量作為輸入,然后對該變量(本地)執行操作,然后返回相同的變量。 我只希望變量在本地更改,但我的函數也在更改全局變量。

重現代碼:

data = {'A' : [1,2,3],
        'B' : [4,5,6],
        'C' : [7,8,9]}
df = pd.DataFrame(data)

def func(df):
    df['D'] = df['A'] * df['B'] / df['C']
    return df

func(df) # running function, without assigning it to original variable

print(df)

返回:

運行代碼顯示原始數據框已更改並添加了一列。

   A  B  C   D
0  1  4  7  12
1  2  5  8  15
2  3  6  9  18

預期行為:

我的意圖是在不將列添加到全局變量的情況下運行該函數,只在函數中本地添加它。

    A   B   C
0   1   4   7
1   2   5   8
2   3   6   9

設置:

  • 蟒蛇 3.7
  • 熊貓 0.25.3
  • 視窗 10

您可以制作本地副本:

def func(d):
    df = d.copy()
    df['D'] = df['A'] * df['B'] / df['C']
    return df

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM