同时兼容Python2和Python3的字符串判断语句

本文介绍了如何在Python2和Python3之间编写兼容的字符串判断语句。作者遇到的问题是在Python3环境中,经过转换的代码因缺少Unicode类型导致错误。通过分析Python2和Python3的字符串处理差异,提出了一种新的判断思路,即忽略字符串的具体类型,只判断其是否为字符串。最终,作者给出了实现兼容性的代码示例,并提供了相关资源链接供读者进一步学习。
摘要由CSDN通过智能技术生成

文章信息

作者:史晨 Charles Shih
创建时间:2018年08月24日

问题描述

我之前写过一个测试脚本,解释器用的是Python2.7,在RHEL7上用起来是没有问题的。但是最近要在RHEL8上进行这个测试,RHEL8采用的Python解释器是Python3,因此我的脚本不能直接运行在RHEL8上。

现在的现实情况如下:
1. RHEL7默认只安装了Python2的解释器;
2. RHEL8默认只安装了Python3的解释器;
3. 脚本需要同时兼容Python2和Python3解释器,因为没必要维护两份代码;
4. 测试框架尽量保持简洁,尽量少改动被测试系统的软件部署,因此不会为RHEL7安装Python3也不会为RHEL8安装Python2;

出问题的语句最开始是:

if not isinstance(params['backend'], (unicode, str)):

经过2to3(官方的代码升级工具)转换后变成了:

if not isinstance(params['backend'], str):

这是因为Python3当中没有Unicode这种类型。因此,如果2to3不把unicode优化掉的话,代码在Python3中就会直接报错。

但是经过转换的语句在Python2.7解释器下,当params['backend']为Unicode时,就会出现误判ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值