Что делает + =, означают в Python?

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

$IP = "192.168.13.1"
$octets = $IP.Split(".")                        # or $octets = $IP -split "\."
$octets[2] = [string]([int]$octets[2] + 1)      # or other manipulation of the third octet
$newIP = $octets -join "."

$newIP
11
задан Peter Mortensen 12 December 2009 в 22:20
поделиться

6 ответов

Это изначально не поддерживается клиентами .NET . Вы можете взглянуть на следующую дискуссию на форумах MSDN . Если вы устанавливаете WSE 2.0 , можно найти пример в следующем расположении: C: \ Program Files \ Microsoft WSE \ v2.0 \ Samples \ CS \ QuickStart \ Attachments \ AttachmentsClient

Вы можете задаться вопросом, почему так важно, что он может модифицировать объект на месте, а не строить новый. Вот пример:

# two variables referring to the same list
>>> list1 = []
>>> list2 = list1

# += modifies the object pointed to by list1 and list2
>>> list1 += [0]
>>> list1, list2
([0], [0])

# + creates a new, independent object
>>> list1 = []
>>> list2 = list1
>>> list1 = list1 + [0]
>>> list1, list2
([0], [])
73
ответ дан 3 December 2019 в 00:37
поделиться

+ = - это оператор сложения на месте .

Это то же самое, что и cnt = cnt + 1 . Например:

>>> cnt = 0
>>> cnt += 2
>>> print cnt
2
>>> cnt += 42
>>> print cnt
44

Оператор часто используется аналогично оператору ++ в языках C-ish, чтобы увеличить переменную на единицу в цикле ( i + = 1 )

Существуют аналогичные операторы для вычитания / умножения / деления / мощности и другие:

i -= 1 # same as i = i - 1
i *= 2 # i = i * 2
i /= 3 # i = i / 3
i **= 4 # i = i ** 4

Оператор + = также работает со строками, например:

>>> s = "Hi"
>>> s += " there"
>>> print s
Hi there

Люди склонны рекомендовать против делать это из соображений производительности, но для большинства сценариев это действительно не проблема. Процитируем из документов "Типы последовательностей" :

  1. Если s и t обе строки, некоторые реализации Python, такие как CPython, обычно могут выполнять оптимизацию на месте для назначений вида s = s + t или s + = t. Когда это применимо, эта оптимизация делает квадратичное время выполнения гораздо менее вероятным. Эта оптимизация зависит как от версии, так и от реализации. Для кода, чувствительного к производительности, предпочтительно использовать метод str.join (), который обеспечивает согласованную производительность линейной конкатенации между версиями и реализациями.

Метод str.join () относится к выполнению следующего:

mysentence = []
for x in range(100):
    mysentence.append("test")
" ".join(mysentence)

.. вместо из более очевидного:

mysentence = ""
for x in range(100):
    mysentence += " test"

Проблема с последним (кроме начального пробела), в зависимости от реализации Python, интерпретатору Python будет приходиться делать новую копию строки в памяти каждый раз, когда вы добавляете (потому что строки являются неизменяемыми), что будет становиться все медленнее, чем длиннее добавляемая строка .. Принимая во внимание, что добавление в список, а затем его объединение в строку - это постоянная скорость (независимо от реализации)

Если вы выполняете базовые операции со строками, не беспокойтесь об этом. Если вы видите цикл, который в основном просто добавляет строку, рассмотрите возможность создания массива, а затем "". Join () его создания.

0
ответ дан 3 December 2019 в 00:37
поделиться
a += b

is в данном случае то же, что и

a = a + b

В этом случае cnt + = 1 означает, что cnt увеличивается на единицу.

Обратите внимание, что вставленный вами код будет повторяться бесконечно, если cnt> 0 и len (aStr)> 1 .

Править : цитата Карл Мейер : «[..] ответ вводит в заблуждение, в основном правильный.

25
ответ дан 3 December 2019 в 00:37
поделиться

Google 'python + = operator' приведет вас к http://docs.python.org/library/operator.html

Искать + = после загрузки страницы для более подробного ответа.

8
ответ дан 3 December 2019 в 00:37
поделиться

К вашему сведению: похоже, в вашем примере может быть бесконечный цикл ...

if cnt > 0 and len(aStr) > 1:
    while cnt > 0:                  
        aStr = aStr[1:]+aStr[0]
        cnt += 1
  • условие входа в цикл состоит в том, что cnt больше 0
  • цикл продолжает выполняться до тех пор, пока cnt больше 0
  • каждая итерация цикла увеличивает cnt на 1

В конечном итоге cnt будет всегда больше 0, и цикл никогда не завершится.

1
ответ дан 3 December 2019 в 00:37
поделиться

означает «добавить« ЭТО »к текущему значению»

пример:

a = «привет»; a + = "world";

печать now выдаст: "hello world"

-3
ответ дан 3 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

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