這個問題在這里已經有了答案: Python中單個下劃線“_”變數的目的是什么? (5 個回答) 11 小時前關閉。
我正在閱讀一篇文章(https://www.techgeekbuzz.com/blog/how-to-read-emails-in-python/),該文章描述了如何使用 python 閱讀電子郵件,現在它使用 _,然后在這里宣告一個變數是代碼:
#modules
import imaplib
import email
#credentials
username ="[email protected]"
#generated app password
app_password= "aqwertyuiopasdfa"
# https://www.systoolsgroup.com/imap/
gmail_host= 'imap.gmail.com'
#set connection
mail = imaplib.IMAP4_SSL(gmail_host)
#login
mail.login(username, app_password)
#select inbox
mail.select("INBOX")
#select specific mails
_, selected_mails = mail.search(None, '(FROM "[email protected]")')
#total number of mails from specific user
print("Total Messages from [email protected]:" , len(selected_mails[0].split()))
for num in selected_mails[0].split():
_, data = mail.fetch(num , '(RFC822)')
_, bytes_data = data[0]
#convert the byte data to message
email_message = email.message_from_bytes(bytes_data)
print("\n===========================================")
#access data
print("Subject: ",email_message["subject"])
print("To:", email_message["to"])
print("From: ",email_message["from"])
print("Date: ",email_message["date"])
for part in email_message.walk():
if part.get_content_type()=="text/plain" or part.get_content_type()=="text/html":
message = part.get_payload(decode=True)
print("Message: \n", message.decode())
print("==========================================\n")
break
為什么_,每次我洗掉它時都會使用它,它會給出一個錯誤,所以我只想知道它的作用。
謝謝!!
uj5u.com熱心網友回復:
我認為您的問題不清楚,因為它似乎是在詢問變數名稱中的前導下劃線,但您提供的示例代碼是一個變數 who's who name is just _。
在前者的情況下_myVariable,根據 PEP8,變數名稱中的前導下劃線(例如。)表示該變數只能在內部使用。Python 沒有強制訪問修飾符的概念(想想 Java 中的:public等private),所以這些東西是通過命名約定來暗示的(例如變數名中的前導下劃線。您可能也有興趣閱讀有關dunder 變數的內容) .
對于后者(單個_),我認為這是為了清楚地表明此代碼的撰寫者無意實際使用此變數,它確實如此有效。至于為什么必須在代碼中包含它,以及為什么洗掉它會破壞代碼,這是因為無論您是否要使用該變數,該函式都會回傳兩個值,如您在此處的檔案IMAP4.search(...)中所見。
uj5u.com熱心網友回復:
你看到的只是解包一個元組,比如
var1, var2 = (123, 345)
這_只是一個變數名。但是,它用于指示該變數未在任何地方使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/522246.html
標籤:Python变量
