Как сделать переменное присвоение внутри некоторое время (выражение) цикл в Python?

Этот является проблемой кода, а не проблемой сети.

Вы подключаетесь к порту 465, который обычно используется для неявного TLS (т. Е. Он ожидает немедленной передачи TLS), известного как SMTPS, но вы не сказали PHPMailer сделать это, поэтому он просто повесить, как вы видите. Исправьте это, установив этот режим TLS:

$mail->SMTPSecure = 'ssl';
15
задан kenorb 23 May 2015 в 19:34
поделиться

3 ответа

from functools import partial

for name in iter(partial(raw_input, 'Name:'), ''):
    do_something_with(name)

или если Вы хотите список:

>>> names = list(iter(partial(raw_input, 'Name: '), ''))
Name: nosklo
Name: Andreas
Name: Aaron
Name: Phil
Name: 
>>> names
['nosklo', 'Andreas', 'Aaron', 'Phil']
15
ответ дан 1 December 2019 в 01:06
поделиться

Нет, извините. Это - FAQ, объясненный хорошо здесь:

В Pydocs, и блог .

Fredrik Lundh причиной того, что не было позволено присвоение в выражениях Python является общая, дефицитная ошибка на тех других языках.

Много альтернатив были предложены. Большинство - взломы, которые сохраняют некоторый ввод, но используют произвольный или загадочный синтаксис или ключевые слова, и приводят простой критерий к сбою предложений по изменению языка: это должно интуитивно предложить прямое значение читателю, который еще не был представлен конструкции.

интересное явление - то, что самые опытные Python программисты распознают while True, идиома и don’t, кажется, отсутствуют, присвоение в выражении создают много; it’s только вновь прибывшие, которые выражают сильное требование добавить это к языку.

There’s альтернативный способ записать это, которое кажется привлекательным:

line = f.readline() while line:
    ... # do something with line...
    line = f.readline()
9
ответ дан 1 December 2019 в 01:06
поделиться

Можно перенестись raw_input() для превращения его в генератор:

def wrapper(s):
    while True:
        result = raw_input(s)
        if result = '': break
        yield result

names = wrapper('Name:')

, что означает, что мы возвращаемся к начальной ситуации, но с более сложным кодом. Таким образом, если необходимо перенести существующий метод, необходимо использовать подход nosklo.

13
ответ дан 1 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

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