Python разрешает Ваши переменные с - обычно - три доступные пространства имен.
В любое время во время выполнения, существует по крайней мере три вложенных объема, пространства имен которых непосредственно доступны: самый внутренний объем, который ищется сначала, содержит локальные имена; пространства имен любых функций включения, которые ищутся, начиная с самого близкого объема включения; средний объем, искавший затем, содержит глобальные имена текущего модуля; и наиболее удаленным объемом (искавший в последний раз) является пространство имен, содержащее встроенные имена.
существует две функции: globals
и locals
, которые показывают Вам содержание два из этих пространств имен.
Пространства имен создаются пакетами, модулями, классами, объектной конструкцией и функциями. Нет никаких других разновидностей пространств имен.
В этом случае, вызов к функции, названной x
, должен быть разрешен в локальном пространстве имен или глобальном пространстве имен.
Локальный в этом случае, тело функции метода Foo.spam
.
Глобальный - хорошо - глобален.
правило состоит в том, чтобы искать вложенные локальные пространства, созданные функциями метода (и определения вложенной функции), затем искать глобальный. Вот именно.
нет никаких других объемов. for
оператор (и другие составные операторы как if
и try
) не создают новые вложенные объемы. Только определения (пакеты, модули, функции, классы и экземпляры объектов.)
Внутренняя часть определение класса, имена являются частью пространства имен класса. code2
, например, должен быть квалифицирован именем класса. Обычно Foo.code2
. Однако self.code2
будет также работать, потому что объекты Python смотрят на содержание класса как нейтрализация.
объект (экземпляр класса) имеет переменные экземпляра. Эти имена находятся в пространстве имен объекта. Они должны быть квалифицированы объектом. (variable.instance
.)
Из метода класса, у Вас есть местные жители и globals. Вы говорите self.variable
для выбора экземпляра как пространства имен. Вы отметите, что self
аргумент каждой функции членства класса, делая его частью локального пространства имен.
См. Правила , Объема Python Объем Python , Переменный Объем .
Попробуйте опустить \
перед >
.
Изменить: я только что проверил ваше регулярное выражение, и оно отлично работает. Вот что я использовал:
<?
$content = "this is something with an <img src=\"test.png\"/> in it.";
$content = preg_replace("/<img[^>]+\>/i", "(image) ", $content);
echo $content;
?>
Результат:
this is something with an (image) in it.
Вам необходимо вернуть результат в $ content
, поскольку preg_replace
не изменяет исходную строку.
$content = preg_replace("/<img[^>]+\>/i", "(image) ", $content);