Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 24, 2009 15:22:25

breeve
От:
Зарегистрирован: 2009-08-09
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

from programm import b

такая ситуация есть два модуля. в первом есть какойто код. задача вытащить из первого модуля переменную и во втором с нею что-нибудь сделать(просто вывести). проблема у меня в том что я пишу во втором:

from programm import b
и он у меня начинает делать все что было в первой проге. я нипонимаю в чем дело. я даже пробовал просто написать:
import programm
и он у меня делает точно также(. помогите!



Офлайн

#2 Авг. 24, 2009 16:29:01

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

from programm import b

вытащить из первого модуля переменную
Это - нонсенс.

Офлайн

#3 Авг. 24, 2009 16:55:36

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

from programm import b

Импорт выполняет код. Если надо что бы что то не выполнялось пишем if __name__ == “__main__”: и код далее.



Офлайн

#4 Авг. 24, 2009 17:10:37

breeve
От:
Зарегистрирован: 2009-08-09
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

from programm import b

чето я не пойму это так и должно быть или это баг?
могу кинуть обоих файлов.
смотрел туториалы и там по идеи все норм. делаю по аналогии и чето не пашет(.

b = 17
print 'kolya'
from programm1 import b
print b
raw_input('press any key')
чето я не понял насчет условия, что значит мэйн? как мне надо сделать?



Офлайн

#5 Авг. 24, 2009 17:40:09

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

from programm import b

При импортировании, код выполняется.
Почитай хотя бы про функции :)

# program.py
b = 17
def spam():
print 'kolya'
import program
print program.b
program.spam()
или
from program import b,spam
print b
spam()



Отредактировано (Авг. 24, 2009 17:41:22)

Офлайн

#6 Авг. 24, 2009 18:54:42

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

from programm import b

Ferroman
Это - нонсенс.
Почему же?

module1:

version=1.25


module2:

import module1

if module1.version …



Офлайн

#7 Авг. 24, 2009 20:31:33

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

from programm import b

1. Ну, это - константа.
2. В контексте вопроса топикстартера.

Офлайн

#8 Авг. 25, 2009 11:16:07

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

from programm import b

Ferroman
1. Ну, это - константа.
2. В контексте вопроса топикстартера.
Опять почему же?

module1:

version=1.25


module2:

import module1

print(module1.version)
module1.version = module1.version + 1
print(module1.version)

Результат соответствует ожидаемому.



Офлайн

#9 Авг. 25, 2009 14:15:30

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

from programm import b

Все верно, неизменяемых констант в питоне нету.

Офлайн

#10 Авг. 25, 2009 14:25:59

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

from programm import b

Ну, в плане, что если импортировать через:

from X import Y
Y = 10
X.Y - не изменится (если Y - неизменяемый объект, но если Y - изменяемые объект (аля список), то Y='a' изменит сам объект X.Y)

from X import Y действует по аналогии с Y = X.Y
————————-

А если через:
import X
X.Y = 10
X.Y - изменится



Отредактировано (Авг. 25, 2009 17:32:21)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version