如何在另一个函数中的一个python函数中访问变量

时间:2018-12-10 23:49:20

标签: python

我编写了两个函数来计算样本响应的NPS和误差范围。

我不想从第一个函数返回结果,然后将其传递给另一个函数以使用它们。

所以我一直在寻找创建全局变量,这些变量可以在创建的函数之外使用,以便可以在其他函数中使用它们而不必传递它们。

但是似乎抛出了错误。任何想法如何实现这一目标?我不想使用Class并将这些变量作为Class变量。

def nps_score(responses): 
    """Function to get the NPS score from the 
     Survey responses 

    """
    global sample_size = len(responses)
    global promoters_proportion = sum([1 for x in responses if x >=9])/sample_size
    global detractors_proprotion= sum([1 for x in responses if x<=6])/sample_size

    global sample_NPS= promoters_proportion - detractors_proportion

    print("Sample Net Promoter Score(NPS) is {} or {}%".format(sample_NPS,sample_NPS*100))



def moe():
    """ Calculate the margin of error
    of the sample NPS 

    """

    # variance/standard deviation of the sample NPS using 
    # Discrete random variable variance calculation

    sample_variance= (1-sample_NPS)^2*promoters_proportion + (-1-sample_NPS)^2*detractors_proportion

    sample_sd= sqrt(sample_variance)

    # Standard Error of sample distribution

    standard_error= sample_sd/sqrt(sample_size)

    #Marging of Error (MOE) for 95% Confidence level
    moe= 1.96* standard_error

    print("Margin of Error for sample_NPS of {}% for 95% Confidence Level is: {}%".format(sample_NPS*100,moe*100))

1 个答案:

答案 0 :(得分:2)

您必须将变量声明为全局变量,然后然后使用它。像这样:

def add_to_outside():
    global outside #say that it is global
    outside = 1 #now create it!

def see_it():
    global outside #say that it is global
    print(outside)

##As shown:
add_to_outside()
see_it()
#output: 1

开头的关键字global使函数中该名称的所有变量都引用全局值。您并不是说变量是全局变量,而是在同一条语句中进行更改。

此外,仅将global关键字放在函数的开头。不需要紧接对变量的更改,只需要一次。

要全局声明多个变量,请执行以下操作:

global var1, var2, var3 #etc.