Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 24, 2011 19:43:17

СергейТ
От:
Зарегистрирован: 2011-09-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Массивы в функциях

Почему мой Питон не воспринимает массивы в аргументах функции?
Неверны в частности такие записи, как

def scalarprod(x[3]):
def scalarprod(x[3], y[3]):
def scalarprod(*x, *y):
def change( **A, i, j):



Офлайн

#2 Сен. 24, 2011 20:01:42

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Массивы в функциях

python - НЕ типизированный язык, вам НЕ нужно указывать что именно функция принимает, а аргумент с * в начале может быть только один равно как и аргумент с ** в начале.
Пишите просто:

my_array = [1,2,3,4,5]

def foo(a):
for i in a:
print i

foo(my_array)

Офлайн

#3 Сен. 24, 2011 21:40:00

usmix
От:
Зарегистрирован: 2011-07-08
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Массивы в функциях

СергейТ
Почему мой Питон не воспринимает массивы в аргументах функции?
Неверны в частности такие записи, как
def scalarprod(x):
def scalarprod(x, y):
def scalarprod(*x, *y):
def change( **A, i, j):
Аргументы в объявлении функции указаны неправильно:

Пример универсального способа (фишка Питона) :):
# -*- encoding: cp1251 -*-

def main(*args, **kwargs):
'''
args - кортеж параметров
kwargs - именованный список параметров (словарь)
'''
if len(args) > 0:
print args,

if len(kwargs) > 0:
print '{',
for k in kwargs:
print '%s=%s' % (k, kwargs[k]),
print '}',

if len(args) == 0 and len(kwargs) == 0:
print 'No arguments',

print

if __name__ == '__main__':
'''
Варианты "подачи" аргументов
'''
main()
main(1)
main(1, 2, 3)
main(1, range(5), tuple(range(5)))
main(1, range(5), array=range(5), s='Hello, World !!!')
#main(s='Hello', 1)# ошибка! именованные параметры должны быть в конце!
main(*tuple(range(5)))
main(**{'a': 1, 'b': 2, 'c': 3, 's': 'Hello, World !!!'})
main(*tuple(range(5)), **dict(zip('12345', range(5))))
Результат:

No arguments
(1,)
(1, 2, 3)
(1, [0, 1, 2, 3, 4], (0, 1, 2, 3, 4))
(1, [0, 1, 2, 3, 4]) { array=[0, 1, 2, 3, 4] s=Hello, World !!! }
(0, 1, 2, 3, 4)
{ a=1 c=3 b=2 s=Hello, World !!! }
(0, 1, 2, 3, 4) { 1=0 3=2 2=1 5=4 4=3 }



Отредактировано (Сен. 24, 2011 21:56:08)

Офлайн

#4 Окт. 6, 2011 18:54:38

СергейТ
От:
Зарегистрирован: 2011-09-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Массивы в функциях

Спасибо!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version