【发布时间】:2020-02-12 19:17:45
【问题描述】:
我试图从函数内部访问一个变量,它给了我一个错误,上面写着:
NameError: name 'perm_sample_1' is not defined
代码在这里:
def permutation_sample(data1,data2):
data = np.concatenate((data1,data2))
permuted_data = np.random.permutation(data)
perm_sample_1 = permuted_data[:len(data1)]
perm_sample_2 = permuted_data[len(data1):]
return perm_sample_1 , perm_sample_2
#return perm_sample_1.shape ,perm_sample_2.shape
def draw_perm_reps_func_diff(data1,data2,func,size=1):
perm_replicates = np.empty(size)
for i in range(size):
perm_sample_1 , perm_sample_2 = permutation_sample(data1,data2)
perm_replicates[i] = func(perm_sample_1) - func(perm_sample_2)
return perm_replicates
stats.ttest_ind_from_stats(mean1=np.mean(perm_sample_1), std1=np.std(perm_sample_1), nobs1=len(perm_sample_1),mean2=np.mean(perm_sample_2), std2=np.std(perm_sample_2), nobs2=len(perm_sample_2))
【问题讨论】:
-
除非事先在函数中声明
global,否则其中的变量默认是本地,不能在其外部引用。您可以返回该值,然后调用者可以使用它来做事(而不是使用通常被认为是糟糕的编程习惯的全局变量)。看起来您正在这样做,因为您的问题没有显示完整的回溯,这将表明NameError发生的位置。 -
谢谢@martineau 那么如何在最后运行引用函数内部使用的变量的计算?
-
how can I- 给函数添加参数,在调用函数时传递。 -
由于您没有显示
draw_perm_reps_func_diff()的调用位置以及它与最后一行的关系,我不知道。 -
代码链接:easyupload.io/mqgxkb
标签: python function permutation replicate