Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2018 19:08:35

polin11
Зарегистрирован: 2013-05-02
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с тестовым заданием

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
Выскажите ваше мнение, у меня нет предположений -(

Офлайн

#2 Апрель 8, 2018 19:37:37

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

Помогите с тестовым заданием

Мая твая непонимать.



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

Офлайн

#3 Апрель 9, 2018 03:37:37

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Помогите с тестовым заданием

Исходя из вопроса нужно создать переменную доступную только внутри данной функции и сохраняющую свое значение, между вызовами к этой функции. (т.е. в следующий раз, когда эта функция будет вызвана, созданная переменная должна иметь то же значение? как-то так..).

Теперь возможные ответы, они какие-то немного не такие все мне кажутся…

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)

Офлайн

#4 Апрель 9, 2018 10:56:29

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

Помогите с тестовым заданием

> но только непоятно зачем здесь слово 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)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version