Найти - Пользователи
Полная версия: Массивы в функциях
Начало » Python для новичков » Массивы в функциях
1
СергейТ
Почему мой Питон не воспринимает массивы в аргументах функции?
Неверны в частности такие записи, как
def scalarprod(x[3]):
def scalarprod(x[3], y[3]):
def scalarprod(*x, *y):
def change( **A, i, j):
s0rg
python - НЕ типизированный язык, вам НЕ нужно указывать что именно функция принимает, а аргумент с * в начале может быть только один равно как и аргумент с ** в начале.
Пишите просто:
my_array = [1,2,3,4,5]

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

foo(my_array)
usmix
СергейТ
Почему мой Питон не воспринимает массивы в аргументах функции?
Неверны в частности такие записи, как
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 }
СергейТ
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB