我编写了两个函数来计算样本响应的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))
答案 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.