имя, не определенное в модуле Python

#python #python-3.x

#python #python-3.x

Вопрос:

Я вижу, что Python выдает ошибку ниже

«Сообщение об ошибке»: «имя ‘get_client’ не определено»,

Ниже приведен мой код

 get_client()

def get_client():
    # optional fields
    level = 'INFO'
    verify = True
  

Ответ №1:

Вы пытаетесь вызвать или выполнить функцию до того, как она была определена.

Попробуйте изменить порядок двух частей:

 def get_client():
    # optional fields
    level = 'INFO'
    verify = True

get_client()
  

Это работает для вас?


Интерпретатор python считывает код сверху вниз; на этом этапе определенные функции регистрируются в глобальном пространстве имен, но содержимое этих функций еще не выполняется (выполняется только проверка синтаксиса), если они специально не вызваны.

Например:

 def f1():
    print('1')

print('A')
f1()
print('B')

def f2():
    print('2')
  

Здесь f1() регистрируется, а затем выполняется еще до того, f2() как оно было зарегистрировано в пространстве имен. Результатом выполнения примера будет:

 A
1
B
  

f2() никогда не вызывается в этом коде, поэтому его оператор печати никогда ничего не записывает в выходные данные.

Комментарии:

1. Спасибо, почему порядок не имеет значения при вызове функции из другого?

2. потому что при выполнении функции в этот момент оба имени функций обычно определены в пространстве имен

3. Определен ли код вне функции, выполняемый еще до определения функций?

4. @PunterVicky Я отредактировал свой ответ; Я надеюсь, что это отвечает на некоторые из ваших вопросов.

Ответ №2:

Вы вызываете функцию до того, как вы ее определили.

Попробуйте:

 def get_client():
    # optional fields
    level = 'INFO'
    verify = True

get_client()
  

Ответ №3:

Интерпретатор Python читает сверху вниз. Таким образом, вам нужно вызвать свою функцию ПОСЛЕ того, как вы ее определили:

 def get_client():
    # optional fields
    level = 'INFO'
    verify = True

get_client()