python中π怎么表示|借助模块调取数值是常用方式
上次赶项目写圆面积批量运算,卡在python中π怎么表示这件事上,随手先敲了一串3.1415926写进代码里,那会总想着图省事,懒得翻手边存的电子笔记文档,鼠标在代码编辑器上边悬了好半天,一会点开浏览器闲置的标签页,一会又切回脚本页面来回磨蹭,明明两三行代码就能搞定的内容,硬生生耗掉小半个钟头,明明心里清楚手动填数值不稳妥,拖沓的性子还是逼着自己先凑合用现成小数。
手动填小数弊端很明显。
那天算批量圆环体积,几百组半径参数批量导入程序,全部用自己手打出来的π近似值运算,导出excel报表之后逐项核对数据,数值末尾几位小数全都对不上预设标准,对着密密麻麻的表格逐行翻看,越比对心里越烦躁,起先下意识怀疑是循环语句缩进出错,反复调整for循环的代码层级,删掉多余空格又重新补齐格式,折腾大半天才反应过来,人工录入的圆周率位数有限,截断后的小数在大批量迭代计算里误差会持续叠加,原本想着少导入模块、精简代码加快运行速度,反倒因为这点偷懒,整批运算结果都失去参考意义,那段写了大半天的代码最后只能全部回滚重写,白白浪费了一下午的空闲时间。
身边同组的程序员之前为了省去导入模块的步骤,在脚本开头自行定义pi=3.1415926535,做日常简单的课堂例题、小工具计算勉强够用,可碰到高精度的测绘几何仿真需求,这种自定义写法立刻就暴露出短板,他那次对接小型测绘测算需求,甲方硬性要求结果保留十五位有效数字,自定义的常数达不到对应精度标准,临时在工作群里反复发消息询问可行方案,来回拉扯大半天才敲定改用系统自带模块调取原生π值。
后来断断续续试过两种主流调取路径,先是导入math模块,在代码最上方写上import math之后,后续代码里直接调用math.pi就能拿到系统内置的标准圆周率,这个数值的精度适配绝大多数常规工程计算、日常数学运算场景,平常写小程序算圆形周长、球体体积全都够用,偶然一次接手超高精度的物理仿真测算,普通math库里的π满足不了小数点后几十位的运算要求,又翻找资料摸索到decimal库和numpy模块,numpy.pi同样可以调取圆周率,只是两个模块适配的运行环境不一样,numpy更偏向数组批量运算,要是本地脚本没有提前安装numpy依赖包,直接运行代码就会弹出模块缺失的报错提示,之前试过没提前配置运行环境,复制别人的成品代码粘贴运行,弹窗报错之后又跳转终端下载相关依赖,前前后后耗费不少零碎时间,慢慢靠着一次次踩错分清不同业务场景该挑选哪一种调取方式。
那个、反正有时候临时写几行测试代码,不想在文档开头额外添加导入语句,心里明明记着调用规则,可拖沓的毛病总让自己写完完整运算代码,快要点击运行的瞬间才猛然想起忘了导入对应模块,只能回过头在脚本最上方补写导入代码,频繁来回修改开头内容。
还有一次午休抽空在交互终端调试公式,不用新建完整py文件,打开python交互式黑框界面,直接输入import math,再输入math.pi回车就能即时在屏幕上跳出准确数值,不用保存文档反复运行调试,刚好用来临时验算课本上的几何例题,那回就是靠着交互终端快速调取π值,省去新建文档、保存文件的繁琐步骤。
不少刚入门编程的新人,下意识都是手动录入近似小数,很少第一时间想到调用内置常数,我自己刚接触python那大半年也是反反复复在手动赋值和模块调用之间来回摇摆,一会嫌导入代码多余占用篇幅,一会又被精度误差逼着全盘修改代码,来回反复磨出来实打实的实操感受,没有哪一种写法能适配全部使用场景。
收拾桌面的时候,指尖碰到边角卷边的编程笔记,纸上还划着当初写错的自定义pi数值。