Python передает ссылки на объекты значением .
Python передает ссылки на объекты значением (как Java), и все в Python - объект. Это звучит простым, но затем Вы заметите, что некоторые типы данных, кажется, показывают характеристики передачи значением, в то время как другие, кажется, действуют как передача ссылкой..., каково соглашение?
важно понять изменяемые и неизменные объекты. Некоторые объекты, как строки, кортежи, и числа, неизменны. Изменение их в функции/методе создаст новый экземпляр, и исходный экземпляр вне функции/метода не изменяется. Другие объекты, как списки и словари изменяемы, что означает, что можно изменить оперативный объект. Поэтому изменение объекта в функции/методе также изменит исходный объект снаружи.
Используйте доступ (2)
в POSIX. В стандарте C лучшее, что вы можете сделать, - это попытаться открыть его с помощью fopen ()
и посмотреть, удастся ли он.
Если fopen ()
вернет NULL
], вы можете попробовать использовать errno
, чтобы различать «Файл не существует» ( errno == ENOENT
) и «Permission denied» ( errno == EACCES
), но, к сожалению, эти два значения errno
также определены только в POSIX.
(Даже в POSIX в большинстве случаев лучше всего попытаться открыть файл, а затем посмотреть почему это не удалось, потому что использование access ()
вводит очевидное состояние гонки).
Используйте функцию access () :
if (access(pathname, R_OK) == 0)
{
/* It's readable by the current user. */
}
номер ошибки
будет установлен на ENOENT
, если файл не существует, или EACCES
, если он существует, но недоступен текущему пользователю. Дополнительные коды ошибок см. на странице руководства .