Форум сайта python.su
Q: how do you make a variables only accessible within a function but cause the value to persist
across calls to that function
Answer:
1) Add a positional argument, with an empty tuple as default value, to the end of the argument list
2) Encapsulate access to the variable within set_x() and get_y() functions
3) Create a global variable at the veginning of the module and add the private declaration to that variable within the function
4) Create a global variable at the beginning of the module and add the “static” declaration to that variable within the function
5) Add the keyword argument, with a mutable a default value to the end of the function parameret list
Выскажите ваше мнение, у меня нет предположений -(
Офлайн
Мая твая непонимать.
Офлайн
Исходя из вопроса нужно создать переменную доступную только внутри данной функции и сохраняющую свое значение, между вызовами к этой функции. (т.е. в следующий раз, когда эта функция будет вызвана, созданная переменная должна иметь то же значение? как-то так..).
Теперь возможные ответы, они какие-то немного не такие все мне кажутся…
Add a positional argument, with an empty tuple as default value, to the end of the argument list
Позиционный аргумент со значением tuple() по умолчанию? очень странно, однако, т.к. задание значение по умолчанию превращает аргумент в keyword-аргумент.
Encapsulate access to the variable within set_x() and get_y() functions
Наверное так можно сделать, хотя что такое set_x, get_y – взято из какого-то контекста? Я бы не выбрал это в качестве решения.
Create a global variable at the veginning of the module ..
Создание глобальное переменной приведет к том, что эта переменная будет доступна не только внутри данной функции… Поэтому, видимо нельзя создавать никакие глобальные переменные, или переменные вначале модуля.
Что такое static и private декларации здесь к тому же…? Эти два ответа также бы не выбрал.
Add the keyword argument, with a mutable a default value to the end of the function parameret list
Вот это, вроде подходит, но только непоятно зачем здесь слово a mutable, вот без него я бы этот ответ выбрал…
а так оно какое-то лишнее… почему не может быть аргумент immutable, например,
def myfunction(a,b, *, my_arg='default'): pass.
Отредактировано scidam (Апрель 9, 2018 03:41:28)
Офлайн
> но только непоятно зачем здесь слово a mutable
Потому что тебе предлагают в этом аргументе хранить состояние твоей переменной. Например
>>> def foo(a, b=[]): ... if b: ... print b.pop() ... b.append(a) ... >>> foo(0) >>> foo(1) 0 >>> foo(2) 1 >>> foo(3) 2
Отредактировано Rodegast (Апрель 9, 2018 11:19:47)
Офлайн