对着屏幕发呆的时候,脑子里反复在想python怎么调用函数这件事,明明照着别人写的样子敲,运行出来就是不对,控制台飘着红色的提示,看的人心里发闷。
最开始以为写好函数名字,直接写上去就能跑,定义部分老老实实写了def,里面放了简单的计算逻辑,写完之后,在下一行只敲了函数名,没有带上后面那一对括号。点运行,界面安安静静,没有报错,也没有任何预想里的输出,等了好一会,还是一点动静都没有。那会根本分不清,到底是代码没读到这一行,还是函数本身写的有毛病,来回拖动滚动条,翻来覆去对比定义的位置,来回改里面的变量,折腾快半个钟头,还是找不到头绪。
旁边一起捣鼓代码的人扫了一眼,随口说了一句,调用的时候要加括号。
当时半信半疑,试着在函数名字末尾敲上(),再一次执行,结果一下子就出来了。就是这么简单的地方卡住,之前完全没有这个意识,总觉得名字写对了就可以,括号好像只是一个无关紧要的装饰,反正定义的时候有就行,哪知道调用环节少了它,代码只是识别到这是一个函数对象,不会主动去执行里面的内容。
然后又乱试别的情况,试着往括号里面塞内容,有的参数数量和定义对不上,一跑直接抛出异常,文字长长的,看不太明白,只知道是传的东西不对。有一回定义的时候写了两个形参,调用的时候只给了一个,程序直接停下,那时候才隐约察觉到,不是加上括号就万事大吉,给进去的东西,也得和写好的要求对上才行。反正那段时间,一会忘括号,一会参数多一个少一个,一会又把调用写在了def定义的前面,代码一跑就报错,来回来回的改,心态时好时坏。
有次还碰到带返回值的函数,调用完直接放那,不去接收结果,屏幕上同样看不到东西。之前以为只要调用了,就会自动打印内容,后面才反应过来,函数里面没有print的话,就算成功调用,返回的东西不会自己显示出来,要么拿个变量接住,要么调用的时候套上打印语句。那段时间分不清什么时候会出输出,什么时候只是默默算出一个值藏起来,很多次明明调用成功了,却误以为代码失效,反复重新敲一遍一模一样的调用语句。
很多细碎的小问题混在一起,没有一条清晰的路子,只是凭着试错往前摸。有的时候改完一处,报错换了一行,又要重新猜是哪一块出问题,控制台的提示文字看多了,慢慢能认出一点点信号,可也只是刚好够解决眼前这一行代码,换一个写法,又会卡在别的地方。
仅代表我个人当时碰到的情况,不同的写法、不同版本的运行环境,体验会存在差异。
那天夜里关掉编辑器的时候,光标停在那行带括号的调用代码上,没有再继续往下写别的逻辑。