python 2.7 TypeError: tip de operand greșit pentru unary +: ‘str’ (Programare, Python, Python 2.7)

Marco Dinatsoli a intrebat.

acesta este codul meu

message = "From: %sr
" % fromaddr
        + "To: %sr
" % toaddrs
        + "CC: %sr
" % ",".join(cc)
        + "Subject: %sr
" % message_subject
        + "r
" 
        + msg

Primesc această eroare:

    + "To: %sr
" % toaddrs
TypeError: bad operand type for unary +: 'str'

puteți să mă ajutați, vă rog

1 răspunsuri
Matthew Drury

Pentru a rezolva problema ta, înfășoară întreaga expresie pentru mesaj în paranteze:

message = (
      "From: %sr
" % fromaddr
    + "To: %sr
" % toaddrs
    + "CC: %sr
" % ",".join(cc)
    + "Subject: %sr
" % message_subject
    + "r
" 
    + msg
)

Mesajul de eroare pe care îl dă python este destul de util. Operațiile unare sunt cele care au exact un singur argument. + poate fi folosit ca o operație unară în python,

x = + 2

este un cod valid. Ceea ce se întâmplă în fragmentul dvs. este că prima linie:

message = "From: %sr
" % fromaddr

este interpretată ca o instrucțiune de atribuire completă. Următoarea linie începe o nouă declarație, dar este incompletă.