ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

学习 Python 编程的三种困境

2021-06-17 21:55:04  阅读:230  来源: 互联网

标签:窗口 读取 filepath Python 编程 元组 困境 context 简单


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

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

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

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

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

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

学过 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 编程中碰到的问题,如果是初阶的同学,应该会感同身受,欢迎也留言说说你曾经碰到的那些坑,如果是高阶的同学,可以留言说下自己的学习经验,让我们也学习下。

标签:窗口,读取,filepath,Python,编程,元组,困境,context,简单
来源: https://blog.51cto.com/sylan215/2919584

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有