python困境_学习 Python 编程的三种困境
之前我写过两篇关于测试人员要不要学编程的文章,有很多朋友留言给我说,我也很想学呀,可是我办不到呀。
前两篇文章链接如下,没看过的可以尽快回顾下:
《做软件测试到底要不要学编程?》
《技术导向下的业务测试何去何从?》
我理解办不到的原因,因为我全部都亲身感受过,现在我把最突出的几个困境汇总了一下,我们来分别聊一聊。
困境一:一学就会,一写就懵。
学过 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 编程中碰到的问题,如果是初阶的同学,应该会感同身受,欢迎也留言说说你曾经碰到的那些坑,如果是高阶的同学,可以留言说下自己的学习经验,让我们也学习下。
当然,如果你认可我的观点,请帮忙转发 + 点个「赞」让更多人看到,谢谢。
python困境_学习 Python 编程的三种困境相关推荐
- java范式_【java编程】三种非主流的编程范式?
原标题:[java编程]三种非主流的编程范式? [Java培训]:的小编在一些平台上看到的高端的编程技巧,今天给大家介绍相应的三种编程范式,在编程中就提到了提到了不少小众语言,在这里小编希望借此让大家 ...
- 小白的第一本python书_学习《编程小白的第一本python入门书》
---恢复内容开始--- open打开一个txt文件,如果不存在则创建 1 file=open('/Users/Administrator/Desktop/file.txt','w')2 file.w ...
- python作品_学习 Python 有些枯燥?那是你学错方法了,看这里
有没有觉得学习Python有些无聊乏味?觉得Python很没意思?如果是的话,那是你没找到好的学习方法! Python编程中的Turtle(海龟绘图).Pygame非常利于初学者的学习,你可以使用它们 ...
- python忠告_学习Python一段时间,老司机给上路新手的3点忠告!
在你学习编程的过程中,是否有过以下经历,或正在面临类似的局面:网上找了很多资料,不知道从哪里看起 买了本书,过了很久也没有看完第一章 开始还能跟着写几行代码,后来突然就看不懂了 也看了些教程和视频,似 ...
- macbookpro可以自学python吗_学习python,office等,是否推荐购买macbookpro?
其实你写下这个问题的时候你心里已经有答案了吧 先说结论 荷包够大 上mac 不然就上windows 对于初学者来说 入门你用哪个平台都可以 先来看一下macbookpro 能给你带来什么 首先对于py ...
- python最佳编程_学习 Python 的最佳方式
原标题:学习 Python 的最佳方式 Python 是世界上功能最多且最强大的编程语言之一.使用 Python,你可以编写自己的应用程序,创建游戏.设计算法.甚至编程一个机器人.学习 Python ...
- 学python必须得英语精通吗_“学习python必须精通的几个模块“
python中都有哪些模块呢 这就多了你,文档有每个模块介绍: https://docs.python.org/2/library/index.html 如果了您的问题请采纳! 如果未解继续追问 如何 ...
- 为什么学习Python?选择学习Python的10个理由
前言 为什么学习Python?选择学习Python的10个理由 Python提供了许多有用的功能特性,这些功能使其相比其他编程语言更流行也更易于学习.它支持面向对象的编程,也支持面向过程编程:我们在下 ...
- 复旦大学python培训_复旦大学Python之子高质量解读:Python400集视频教程+python电子书大合集...
Python 简介: Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具 ...
最新文章
- 17.Java5的Exchanger同步工具
- 为了成长,我所做的一些努力!
- Kubernetes — Project Layout 与 cmd 入口设计
- 200余行代码,让你实时从视频中隐身
- 二分查找算法及其变种
- 《必然》九、享受重混盛宴,是每个人的机会
- 电商标识检测的鲁棒性防御,ACM MM2021 安全AI大赛技术解析
- Java中使用JNA实现全局监听Linux键盘事件
- Thinkphp3.2 中使用find_in_set
- 最佳展示场景kit:顶部视角的展示场景(Mockups)
- 经典卷积神经网络的学习(三)—— Inception Net
- CodeForces 489B (贪心 或 最大匹配) BerSU Ball
- 量子纠缠可能是真实存在
- IOS 腾讯微博开放平台 SDK 初体验
- 学历学籍管理系统-MVC和工厂模式实现学籍查询与录入
- CC2640R2FRSMR低功耗M3内核蓝牙MCU
- DINO:2022.3_SOTA_COCO_DETR
- geforce rtx3090显卡安装cuda11.0
- git把一个分支的commit merge到另外一个分支
- 远程访问双层嵌套Openstack云下的Windows虚机(by quqi99)