python 父路径_学习 Python 编程的三种困境

b7ee4765ce9e31fe59e5cb2f3d422b5b.gif

后台回复「sylan215」、「简历」,获精华电子书

阅读本文大概需要 5 分钟。

之前我写过两篇关于测试人员要不要学编程的文章,有很多朋友留言给我说,我也很想学呀,可是我办不到呀。

前两篇文章链接如下,没看过的可以尽快回顾下: 

《做软件测试到底要不要学编程?》 

《技术导向下的业务测试何去何从?》

我理解办不到的原因,因为我全部都亲身感受过,现在我把最突出的几个困境汇总了一下,我们来分别聊一聊。

困境一:一学就会,一写就懵。

学过 Python 的同学,肯定都学习过列表、元组,如果是通过菜鸟教程学习的话,肯定都学习过列表和元组的访问、修改和删除操作。

不知道有多少人还记得第一次看这部分内容的感觉,反正我的感觉是「很简单嘛,和想象中差不多」,那几个操作已经很熟悉了。

有一次我在处理一个字符串拼接,我是用的元组,然后我 append 半天,总是报错,我记得很清楚呀,我学习的时候明明是有这个方法的呀,为毛就是不行呢?

等我回去仔细一看,嘿,append 竟然是列表的方法,这知识点简单么?忒简单了,可以信手拈来么?不行。

举例这个已经是最简单的部分了,类似的我还在多个元素拼接上吭哧过半天,才发现元组必须和元组类型进行拼接,不然也是报错。

如果需要两个元组拼接后不是合成一个元组,而是形成一个新的复合型元组,那就更要纠结一会了。

看完我上面说的是不是觉得很简单,请动手写一写,或者回忆下自己当初是怎么解决这些问题的。

古人云「看书如流水,编码如便秘」,甚是。

建议解决方案:多动手实操练习,真的能熟能生巧噢。

困境二:原样照抄我会,稍加变通就懵。

我之前很多的脚本都是 python2.6 写的,因为 py2 已经不更新了,所以我正尝试逐步改为 py3。

有一次我拿一个简单的脚本试试效果,脚本功能很简单,就是把一个 PE 文件内容使用文本方式读取出来,然后暴力搜索其中是否存在某指定字符串,并得出搜索结果。

py2 读取文件内容的写法是:

def test_readfile2(filepath):    """读取文件内容    Args:        filepath:目标文件全路径    Returns:        context:读取到的文件内容    """    with open(filepath, 'r') as obj:        context = obj.read()    return context

同样的写法,在 py3 中执行会报错:

UnicodeDecodeError: 'gbk' codec can't decode byte 0x90 in position 2: illegal multibyte sequence

根据之前弱弱的经验,一看也知道是编码的问题,但是我反复的 encode 或者 decode,都是无济于事。

明明知道是很简单的问题,但就是搞不定,那种无奈,实在是很无奈。

一次偶然的机会,终于知道了解法,方法果然很简单:

def test_readfile3(filepath):    """读取文件内容    Args:        filepath:目标文件全路径    Returns:        context:读取到的文件内容    """    with open(filepath, 'r', errors='ignore') as obj:        context = obj.read()    return context

仅仅是加了一个参数 errors,一切都搞定了,是不是有种豁然开朗的感觉。

建议解决方案:只有自己亲自踩过的坑才是真的坑,一定要多动手实操练习,了解每一种变通的可能

困境三:基本用法会,稍微进阶就懵。

用 Python 写 GUI 的同学,应该有部分是使用的 wxPython 这个库,反正我是用的这个。

如果只是写个主界面,大家都会定义一个主窗口类,比如 MainClass 之类的,其他控件也可以按教程一步步操作实现。

有次我需要在主界面之外加一个设置窗口,同时设置项更新后,主界面要立刻响应。

这个响应函数我是写到主窗口的类里面的,搞了半天,我就是不知道怎么在子窗口类中调用父窗口类里面的方法,网上也搜了很久,就是没找到有类似的问题以及解决方案。

明明知道是很简单的问题,但就是搞不定,那种无奈,实在是很无奈。

后来仔细看了网上的一些实现的例子,发现可以在父窗口类中把 self 作为参数传递给子窗口,子窗口再通过这个 self 来进行父窗口类中方法的调用,完美解决。

同样的回过头看看解决方法,真的是很简单,而且也确实给人豁然开朗的感觉,但这又明明就是一个稍微进阶了一下的基本用法而已。

不动手时不知道自己有多弱,上手后才追悔莫及。

建议解决方案:多动手实操练习,每一个遇到的问题,都是自我进阶的阶梯

以上,我通过三个简单的例子,说明了自己在学习 Python 编程中碰到的问题,如果是初阶的同学,应该会感同身受,欢迎也留言说说你曾经碰到的那些坑,如果是高阶的同学,可以留言说下自己的学习经验,让我们也学习下。

当然,如果你认可我的观点,请帮忙转发 + 点个「在看」让更多人看到,谢谢。

感谢你的分享、转发和在看,我准备了一个抽奖,6 月 13 号上午 8 点 30 分自动开奖。

请长按下图关注公众号后,在后台对话框回复「0611」获取抽奖链接入口。

ffd5a33892498669bac0fcb32c6c78c7.png

推荐阅读:

内存不足导致 nginx 崩溃的原因分析

龙妈的善良和软件测试的关系

年中总结

软件测试(原书第二版)

致青春

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值