Найти - Пользователи
Полная версия: перенос переменной в функцию
Начало » Python для новичков » перенос переменной в функцию
1 2
gman
Доброго времени суток, есть такой вопрос: как перенести переменную(с содержанием естественно) из общего кода(незнаю как правильно назвать) в функцию? Например:
#!/usr/bin/python
# -*- coding: utf-8 -*-
var1 = "foobar"
def x():
var1 = "anytext"
print var1
def y():
#вот сюда мне нужно перенести var1 который содержит "foobar"
ZAN
def y():
print var1
На этом все - в данном случае. А вообще читать http://www.python.org/dev/peps/pep-0227/
igor.kaist
def x():
var1='Читайте документацию!'
return var1

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

def y():
print var1
gman
очень странно, раньше ето не работало, а теперь сработало… хм
#!/usr/bin/python
# -*- coding: utf-8 -*-
var1 = "пошел читать документацию"
def x():
print var1
x()
upd: понял
v1 = 1
def asa():
v1 = 2
print v1
asa()
print v1
Xiber
а вопрос то на самом деле интересный
я смог найти только такое решение
x=10
def r():
globals()['x'] = globals()['x'] +10

r()
print x
20
есть ли более элегантный способ обратится к глобальной относительно функции переменной?
igor.kaist
Стоп стоп… Это не одно и тоже:
x=10
def r():
global x
x+=10
r()
print x
или я чего то недопонял…
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
gman
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:
igor.kaist
Может стоит использовать класс?
gman
igor.kaist
Может стоит использовать класс?
неумею пока ефективно использовать классы
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB