我已经使用Python了一段时间,但我从未真正学过如何传递参数,而我养成了使用全局变量的坏习惯,但现在我正在努力学习和它并不好。是否有人能够发现我在这里做错了什么:
简化版代码:
clickLoad = 0
def get_length(clickLoad):
listLength = 305 #(Sample Value)
if listLength < 101:
clickLoad = 0
elif 100 < listLength < 201:
clickLoad = 1
elif 201 <= listLength < 301:
clickLoad = 2
elif 301 <= listLength < 401:
clickLoad = 3
return clickLoad
def load_more(clickLoad):
print(clickLoad) # Testing value, prints 0
while clickLoad < 0:
# Do some stuff
clickLoad -= 1
return clickLoad
get_length(clickLoad)
load_more(clickLoad)
clickLoad的值似乎从0变为0.当listLength = 305时,我希望它为3。
答案 0 :(得分:1)
由于您不再使用全局,因此您在clickLoad上所做的更改仅在函数内部进行。你很好地返回clickLoad你忘了重新影响全局变量clickLoad的新返回值(它仍然是全局的,因为你可以在你的脚本中的任何地方访问它) 所以,这应该工作
clickLoad = 0
def get_length(clickLoad):
listLength = 305 #(Sample Value)
if listLength < 101:
clickLoad = 0
elif 100 < listLength < 201:
clickLoad = 1
elif 201 <= listLength < 301:
clickLoad = 2
elif 301 <= listLength < 401:
clickLoad = 3
return clickLoad
def load_more(clickLoad):
print(clickLoad) # Testing value, prints 0
while clickLoad < 0:
# Do some stuff
clickLoad -= 1
return clickLoad
clickLoad = get_length(clickLoad)
clickLoad = load_more(clickLoad)
答案 1 :(得分:1)
clickLoad = 0
def get_length(clickLoad):
listLength = 305 #(Sample Value)
if listLength < 101:
clickLoad = 0
elif 100 < listLength < 201:
clickLoad = 1
elif 201 <= listLength < 301:
clickLoad = 2
elif 301 <= listLength < 401:
clickLoad = 3
return( clickLoad)
def load_more(clickLoad):
print(clickLoad) # Testing value, prints 0
while clickLoad < 0:
# Do some stuff
clickLoad -= 1
return clickLoad
s = get_length(clickLoad)
load_more(s)
试试这个,因为你没有在调用之前将函数返回的值存储到下一个函数,因此它采用全局函数
答案 2 :(得分:0)
当函数返回一个值时,表示该值被提供给调用函数以供进一步使用。但它并没有写入全局变量。
要获得您想要的内容,请尝试:
clickLoad = get_length(clickLoad)
clickLoad = load_more(clickLoad)
这是对函数如何工作的非常基本的理解,你应该阅读有关它的教程。