Форум сайта python.su
Есть функция
def blabla(x,y): print(x) print(y)
Офлайн
nodochyв каком смысле ? из def blabla(x,y) чтобы она превратилась в def blabla(x)? а как тогда быть с переменными внутри функции, что по вашему должна вывести комманда print(y) в таком случае?
Возможно ли к ней применить другую функцию которая изменит параметры или же нет?
[code python][/code]
Офлайн
Нет конечно. Извините я не правильно задал вопрос. Сама функция остается той же. Я хочу знать можно ли у вызванной функции поменять значения.
def blabla(x,y):
print(x)
print(y)
def функция
blabla(5,3).функция(2)
и выдало х и y = 10 и 6.
Отредактировано nodochy (Ноя. 19, 2019 22:18:04)
Офлайн
def f1(x,y): return (10,6) def bla(x,y): print(x,y) bla(*f1(x,y))
Отредактировано doza_and (Ноя. 20, 2019 07:22:25)
Офлайн
nodochy всеравно ничего не понятно, толи вам нужны декораторы, толи map, толи вы хотите внутрях функции создать еще функцию, или вообще поменять функцию, можете както более внятно обьяснить?
nodochyвсеравно ничего непонятно, какие значения, на каком этапе?
Я хочу знать можно ли у вызванной функции поменять значения.
def decorator_factory(mult): def decorator(func): def wrapper(*args): func(*[arg*mult for arg in args]) return wrapper return decorator @ decorator_factory(2) def blabla(x,y): print(x) print(y) blabla(5,3) >>> 10 6
nodochyну дык это не функция, а классы должны быть, нет можно наверно и функцию, но по крайней мере из вот такого
blabla(5,3).функция(2)
def blabla(x,y): print(x) print(y)
blabla(5,3).функция(2)
[code python][/code]
Отредактировано PEHDOM (Ноя. 20, 2019 12:30:59)
Офлайн
Большое спасибо именно это и нужно. Пример у меня есть 43 базовые функции и 15 функций построенных на основе этих 43. Сама программа рисует различные обьекты (геометрические фигуры, параболы гиперболы и т.ж). И мне хотелось бы масштабировать и поворачивать как всю графику так и отдельные ее элементы.
Конечно можно в каждом методе прописать изначально возможность делать это, но тогда они будут перегружены параметрами. Проще сделать для этого отдельные функции и вызывать ее к обьекту, который нужно поменять.
Пошел читать про декораторы
Отредактировано nodochy (Ноя. 20, 2019 14:55:13)
Офлайн
nodochyтогда несколько иначе:
Сама программа рисует различные обьекты (геометрические фигуры, параболы гиперболы и т.ж). И мне хотелось бы масштабировать и поворачивать как всю графику так и отдельные ее элементы.
Конечно можно в каждом методе прописать изначально возможность делать это, но тогда они будут перегружены параметрами. Проще сделать для этого отдельные функции и вызывать ее к обьекту, который нужно поменять.
def decorator(func): def wrapper(*args): func(*[arg*scaling for arg in args]) return wrapper @ decorator def blabla(x,y): print(x) print(y) scaling = 2 blabla(5,3) scaling = 3 blabla(5,3) >>> 10 6 15 9 >>>
[code python][/code]
Отредактировано PEHDOM (Ноя. 20, 2019 15:05:36)
Офлайн
> Пошел читать про декораторы
Лучше прочитай про ООП.
Офлайн
Я читал про ООП. И вот что скажу. Можно даже запомнить всю информацию. Можно даже использовать ее. Но пока тебе на практике реально не понадобится сделать по быстрому рефакторинг своего проекта, то понять это абсолютно невозможно. Лично для меня так. Пока я 2 неделю только учу питон. Допустим я знаю, что есть абстрактные классы. Но зачем они нужны - нет и сколько бы документации я не прочел, пока он мне не понадобится на практике я не пойму. Если не ошибаюсь есть еще более высокий уровень абстракции: интерфейсы их в питоне реализует сторонняя библиотека, но в той же Java они есть в ядре. Про них я вообще ничего сказать не могу. А у меня на работе люди говорят вау как это круто.
Офлайн
nodochy
Я читал про ООП.
nodochyЕсть объектно-ориентированная парадигма программирования, а есть объектно-ориентированная парадигма программирования, реализованная в языке - Python, Java, C++ и так далее. И это две разные вещи.
Допустим я знаю, что есть абстрактные классы.
Офлайн