python 使用三引號時容易犯的小錯誤
請看如下代碼,執(zhí)行后,思考生成的兩個二維碼為什么不一樣?
# -*- coding:utf-8 -*-
from tkinter import *
from tkinter import ttk
from PIL import ImageTk
import qrcode
class QRcodeImage(object):
'''生成二維碼圖片類'''
def __init__(self, content, fcolor=None, bcolor=None, size=None):
'''
參數(shù)說明:
content:二維碼圖片的文本內(nèi)容
fcolor:二維碼圖片的前景色
bcolor:二維碼圖片的背景色
size:二維碼大小
'''
qr = qrcode.QRCode(version=2,
error_correction=qrcode.constants.ERROR_CORRECT_L, #容錯率
box_size=8,
border=2) # 實例化QRCode類,得到qr對象
qr.add_data(content) # 二維碼內(nèi)容添加到圖片中
qr.make(fit=True) # 圖片中的二維碼大小自適應(yīng),以保證二維碼內(nèi)容能完整繪制
if fcolor == None: fcolor = 'black' #默認(rèn)前景色為黑色
if bcolor == None:bcolor = 'white' #默認(rèn)背景色為白色
img = qr.make_image(fill_color=fcolor,
back_color=bcolor) #生成彩色二維碼圖片
img = img.convert(mode="RGBA") # 將圖片的模式轉(zhuǎn)換為彩色透明模式
if size == None: size = 150 #默認(rèn)圖片大小
self.img = img.resize((size, size))
def getPhotoImage(self):
'''轉(zhuǎn)換為PhotoImage'''
tkimg = ImageTk.PhotoImage(self.img)
return tkimg
def cvfill():
cv.create_window(200, 50, window=lbimg1, width=155, height=155,
anchor=NW,
)
cv.create_window(50, 50, window=lbimg2, width=155, height=155,
anchor=NW,
)
global img1
img1 = QRcodeImage(content).getPhotoImage()
lbimg1.config(image=img1)
content1='''BEGIN:VCARD
FN:steven
TITLE:Drector
TEL;TYPE=CELL:15201011234
NOTE:
END:VCARD '''
global img2
img2=QRcodeImage(content1).getPhotoImage()
lbimg2.config(image=img2)
root = Tk()
cv = Canvas(root, width='94m', height='54m', bg='#F0F8FF',
highlightbackground='gold',
highlightthickness=2,
)
cv.pack(pady=10)
lbimg1 = Label()
lbimg2 = Label()
content='''BEGIN:VCARD
FN:steven
TITLE:Drector
TEL;TYPE=CELL:15201011234
NOTE:
END:VCARD '''
cvfill()
mainloop()
執(zhí)行上述代碼,結(jié)果如下圖所示:

明顯兩個二維碼圖片不同,而出現(xiàn)這樣的差異的原因就出現(xiàn)在全局變量content和局部變量content1的賦值上。
content的賦值后的結(jié)果為:
content = BEGIN:VCARD\nFN:steven\nTITLE:Drector\nTEL;TYPE=CELL:15201011234\nNOTE:\nEND:VCARD
而content1的賦值后的結(jié)果為:
content1 = BEGIN:VCARD\n FN:steven\n TITLE:Drector\n TEL;TYPE=CELL:15201011234\n NOTE:\n END:VCARD
明顯content和content1的值的內(nèi)容不一樣,content1多了很多空格字符。造成這樣結(jié)果的原因就是因為在函數(shù)cvfill()中,三引號'''中的內(nèi)容從第二行開始進行了縮進,導(dǎo)致增加了很多縮進的空格,這是很容易犯的一個小錯誤,并且不易被注意到。
以上就是python 使用三引號時容易犯的小錯誤的詳細內(nèi)容,更多關(guān)于python 三引號的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決python3 json數(shù)據(jù)包含中文的讀寫問題
今天小編就為大家分享一篇解決python3 json數(shù)據(jù)包含中文的讀寫問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python pyinstaller實現(xiàn)圖形化打包工具
這篇文章主要介紹了一個使用Python PYQT5制作的關(guān)于pyinstaller打包工具,代替?zhèn)鹘y(tǒng)的cmd黑窗口模式打包頁面,實現(xiàn)更快捷方便的python打包體驗,希望對大家有所幫助2025-01-01
python numpy linspace函數(shù)使用詳解
本文介紹了Python Numpy庫中的linspace函數(shù),該函數(shù)用于生成均勻分布的數(shù)值序列,通過示例和詳細參數(shù)解釋,幫助讀者理解如何使用linspace函數(shù),最后,對比了linspace和arange函數(shù)之間的主要差異,感興趣的朋友跟隨小編一起看看吧2024-12-12

