Уведомления

Группа в Telegram: @pythonsu

#1 Март 12, 2009 17:37:43

gman
От:
Зарегистрирован: 2009-03-12
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

перенос переменной в функцию

Доброго времени суток, есть такой вопрос: как перенести переменную(с содержанием естественно) из общего кода(незнаю как правильно назвать) в функцию? Например:

#!/usr/bin/python
# -*- coding: utf-8 -*-
var1 = "foobar"
def x():
var1 = "anytext"
print var1
def y():
#вот сюда мне нужно перенести var1 который содержит "foobar"



Офлайн

#2 Март 12, 2009 17:44:02

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

перенос переменной в функцию

def y():
print var1
На этом все - в данном случае. А вообще читать http://www.python.org/dev/peps/pep-0227/



Офлайн

#3 Март 12, 2009 17:44:20

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

перенос переменной в функцию

def x():
var1='Читайте документацию!'
return var1

def y():
print x()
Можно еще сделать так, но это является плохим стилем
var1='читайте документацию'
def x():
global var1
var1='или прочтите любой учебник про питон'

def y():
print var1



Отредактировано (Март 12, 2009 17:47:11)

Офлайн

#4 Март 12, 2009 18:23:15

gman
От:
Зарегистрирован: 2009-03-12
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

перенос переменной в функцию

очень странно, раньше ето не работало, а теперь сработало… хм

#!/usr/bin/python
# -*- coding: utf-8 -*-
var1 = "пошел читать документацию"
def x():
print var1
x()
upd: понял
v1 = 1
def asa():
v1 = 2
print v1
asa()
print v1



Отредактировано (Март 12, 2009 18:36:41)

Офлайн

#5 Март 14, 2009 08:50:00

Xiber
От:
Зарегистрирован: 2009-03-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

перенос переменной в функцию

а вопрос то на самом деле интересный
я смог найти только такое решение

x=10
def r():
globals()['x'] = globals()['x'] +10

r()
print x
20
есть ли более элегантный способ обратится к глобальной относительно функции переменной?



Офлайн

#6 Март 14, 2009 09:39:15

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

перенос переменной в функцию

Стоп стоп… Это не одно и тоже:

x=10
def r():
global x
x+=10
r()
print x
или я чего то недопонял…



Офлайн

#7 Март 14, 2009 11:15:31

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2759
Репутация: +  185  -
Профиль   Отправить e-mail  

перенос переменной в функцию

А передавать переменную как параметр функции не пробовали?

#!/usr/bin/python
# -*- coding: utf-8 -*-
var1 = "foobar"
def x():
var1 = "anytext"
return var1
def y(var1=x()):
print var1

#или её переназначить

def y():
var1=x()
print var1



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Март 14, 2009 21:28:50

gman
От:
Зарегистрирован: 2009-03-12
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

перенос переменной в функцию

Rodegast
А передавать переменную как параметр функции не пробовали?
#!/usr/bin/python
# -*- coding: utf-8 -*-
var1 = "foobar"
def x():
var1 = "anytext"
return var1
def y(var1=x()):
print var1

#или её переназначить

def y():
var1=x()
print var1
так тоже можно, но ситуация была примерно такая:
#!/usr/bin/python
var1 = raw_input()
# а дальше в куче мест будет нужна ета переменная...
и она будет менятся в некоторых местах, и название должно оставатся первоначальное, с первого раза чегото не заработало, я и вдался в размышления о namespace'ах, да лопатить код, а скорей всего я функцию забыл запустить… хорошо что не сапер, могу и ошибится :rolleyes:



Отредактировано (Март 14, 2009 21:37:29)

Офлайн

#9 Март 14, 2009 22:25:32

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

перенос переменной в функцию

Может стоит использовать класс?



Офлайн

#10 Март 15, 2009 09:59:10

gman
От:
Зарегистрирован: 2009-03-12
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

перенос переменной в функцию

igor.kaist
Может стоит использовать класс?
неумею пока ефективно использовать классы



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version