В руководстве по Python говорится, что (https: //docs.python .org / 3 / учебник / classes.html # питон - телескопы - и - пространств имен )

Фактически локальные переменные уже определены статически.

Как это понимать? Исходя из того, что я знал, static означает, что тип переменной определяется во время компиляции. Но это не так, учитывая, например,

x = 1
x = 'str'

Где переменная x динамически связана с объектами типа int или string во время выполнения.

Ссылка: Является ли Python строго типизированным?

2
S Wang 29 Май 2017 в 06:30

2 ответа

Лучший ответ

В дополнение к другому ответу рассмотрим ошибку, вызванную следующим кодом.

x = 1

def function():
    y = x + 1
    x = 3

function()

Это приведет к ошибке, такой как «UnboundLocalError: локальная переменная« x », на которую ссылаются перед присваиванием», потому что определено, что x является локальной переменной в function, поэтому ее следует найти в локальной области, отрицая глобальное определение.

2
Jared Goguen 25 Ноя 2019 в 13:45

Их существование и то, является ли поиск переменной локальным или глобальным, определяется во время компиляции.

2
user2357112 supports Monica 29 Май 2017 в 03:33