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 相关文章推荐
Python程序员开发中常犯的10个错误
Jul 07 Python
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python中的sort()方法使用基础教程
Jan 08 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
Pandas 合并多个Dataframe(merge,concat)的方法
Jun 08 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 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实现按照权重随机排序数据的方法
2015/01/09 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
学生宿舍管理制度
2014/01/30 职场文书
2014年高考决心书
2014/03/11 职场文书
网络管理员岗位职责
2014/03/17 职场文书
开学寄语大全
2014/04/08 职场文书
爱情寄语大全
2014/04/09 职场文书
防灾减灾标语
2014/10/07 职场文书
新郎答谢词
2015/01/04 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
PHP设计模式(观察者模式)
2021/07/07 PHP
Python操作CSV格式文件的方法大全
2021/07/15 Python
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis