Это происходит потому, что вы используете asynchronous function
, то есть $.ajax()
. Вот почему ваш оператор console.log(arrayen.length)
выполняется первым, а затем вы получаете данные.
Для запуска вашей программы добавьте console statement
внутрь success callback
. Он убедится, что длина будет напечатана, как только вы получите данные с сервера.
Конвенция Python состоит в том, чтобы назвать "частные" функции и методы с начальным символом подчеркивания. Когда Вы видите начальный символ подчеркивания, Вы знаете, чтобы не попытаться использовать его.
Помните, Python не является Java.
Я не думаю, что существует любой шанс получить доступ внутренний () от пространства имен экстерна.
Однако, по-моему, то, что Вы сохраняете внутренними () вложенный, подразумевает, что единственный "контракт", который действительно имеет значение, является внешним () один. внутренний () часть реализации, и Вы не должны хотеть тестировать реализацию. Если Вы действительно хотите протестировать внутренний (), сделайте обширные тесты на внешнем () с данными, которые включат все технические возможности внутренних ().
внутренний не существует, до внешний делает его. Необходимо или переместиться внутренний до функции верхнего уровня для тестируемости или иметь внешний тестовый тест все возможные пути выполнения себя и внутренний.
Действительно обратите внимание, что внутренняя функция не является простой функцией, это - закрытие. Рассмотрите этот случай:
def outer(a):
b = compute_something_from(a)
def inner():
do_something_with(a, b)
Это - стандартный компромисс тестируемости. Если Ваша цикломатическая сложность будет слишком высока, то Ваши тесты будут слишком многочисленными.