аргументы функции в python - PullRequest
       4

аргументы функции в python

1 голос
/ 19 февраля 2011

Я пытаюсь обдумать, как позиционные аргументы и аргументы ключевых слов работают в python, и, похоже, я проваливаюсь довольно печально.

При наличии функции с сигнатурой вызова matplotlib.pyplot.plot(*args,**kwargs) ее можно вызвать как

import matplotlib.pyplot as plt

x=[1,2,3]
y=[5,6,7]
plt.plot(x,y,'ro-')
plt.show()

Теперь я пытаюсь обернуть это во что-то, что я могу назвать mplot(x,y,'ro-',...), где ... - это те аргументы, которые исходная функция была готова принять. Следующее с треском провалилось, но я не могу понять, как это исправить:

def mplot(x,y,fmt,*args,**kwargs):
   return plt.plot(x,y,fmt,*args,**kwargs)

mplot(x,y,'ro-')

Буду очень признателен за любые указания на выход.

1 Ответ

1 голос
/ 19 февраля 2011

Вам нужно это так:

def mplot(x,y,fmt,*args,**kwargs):
   #do stuff with x, y and fmt
   return plt.plot(*args,**kwargs)

Я предполагаю, что вы намерены использовать x, y и fmt в вашей подпрограмме mplot, а затем передать оставшиеся параметры в plt.plot.


Я не верю, что это на самом деле то, что вы хотите (я вижу, что plt.plot хочет получить x, y и fmt и поэтому их не следует употреблять). Я удалил этот ответ, но, поскольку ваш опубликованный код, по-видимому, работает, я оставлю это на некоторое время видимым и посмотрю, не вызывает ли он реальный вопрос, который будет раскрыт!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...