Уведомления

Группа в Telegram: присоединиться | Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Июнь 2, 2007 22:13:45

Murr_vk
От:
Зарегистрирован: 2007-05-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятки с открытием файла

Доброго всем времени суток. Учусь программировать на питоне, столкнулся со странной ситуацией.

Насколько я знаю, файлы в питоне открываются функцией open и выглядит это примерно так:

f = open(fname, “r”) # Где fname - строковая константа с именем файла

Вроде все просто и понятно, но в одной из моих программ перестало вдруг работать. Начало выдавать ошибку о несовместимости типов, мол в аргументах функции должен быть Integer. Долго искал в этой нехитрой строчке ошибку, естественно ничего не нашел, поэтому достал с полки бубен и начал прыгать вокруг компютера. В итоге вылечилось заменой строки

from os import *

на

import os

и редактированием соответствующих функций. Собственно говоря вопрос - а чего я делал не так, чем интерпретатору не понравилось from os import *?



Офлайн

#2 Июнь 3, 2007 00:16:54

guest01
От:
Зарегистрирован: 2007-03-24
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятки с открытием файла

Murr_vk
Собственно говоря вопрос - а чего я делал не так, чем интерпретатору не понравилось from os import *?
Как пишет автор языка в топике “What are the ”best practices“ for using import in a module?”:

In general, don't use from modulename import *. Doing so CLUTTERS the importer's namespace.

Ключевое слово я выделил. Предположу, что таким образом мы вызываем некую иную функцию open (а их в разных простанствах немало). Происходит смещение (помехи) в пространстве имен. Imho, не стоит импортировать модули таким образом.



Офлайн

#3 Июнь 3, 2007 00:21:39

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Непонятки с открытием файла

Именно.
os.open (есть и такая) перекрыла __builtins__.open после
from os import *
а у нее сигнатура
open(filename, flag ) -> fd
Вот и нестыковка



Офлайн

#4 Июнь 3, 2007 09:59:51

Murr_vk
От:
Зарегистрирован: 2007-05-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятки с открытием файла

Ясно, спасибо. Впредь буду руководствоваться советами Ван Россума :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version