Существует ли в python аналог php-функции require или require_once ?
***
см. http://www.phpclub.net/manrus/f/require.html :

Оператор require() включает/include и вычисляет определённый файл.

Когда файл подключён/included, содержащийся в нём код наследует область видимости переменной строки, на которой возникло подключение. Любые переменные, доступные на этой строке в вызывающем файле, будут доступны в вызываемом файле, вперёд от этой точки.


Аналог есть, но работает чуть иначе.
Читайте тут http://docs.python.org/tutorial/modules.html
не помню точно, как в PHP. Но в питоне, в подключаемом модуле область видимости не будет включать в себя переменные из основного скрипта (т.е. из того, откуда это модуль подключали).
В PHP по сути происходит как бы склейка кода. Подключаемый код видит всё что было до подключения и может это менять и всё что он создал или изменил видно после подключения ) Вернее всё менять он не может, к примеру на всю программу может быть только одна FOOBAR функция, если в include коде попытаться её переопределить, то получится фатальная ошибка.
Что-то такое припоминаю...
Да. Именно на эту разницу я и хотел обратить внимание топикастера

Last edited Dec. 23, 2008, 2:19 p.m.

На php мне удавалось при включенном register globals вклеивать фрагменты кода с одного сайта на другой вызывая этот код единственной строкой вида require('http://site.ru/code.txt')
Это позволило защитить код от прочтения при возможности его исполнения поскольку на удаленном сервере были выставлены соответсвующие права доступа.
Возможны ли подобные манипуляции в python ?
Ну да, скачиваете код, потом передаёте его в eval функцию.
Что-то я не пойму, если прав на чтение кода нет, то зачем что-то скачивать с удалённого сервера, код так и так не прочитают.
Я новичек в питоне и был бы благодарен за код подобной "вклейки"
import urllib

CODE_URL = 'http://domain.com/foo/bar/code.txt'

try:
    data = urllib.urlopen(CODE_URL).read()
except IOError:
    print 'Oops'
else:
    eval(data)
Не совсем верно.
Если, чтоб как в PHP, то надо использовать exec()

import urllib

CODE_URL = 'http://domain.com/foo/bar/code.txt'

try:
    data = urllib.urlopen(CODE_URL).read()
except IOError:
    print 'Oops'
else:
    exec(data)
    print login


файл code.txt при этом например такой:
login = 'guest'
pass = 'n34r3'