Это легко объясняется:
Итак:
def x(a=0, b=[], c=[], d=0):
a = a + 1
b = b + [1]
c.append(1)
print a, b, c
a
не изменяется - каждый вызов назначения создает новый объект int - печатается новый объект b
не изменяется - новый массив создается из значения по умолчанию и печатается c
изменения - операция выполняется на одном и том же объекте - и печатается Вы можете использовать модуль os
.
>>> import os
>>> os.getcwd()
'/home/user'
>>> os.chdir("/tmp/")
>>> os.getcwd()
'/tmp'
Но если речь идет о поиске других модулей: вы можете установить переменную среды, называемую PYTHONPATH
, под Linux будет как
export PYTHONPATH=/path/to/my/library:$PYTHONPATH
Затем интерпретатор также ищет это место для модулей import
ed.
edit
В Windows:
set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
(снято из http://docs.python.org/using/windows.html )
edit 2
... и даже лучше: используйте virtualenv
и virtualenv_wrapper
, это позволит вам создать среду разработки, в которой вы можете добавлять пути к модулю по своему усмотрению (add2virtualenv
) без загрязнения вашей установки или «нормальной» рабочей среды.
http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html
Если вы import os
, вы можете использовать os.getcwd
для получения текущего рабочего каталога, и вы можете использовать os.chdir
для изменения своего каталога
Самый простой способ изменить текущий рабочий каталог на python - использовать пакет «os». Ниже приведен пример для компьютера Windows:
#import the os package
import os
# Confirm the current working directory
os.getcwd()
# use '\\' while chaning the directory
os.chdir("C:\\user\\foldername")
Изменение текущего каталога не является способом поиска модулей в Python.
Скорее, см. документы для Путь поиска модуля для того, как Python находит, какой модуль import.
Вот соответствующий бит из секции Standard Modules :
Переменная sys.path представляет собой список строк, который определяет интерпретатор путь поиска для модулей. Он инициализируется путём по умолчанию, взятым из переменной окружения PYTHONPATH или из встроенного значения по умолчанию, если PYTHONPATH не установлен. Вы можете изменить его, используя стандартные операции с списком:
blockquote>>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')
В ответ на ваш исходный вопрос о получении и настройке текущего каталога:
>>> help(os.getcwd) getcwd(...) getcwd() -> path Return a string representing the current working directory. >>> help(os.chdir) chdir(...) chdir(path) Change the current working directory to the specified path.
>>> import os
>>> os.system('cd c:\mydir')
На самом деле, os.system()
может выполнить любую команду, которую может выполнить команда Windows, а не только изменить каталог.
PYTHONPATH
, но обратите внимание, что OP указывает Windows ... – simon 23 November 2011 в 22:13sys.path
внутри вашего скрипта. – Steven Rumbalski 23 November 2011 в 22:31PYTHONPATH
глобально, если у вас установлено более одного Python (или у вас установлены программы, связывающие Python с ними - другими словами, вы никогда не узнаете): он может нарушить установку в таинственные способы – jfs 22 April 2014 в 05:21