问题背景
今天准备用python写个mysql连接脚本,实现脚本执行sql语句,哪知脚本写好了运行时一直报一个mysql连接入参类型错误的提示,提示我host这个变量取值不是str类型,仔细检查一番,cfg配置的类型没错啊,下面是引用配置文件的地方,乍一眼也看不出来问题。
原因查找
为了找到原因,于是开始debug,如下图
确是类型有问题,但是为啥只有最后一个变量类型是对的呢?
我再次陷入迷茫,并且开始怀疑人生,查了半天类型定义方式、面向对象的语法,排除了所有可能之后依然百思不得其解;
古人诚不欺我也,“不识庐山真面目,只缘身在此山中”,我转头向同行发出援助,没想到同行马上发现了问题所在:
python3.6定义变量的语法有点问题,前面几个变量定义代码行每个变量的值后面都多了一个逗号,python会将变量值后有逗号的变量解析为“tuple”
解决办法
发现了问题之后,马上把逗号去掉在此debug,果然变量的类型正确了!
结语
用其他语言比如Java、Go等编程时,我们经常都会因为少了一个逗号、分号、括号引起很多的报错,然而python作为一种解释型语言,在语法格式上常犯的错误则是:缩进不正确,多了逗号、分号或空格,需要养成良好的编程习惯才能减少bug的产生。