расширение не работает в python [duplicate]

И если вы используете класс пула соединений, вам может понадобиться сделать этот путь:

    string connstring = string.Format("Server=44.55.110.59; database={0}; UID=root; password=Newuser@123; SslMode = none", databaseName);
22
задан Jim Fasarakis Hilliard 13 January 2016 в 14:28
поделиться

3 ответа

Не разрешая распаковку в Python 2.x отметили и зафиксировали в Python 3.5, который теперь имеет эту функцию, как описано в PEP 448 :

Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) on Windows (64 bits).

>>> [1, 2, 3, *[4, 5, 6]]
[1, 2, 3, 4, 5, 6]

Здесь - некоторые объяснения обоснования этого изменения.

34
ответ дан pilcrow 20 August 2018 в 21:29
поделиться
  • 1
    используйте полную информацию, но мы обсуждаем python-2.7 (см. теги, о которых идет речь) – Andriy Ivaneyko 13 January 2016 в 13:54
  • 2
    Похоже, они не рассматривали использование * в контейнере при создании python 2.7? – Har 13 January 2016 в 13:55
  • 3
    @AndriyIvaneyko это отвечает на вопрос, как было задано. OP хочет знать рассуждения, а не как сделать это по-другому в Py2.7. – timgeb 13 January 2016 в 14:17

Asterix * - не просто унарный оператор, это оператор аргумента-распаковки для определений функций функций и .

Итак, * предполагается использовать только для работы с параметрами функции, а не со списками, кортежами и т. д.

ПРИМЕЧАНИЕ: начиная с python3.5, * может использоваться не только с параметрами функций, @ B. Ответ M в значительной степени описывает это изменение в python.

Если вам нужно использовать concat-списки, используйте concatenation вместо list1 + list2, чтобы получить желаемый результат. Чтобы объединить список и генератор, просто передайте объект generator в list, предварительно связав его с другим списком:

gen = (x for x in range(10))
[] + list(gen)
4
ответ дан Community 20 August 2018 в 21:29
поделиться
  • 1
    Он работает как с вызовами функций, так и с определениями функций. Это похоже на то, что вы подразумеваете, что он работает только в последнем случае, поэтому вы можете изменить формулировку. – SuperBiasedMan 13 January 2016 в 16:31
  • 2
    @SuperBiasedMan Спасибо, для исправления я обновил ответ. – Andriy Ivaneyko 13 January 2016 в 16:35

Это не поддерживается. Python 3 дает лучшее сообщение (хотя Python 2 не поддерживает * в левой части назначения afaik):

Python 3.4.3+ (default, Oct 14 2015, 16:03:50) 
>>> [1,2,3, *[4,5,6]]
  File "<stdin>", line 1
SyntaxError: can use starred expression only as assignment target
>>> 

f(*[4,5,6]) эквивалентно f(4,5,6)

Развертывание аргумента функции - это особый случай.

2
ответ дан warvariuc 20 August 2018 в 21:29
поделиться
  • 1
    Спасибо за указание на python 3, я только что попробовал, и он работает в python 3.5.1 & gt; & gt; & gt; & gt; [* [1,2,3,4]] = & gt; [1, 2, 3, 4] Я не знал об этом. Он даже работает с генераторами :) очень круто [1,2,3, (x для x в диапазоне (10))] – Har 13 January 2016 в 13:49
Другие вопросы по тегам:

Похожие вопросы: