Вот сумасшедшая идея, внутри onDataChange, поместите ее внутри TextView с видимостью ушедшей textview.setVisiblity (Gone) или что-то еще, XD затем сделайте что-то вроде
textview.setText (dataSnapshot.getValue (String. class))
, а затем получить его с textview.getText (). toString ()
просто сумасшедшая простая идея.
Это то, что на самом деле происходит:
global_list = []
def defineAList():
local_list = ['1','2','3']
print "For checking purposes: in defineAList, list is", local_list
return local_list
def useTheList(passed_list):
print "For checking purposes: in useTheList, list is", passed_list
def main():
# returned list is ignored
returned_list = defineAList()
# passed_list inside useTheList is set to global_list
useTheList(global_list)
main()
Это то, что вы хотите:
def defineAList():
local_list = ['1','2','3']
print "For checking purposes: in defineAList, list is", local_list
return local_list
def useTheList(passed_list):
print "For checking purposes: in useTheList, list is", passed_list
def main():
# returned list is ignored
returned_list = defineAList()
# passed_list inside useTheList is set to what is returned from defineAList
useTheList(returned_list)
main()
Вы даже можете пропустить временный returned_list
и передать возвращаемое значение прямо к useTheList
:
def main():
# passed_list inside useTheList is set to what is returned from defineAList
useTheList(defineAList())
Прочитайте концепцию пространства имен. Когда вы назначаете переменную в функции, вы назначаете ее только в пространстве имен этой функции. Но явно вы хотите использовать его между всеми функциями.
def defineAList():
#list = ['1','2','3'] this creates a new list, named list in the current namespace.
#same name, different list!
list.extend['1', '2', '3', '4'] #this uses a method of the existing list, which is in an outer namespace
print "For checking purposes: in defineAList, list is",list
return list
В качестве альтернативы вы можете передать его:
def main():
new_list = defineAList()
useTheList(new_list)
Ваше возвращение бесполезно, если вы его не назначили
list=defineAList()
return
возвращает значение. Неважно, какое имя вы дали этой ценности. Вернувшись, он просто «передает это», чтобы что-то еще могло его использовать. Если вы хотите использовать его, вы должны захватить его извне:
lst = defineAList()
useTheList(lst)
Возврат list
изнутри defineAList
не означает, что «сделайте так, чтобы вся остальная часть программы могла использовать эта переменная ". Это означает «передать эту переменную и дать остальной программе шанс захватить ее и использовать». Вам нужно назначить это значение чему-либо вне функции, чтобы использовать его. Кроме того, из-за этого нет необходимости заранее определять свой список с помощью list = []
. Внутри defineAList
вы создаете новый список и возвращаете его; этот список не имеет отношения к тому, который вы определили с помощью list = []
в начале.
Кстати, я сменил имя переменной с list
на lst
. Не рекомендуется использовать list
в качестве имени переменной, поскольку это уже имя встроенного типа Python. Если вы создадите собственную переменную с именем list
, вы больше не сможете получить доступ к встроенному.
передать переменную из одной функции в качестве аргумента в другие функции, как это
определить функции, подобные этому
blockquote> blockquote>def function1(): global a a=input("Enter any number\t") def function2(argument): print ("this is the entered number - ",argument)
вызывают функции, подобные этому
function1() function2(a)
Вам просто не хватает одного критического шага. Вы должны явно передать возвращаемое значение во вторую функцию.
def main():
l = defineAList()
useTheList(l)
Альтернативно:
def main():
useTheList(defineAList())
Или (хотя вы не должны этого делать! сначала, но глобалы просто вызывают у вас печаль в конечном итоге.):
l = []
def defineAList():
global l
l.extend(['1','2','3'])
def main():
global l
defineAList()
useTheList(l)
Функция возвращает значение, но оно не создает символ в каком-либо глобальном пространстве имен, поскольку ваш код предполагает , Вы должны фактически захватить возвращаемое значение в области вызова, а затем использовать его для последующих операций.