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


Posted in Python onOctober 21, 2020

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

# -*- 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()

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

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

明显两个二维码图片不同,而出现这样的差异的原因就出现在全局变量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 三引号的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
python实现的系统实用log类实例
Jun 30 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
Python 学习教程之networkx
Apr 15 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
Python利用socket模块开发简单的端口扫描工具的实现
Jan 27 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 #Python
基于python爬取链家二手房信息代码示例
Oct 21 #Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 #Python
Python为何不支持switch语句原理详解
Oct 21 #Python
基于Python爬取素材网站音频文件
Oct 21 #Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 #Python
运行Python编写的程序方法实例
Oct 21 #Python
You might like
PHP.MVC的模板标签系统(三)
2006/09/05 PHP
PHP 图片上传实现代码 带详细注释
2010/04/29 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
javascript 函数速查表
2010/02/07 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
python实现神经网络感知器算法
2017/12/20 Python
python3中函数参数的四种简单用法
2018/07/09 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
积极分子思想汇报
2014/01/04 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
2014最新实习证明模板
2014/10/02 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
Python实现8种常用抽样方法
2021/06/27 Python