Я ничего не знаю о внутренних интерпретаторах Python-интерпретатора (и я тоже не являюсь экспертом в компиляторах и интерпретаторах), поэтому не обвиняйте меня, если я предлагаю что-либо недоступное или невозможное.
При условии, что python объекты меняются. Я думаю, что это следует учитывать при разработке аргументов аргументов по умолчанию. Когда вы создаете экземпляр списка:
a = []
вы ожидаете получить новый список, на который ссылается a .
Почему a = [] в
def x(a=[]):
создать новый список по определению функции, а не по вызову? Это точно так же, как вы спрашиваете: «Если пользователь не предоставляет аргумент, тогда создает экземпляр нового списка и использует его, как если бы он был создан вызывающим». Я думаю, что это неоднозначно:
def x(a=datetime.datetime.now()):
пользователь, вы хотите a по умолчанию использовать дату и время, соответствующее тому, когда вы определяете или выполняете x ? В этом случае, как и в предыдущем, я буду придерживаться такого же поведения, как если бы аргумент по умолчанию «назначение» был первой инструкцией функции (datetime.now (), вызванной вызовом функции). С другой стороны, если пользователь хотел отобразить время отображения, он мог бы написать:
b = datetime.datetime.now()
def x(a=b):
Я знаю, я знаю: это закрытие. В качестве альтернативы Python может предоставить ключевое слово для привязки определения времени:
def x(static a=b):
Способ getDownloadURL()
возвращает Future<dynamic>
. Измените тип вашего url
var do dynamic
.
Вы, вероятно, установили _imgUrl
с помощью ref.getDownloadURL()
напрямую без ключевого слова await
.
Если вы установите переменную с помощью var url = ref.getDownloadURL()
, вы получите Future<Url>
, но если вы установите переменную с помощью var url = await ref.getDownloadURL()
, вы получите Url