Используйте функцию callback()
внутри успеха foo()
. Попробуйте таким образом. Это просто и легко понять. & nbsp;
var lat = "";
var lon = "";
function callback(data) {
lat = data.lat;
lon = data.lon;
}
function getLoc() {
var url = "http://ip-api.com/json"
$.getJSON(url, function(data) {
callback(data);
});
}
getLoc();
CPython - это сбор мусора, как только они выходят из области видимости, поэтому второй []
создается после сбора первого []
. Таким образом, большую часть времени он попадает в ту же ячейку памяти.
Это показывает, что происходит очень четко (выход может отличаться в других реализациях Python):
class A(object):
def __init__(self): print "a",
def __del__(self): print "b",
# a a b b False
print A() is A()
# a b a b True
print id(A()) == id(A())
Оператор == на списках и dicts не сравнивает идентификаторы объектов, чтобы увидеть, являются ли они одним и тем же объектом. Для этого используйте obj1 is obj2
.
Вместо этого оператор == сравнивает членов списка из dict, чтобы узнать, совпадают ли они.
он не работает одинаково в Jython ...
>>> id({})
1
>>> id([])
2
Может ли быть оптимизация, когда обычно используемые (т.е. пустые) контейнеры «интернированы», чтобы сэкономить на расходах на размещение ?
Это (в CPython) не предполагает:
>>> def mutateid(obj):
... obj.append('x')
... print obj
... print id(obj)
...
>>> mutateid([])
['x']
4299590472
>>> id([])
4299590472
>>>