就变量的范围和复制而言,这段代码有什么问题吗?

时间:2019-03-26 23:18:35

标签: c++

我刚刚做了下面的功能

import matplotlib.pyplot as plt 
import seaborn as sns
import pandas as pd

cat = ['a','b','a','a','a','b','b','a']      
var=[3,5,4,6,7,5,6,3]       
sd_var = [0.1,0.3,0.1,0.5,0.4,0.2,0.1,0.2]      

df = pd.DataFrame({'cat' : cat, 'var' : var, 'sd_var' : sd_var})

g = sns.FacetGrid(data=df, hue="cat", aspect=1, height=6)        
g.map(plt.errorbar, "cat", "var", "sd_var", marker="o",
linestyle='',markersize='6', capsize=4, elinewidth=2)

plt.show()      

一些问题:

我认为可能是因为在sumRange中我返回了局部变量sum,所以这可能很不好,因为它在函数末尾被删除并返回到调用函数。但是似乎这些变量具有不同的地址。我是否理解错了,在这种情况下c ++是否会复制变量?

可以从中修改变量吗?我正在确定已创建副本,并且可以修改它,与“ to”不同,我通过引用传递引用以避免不必要的副本,并使用const防止编辑。

1 个答案:

答案 0 :(得分:2)

  

我认为可能是因为在sumRange中我返回了局部变量sum,这可能是不好的

这是完全安全的。另一方面,尝试返回对局部变量的引用或指针将是一个问题。

  

可以从中修改变量吗?我确定已经制作了副本,可以修改它了

是的,没关系。确实是副本。


但是!

此行不执行您认为的操作:

Get-PublicFolder "Public FolderName" | select Identity,MailEnabled 

它的意思是Get-PublicFolderStatistics "Public FolderName" | Select FolderPath, TotalItemSize ,与sum =+ from; 相同。

您可能想要:

sum = +from;