python 使用三引号时容易犯的小错误

 更新时间:2020年10月21日 11:53:39   作者:荒野游侠  
这篇文章主要介绍了python 使用三引号时容易犯的小错误,帮助新手学习,避免入坑,感兴趣的朋友可以了解下

请看如下代码,执行后,思考生成的两个二维码为什么不一样?

# -*- 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):
    '''
    参数说明:
    content:二维码图片的文本内容
    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) # 二维码内容添加到图片中
    qr.make(fit=True) # 图片中的二维码大小自适应,以保证二维码内容能完整绘制
    if fcolor == None: fcolor = 'black' #默认前景色为黑色
    if bcolor == None:bcolor = 'white' #默认背景色为白色
    img = qr.make_image(fill_color=fcolor,
              back_color=bcolor) #生成彩色二维码图片
    img = img.convert(mode="RGBA") # 将图片的模式转换为彩色透明模式
    if size == None: size = 150 #默认图片大小
    self.img = img.resize((size, size))

  def getPhotoImage(self):
    '''转换为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()

执行上述代码,结果如下图所示:

明显两个二维码图片不同,而出现这样的差异的原因就出现在全局变量content和局部变量content1的赋值上。

content的赋值后的结果为:

content = BEGIN:VCARD\nFN:steven\nTITLE:Drector\nTEL;TYPE=CELL:15201011234\nNOTE:\nEND:VCARD

而content1的赋值后的结果为:

content1 = BEGIN:VCARD\n  FN:steven\n  TITLE:Drector\n  TEL;TYPE=CELL:15201011234\n  NOTE:\n  END:VCARD

明显content和content1的值的内容不一样,content1多了很多空格字符。造成这样结果的原因就是因为在函数cvfill()中,三引号'''中的内容从第二行开始进行了缩进,导致增加了很多缩进的空格,这是很容易犯的一个小错误,并且不易被注意到。

以上就是python 使用三引号时容易犯的小错误的详细内容,更多关于python 三引号的资料请关注脚本之家其它相关文章!

相关文章

  • Ubuntu下升级 python3.7.1流程备忘(推荐)

    Ubuntu下升级 python3.7.1流程备忘(推荐)

    这篇文章主要介绍了Ubuntu下升级 python3.7.1流程备忘,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • Python中Numpy的深拷贝和浅拷贝

    Python中Numpy的深拷贝和浅拷贝

    这篇文章主要介绍了Python中Numpy的深拷贝和浅拷贝,通过讲解Python中对Numpy数组操作的浅拷贝和深拷贝的概念和背后的原理展开全文,需要的小伙伴可以参考一下
    2022-05-05
  • python IDLE 背景以及字体大小的修改方法

    python IDLE 背景以及字体大小的修改方法

    这篇文章主要介绍了python IDLE 背景以及字体的修改方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 解决python3 json数据包含中文的读写问题

    解决python3 json数据包含中文的读写问题

    今天小编就为大家分享一篇解决python3 json数据包含中文的读写问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python元组及文件核心对象类型详解

    Python元组及文件核心对象类型详解

    本篇文章主要给大家详细讲述了Python核心对象类型之元组及文件的相关内容,对此有兴趣的学习下。
    2018-02-02
  • Python实现为pdf添加水印功能

    Python实现为pdf添加水印功能

    这篇文章主要介绍了Python实现给普通PDF添加水印的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Python pyinstaller实现图形化打包工具

    Python pyinstaller实现图形化打包工具

    这篇文章主要介绍了一个使用Python PYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的python打包体验,希望对大家有所帮助
    2025-01-01
  • python实现高斯(Gauss)迭代法的例子

    python实现高斯(Gauss)迭代法的例子

    今天小编就为大家分享一篇python实现高斯(Gauss)迭代法的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python 实现字符串中指定位置插入一个字符

    Python 实现字符串中指定位置插入一个字符

    下面小编就为大家分享一篇Python 实现字符串中指定位置插入一个字符,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python numpy linspace函数使用详解

    python numpy linspace函数使用详解

    本文介绍了Python Numpy库中的linspace函数,该函数用于生成均匀分布的数值序列,通过示例和详细参数解释,帮助读者理解如何使用linspace函数,最后,对比了linspace和arange函数之间的主要差异,感兴趣的朋友跟随小编一起看看吧
    2024-12-12

最新评论