type(3,)
возвращает тип Int, в то время какТип (3,) возвращает целое число вместо кортежа в python, почему?
t = 3,
type(t)
возвращает тип кортежа. Почему?
type(3,)
возвращает тип Int, в то время какТип (3,) возвращает целое число вместо кортежа в python, почему?
t = 3,
type(t)
возвращает тип кортежа. Почему?
Внутри скобок, которые формируют оператор вызова функции, запятая не для построения кортежей, но для разделения аргументов. Таким образом, type(3,)
эквивалентен type(3)
. Дополнительная запятая в конце списка аргументов допускается грамматикой. Вам нужна дополнительная пара скобок построить кортеж:
>>> def f(x):
... print x
...
>>> f(3)
3
>>> f(3,)
3
>>> f((3,))
(3,)
Встроенная функция type()
является функцией, поэтому запятая анализируется как разделитель аргументов, а не конструктор кортежей.
>>> type(3,)
<type 'int'>
>>> type((3,))
<type 'tuple'>
Я подозреваю, Python игнорирует Запятая в аргументы функции:
def f (a):
print a
print type(a)
>>> f(3,)
3
<type 'int'>
Используя значения, разделенные запятыми без скобок, чтобы создать кортеж является трюк, который не работает повсюду. Список постижений является хорошим примером:
>>> [a,a*2 for a in range(4)]
File "<stdin>", line 1
[a,a*2 for a in range(4)]
^
Вы должны сделать это:
>>> [(a,a*2) for a in range(4)]
[(0, 0), (1, 2), (2, 4), (3, 6)]
Список распаковка работает отлично, хотя, так что это немного переменная, где неограниченная, разделенные запятыми значения разрешены:
>>> [(a,b) for a, b in zip(range(4),range(4))]
[(0, 0), (1, 1), (2, 2), (3, 3)]
в func(bunch_of_args)
вам разрешено следовать за последним ARG с запятой, так же, как в
alist = [1, 2, 3, ]
Независимо от количества аргументов 'f', запятая будет анализироваться как разделитель аргументов. –
Вы правы - я просто подтвердил это на моем конце. Будет редактировать. –