Bug一个接一个 Pythonp频频报错 竟然是因为?

 

Python,你应该小心的逗号!一步错步步错

昨天在跑程序时,突然发现抛出了一个莫名其妙的错误,查看日志如下图所示:

 

百思不得其解,因为这里调用的是别的接口,之前测试直接写死,也没有报错,为何多了一个莫名其妙的tuple出来。

调用的参数通过Flask的配置文件传入。

 

配置文件如下图:

彩蛋!!!

需要下面的资料的,还有更多课件资源的,请私信我“666”领取!!!

私信我还有更多惊喜哦!!!

结合我的标题,看到这里还没明白哪里出错的同学,请手动点赞。

 

打开调试模式。打断点调试到这里,我发现通过配置文件取到的变量应该是Str类型的都变成了tuple类型。

 

经过十几分钟的仔细观察我才发现我的配置文件,还有函数中取配置参数的地方,不小心多加了个逗号:

 

原来原因出在这里,字符串后面直接跟逗号会把字符串变成一个长度为1的元组。

 

这种用法,平常不是很常见,而且逗号好小,之所以会多出逗号,是我之前直接dict 中复制到配置文件中,忘记删除逗号,而且(逗号好小)。

逗号除了这种不常见的用法,还有在Print输出时,可以拼字符串。可以在函数返回多个值时,作为分隔符来使用。

 

例如:到一个 Python 字符串的坑,记录一下。看看下面这些代码

 

>>> a = [... 'foo'... 'bar',... 'tree'... ] >>>>>> b = 'foo' 'bar' >>>>>> print a['foobar', 'tree'] >>> print bfoobar>>>

注意列表 a 第1个元素后面漏掉了一个 , 这很容易看走眼吧。而且最最关键的竟然是没有语法错误,而且 PyCharm 也没有提示有什么错误。

查了一下原来这是一个 Feature

只要把两个字符串放在一起,中间有空白或者没有空白,两个字符串自动连接为一个字符串。

也就是说 'foo' + 'bar' 等价于 'foo' 'bar'

再来看另外一个例子,注意第二行后面的逗号

>>> a = {'foo': 'bar'} >>> b = a.get('foo'), >>> c = a.get('foo')>>> print(b)('bar',) >>> print(c)bar>>>

本来 b 应该是一个字符串,结果硬是变成了元组。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值