iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >聊聊技术写作的个人体会
  • 344
分享到

聊聊技术写作的个人体会

技术 2023-01-30 23:01:45 344人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

有群友问过,是什么原因使我开始写技术公众号,又是什么动力让我坚持写的。 在我看来,写作是一件不能敷衍的事,通过写作来学习,反而要比单纯地学习的效果要好。为了写成一篇“拿得出手”的文章,我要反复查找资料,阅读与思考,拆解与整合,最终写成的

有群友问过,是什么原因使我开始写技术公众号,又是什么动力让我坚持写的。

在我看来,写作是一件不能敷衍的事,通过写作来学习,反而要比单纯地学习的效果要好。为了写成一篇“拿得出手”的文章,我要反复查找资料,阅读与思考,拆解与整合,最终写成的时候,也是知识的拼图成型的时候。

所以,对我来说,写作是一种咀嚼信息而后提炼知识,最终拓展成技能与认知的过程。虽然这个过程很缓慢,但曾经的急进方式并没有速成的效果啊,不妨就这样一文章一脚印地试试看咯。

除此之外,还有一个很重要的原因。文章是一种公共对话的媒介,它是一个展示的窗口,也是一个接收反馈的通道。通过写作,我有了跟其它学习者对话的机会。

看书学习可能只是个人的事情,但是,在写作平台上发布文章,这就超越了个人行为——你得随时准备着被批评、或者被请教、或者被误解、甚至是被无视(这是最常见的结果)。

我享受写作文章,来跟其他处在相同处境的同学们交流,来向更优秀的大牛们学习取经。

这就是我目前写技术文章的一些个人体会吧。

对于上面提到的第二个原因,我最近颇有感触,想要多聊一些。为了更有针对性,本文姑且限定一个话题吧,那就是“写作技术文章,如何看待他人的批评/意见”。

1、主观性的意见

有些声音其实只是主观看法,我认为可以和而不同。

主观世界往往没有确切的对错之分,毕竟——思想无罪

面对主观性的意见,我认为要做到有理有据,坚持一点个性,最后会得到别人的尊重。

比如,在翻译 python 社区的七种治理模式的时候,有一个提案是“Python Governance Model Lead by Trio of Pythonistas”,我将它翻译成“三巨头治理模式”。有同学就指出,“Trio”应该翻译成“三人组”或者“三重奏”,翻译成“三巨头”是什么意思?

这种留言,我认为是主观性的意见,应求同存异。

我之所以这么翻译,一方面考虑,它要替代的是“终身仁慈独裁者”,三巨头对独裁者,意味深长;另一方面,我脑子里总想着一个皇帝死了,然后政权被三个摄政大臣把持,这种政治画面挥之不去,虽然是不着边际,但挺有趣味,所以我不肯放弃这“三巨头”的译法。

主观性的意见带入了提出者的个人知识背景、思想结构、以及话语习惯等等,我觉得要先尝试交流,相互交换,能融洽兼容则最好啦,不能的话,及时终止。

2、客观性的意见

客观性的意见有如下几种:笔误(错别字和其它疏忽)、代码规范、知识性错误……

对于笔误性的错误,这没啥好说的,我自己发现过几处,也被读者指出过几处。有则改之就好。

对于代码规范,有时候为了举例方便,确实没有按照规范来。尽量避免,求一个兼顾。

知识性错误是要热烈欢迎的——不是说欢迎错误,而是说欢迎别人来指出我所未知的错误。

出现知识性的错误,就意味着没有全面掌握知识,一旦出现,就必然意味着有提升的空间。本来以为知道了什么,如果被指出了错误,那改正后,才是真的知道了什么。

知道自己不知道并且改正之,并不可耻,不知道自己不知道,这才可怜。

在写《Python是否支持复制字符串呢?》的时候,我根据已得的知识,以及查阅到的资料,早早就得出了一个很满意的结论。最后成文前,临时地加了一个未作验证的示例,没想到这会是一个致命的反例,推翻了前面辛辛苦苦建立起来的一切。

这是一个客观性的错误,一被指出的时候,很快就能验证。因为这个错误,我重新梳理了相关的知识点,组成新的知识面,写成了一篇《join()方法的神奇用处与Intern机制的软肋》。

还有一个例子,前不久的《Python进阶:自定义对象实现切片功能》,我在准备素材的时候,竟采用了一个不严谨的例子,而且自作聪明地批判了别人的实际无误的例子。最后,有读者留言了很长的不同观点,我才意识到自己的错误!

得益于读者的留言,我修正了自己的错误,而且在修正过程中,也加强了对于其它知识的理解,真是塞翁失马焉知非福啊。

3、内置函数与内置类

这里还有一个客观性错误,藏得特别深,可能真的有 90% 的 Python 使用者不知道。

特别感谢 @xpresslink 同学指出。下面,我给大家分享一下。

在文章《为什么range不是迭代器?range到底是什么类型?》里,我的注意点其实就在标题的两个问句里,大部分的留言互动也是基于此。但最后,很意外地,一名读者指出了一个客观性错误,让我有了额外的收获。

这位同学指出我有些基本的概念是错误的:

“range() 函数”这个说法是非常明显有错误的,range 不是内置函数( builtin method )而是个类对象,在 python 里面不要见到用括号调用的东西就认为是函数,类似的还是有很多,如 list, set, tuple, dict 等,这些都是类, 特别是 enumerate ,这个学 python 的人十有八九认为是函数而不知道是类,加了括号是实例化而不是函数调用。

python 中类的实例化和函数调用非常容易对新手有大的迷惑性,相对来说在 java 中有明确的 new 关键字加在构造方法前面概念更清楚一些。

根据这个评论,我就去查看文档。

上图中 range() 虽然被归类到 Built-in Functions 里面,但是官方描述的是“functions and types”,即是说,在内置函数的大类下面,包含了内置函数与内置类。

那 range() 属于哪一种呢?看看它的解释:

Rather than being a function, range is actually an immutable sequence type……

range 实际是一种不可变的序列类型,而非一个(内置)函数……

按照这里的说法,官方已经区分了 range() 不是函数,正像那位留言的同学所说。

我第一反应当然是不能接受。我怎么会认为它是内置函数的呢,难道不是根据学习资料得来的么?难道我学习的资料是错的?为何从来没看到有人对此做过辨析呢?

根据群友的提示,我去查看 Python2 的文档,然后就发现了很有意思的地方:

首先一点, Built-in Functions 的描述跟 python3 有点不同,它写的是 “functions”,并不包含“types”;还有一点,在 range() 和 xrange() 的具体内容中,官方都是称呼它们为 function 。

由此看来,Python2 的官方文档就把 range() 当成内置函数,这个认识错误是有根源的!等到 Python3 的时候,官方把错误改正过来了,然而改得并不彻底。才有了前面同时存在“functions and types”的描述。

官方已经把 range() 与 xrange() 规范为一个,或许在今后版本,还会专门分出一类 Built-in Types 来存放像 range() 和 enumerate() 这些内置类吧。

在那之前,我只能先行给大家提个醒了:别再误以为 range() 是内置函数了。

那么,怎么辨别哪些是内置函数呢?

我想到了两个方法:

(1)看是否存在对应的魔术方法。例如,len() 是一个内置函数,因为它实际调用的是魔术方法__len__() ;还有最近一直在提的 iter(),它调用的是__iter__() ,所以也是内置函数;而因为不存在 __range__() 魔术方法,所以 range() 不是内置函数。

(2)使用 type() 进行判断,结果为 builtin_function_or_method 的才是内置函数。

>>> type(len)
builtin_function_or_method
>>> type(sorted)
builtin_function_or_method
>>> type(open)
builtin_function_or_method

>>> type(range)
type
>>> type(enumerate)
type
>>> type(str)
type

像 open 和 sorted 并没有对应的魔术方法,但判断出来都是内置函数;而 str 虽有对应魔术方法,但判断是 type ,这意味着,以上两种方法得要结合起来看。

我不确定有多少人事先知道怎么区分内置函数与内置类,但我确实没看到过对这个问题进行辨析的文章,所以,这次是真正涨知识了,也希望这篇文章,能够消除一些读者的错误观念吧。

4、小结

我最近写的一些文章都不是心血来潮,不管是字符串系列、切片系列还是迭代器系列,本意都是想在一个主题上进行深入的多面性的思考与记录。

如果没有一些热心读者的指正,我恐怕是很难知道自己错在了哪里,如果不是有这么多的认同以及意见,我恐怕也缺乏动力坚持写下去。

最后鸣谢几位提意见的小能手同学(时间顺序,可能有漏):@疯琴、@德玛西亚之翼奎因、@发条橙、@gaieepo、@郭芮、@aijam、@xpresslink、@进击的团子、@不换……

相关链接(单有错,双修正):

1、Python是否支持复制字符串呢?

2、join()方法的神奇用处与Intern机制的软肋

3、Python进阶:自定义对象实现切片功能

4、Python进阶:全面解读高级特性之切片!

5、为什么range不是迭代器?range到底是什么类型?

-----------------

本文原创并首发于微信公众号【Python猫】,后台回复“爱学习”,免费获得20+本精选电子书。

--结束END--

本文标题: 聊聊技术写作的个人体会

本文链接: https://www.lsjlt.com/news/180760.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 聊聊技术写作的个人体会
    有群友问过,是什么原因使我开始写技术公众号,又是什么动力让我坚持写的。 在我看来,写作是一件不能敷衍的事,通过写作来学习,反而要比单纯地学习的效果要好。为了写成一篇“拿得出手”的文章,我要反复查找资料,阅读与思考,拆解与整合,最终写成的...
    99+
    2023-01-30
    技术
  • 聊聊Golang中的转码技术
    Golang是一种十分流行的编程语言,它具有高效性、灵活性和可靠性等众多优点。在Golang中,转码是一项基本的任务,一般用于实现不同字符集之间的数据转换。本文将介绍Golang中的转码技术。什么是转码?转码是将一个字符集转换成另一个字符集...
    99+
    2023-05-14
  • PHP中的聊天机器人技术指南
    作为一种流行的编程语言,PHP已经被广泛应用于Web开发中。随着人工智能技术的不断提升,越来越多的开发者开始尝试使用PHP构建聊天机器人。聊天机器人已经成为了一个非常有用的工具,可以自动回答用户的问题、提供娱乐和帮助用户完成日常任务。在这篇...
    99+
    2023-05-21
    聊天机器人 PHP 技术指南
  • 聊聊Vue开发小程序的技术原理
    Vue、 React 和 Angular 是当前应用最广的三大前端框架,仅从 GitHub 趋势来看,Vue 更是排在了第一位,目前已经达到了 17 万的 Star。目前,不管是 BAT 大厂,还是创业公司,Vue 都有广泛的应用,对于任何...
    99+
    2023-05-14
    Vue 小程序
  • 聊聊几个常用的CSS编写软件
    CSS是一种用于网页设计和排版的样式语言,通过CSS,我们可以将网页的样式、布局和美感进行细致的调整。在CSS的编写过程中,选择一个合适的软件是非常重要的。那么,CSS用什么软件编写呢?下面就给大家介绍几个常用的CSS编写软件。Sublim...
    99+
    2023-05-14
  • 一文聊聊node文件的读写操作
    本篇文章带大家聊聊fs文件系统模块,介绍一下node中的文件读取写入操作,希望对大家有所帮助!fs文件系统模块什么是fs文件系统模块fs模块是node.js官方提供的、操作文件的模块。通过fs模块可以实现对文件的读取以及写入操作。【相关教程...
    99+
    2023-05-14
    node Node.js
  • 聊聊Gitee中Fork的具体操作和工作原理
    Gitee是一个国内广受欢迎的代码托管平台,由于其稳定性和优秀的社交化特性,越来越多的开发者选择在Gitee上托管自己的代码。而其中,Fork是Gitee上一个重要而实用的功能之一。本文将介绍Gitee中Fork的具体操作和工作原理,希望能...
    99+
    2023-10-22
  • 聊聊Javascript中try catch的2个作用
    程序是从上到下顺序执行的,同时可以通过一些控制语句来改变执行的路线,受控制语句影响下,程序最终的执行路线就是控制流。 js 里面的控制语句有 if、for、while、try cat...
    99+
    2024-04-02
  • ChatGPT PHP技术解析:构建智能聊天机器人的核心技术
    ChatGPT PHP技术解析:构建智能聊天机器人的核心技术,需要具体代码示例导语:随着人工智能技术的快速发展,智能聊天机器人在各个领域中发挥着重要作用。而ChatGPT作为一款出色的聊天机器人模型,被广泛应用于多种语言平台中。本文将重点介...
    99+
    2023-10-24
    PHP 技术解析 智能聊天机器人
  • 聊聊Golang中的转码系统及其相关技术
    近年来,随着人民生活水平的不断提高和互联网技术的不断发展,多语言环境下的编程和转码成为一种趋势。Go语言作为一种开源的、跨平台的编程语言,受到了越来越多的开发者的青睐。在Golang中,转码系统的实现是一个极具挑战性的任务。本文主要介绍Go...
    99+
    2023-05-14
  • 一文带你聊聊Nodejs中读写文件的操作
    操作文件是服务端一个基础的功能,也是做后端开发的必备能力之一。操作文件主要包括读和写。而这些功能 Nodejs 都已经提供了对应的方法。只要调用就行了。创建文件夹同步方法const fs = require('fs') fs...
    99+
    2022-11-22
    nodejs node
  • 聊聊混合云人才目前需要具备的七种技能
    随着混合云的普及,企业对IT专业人员的需求也在不断增长,他们可以有效地设计、实施和优化这种现代计算方法。  正如混合云这一术语所暗示的那样,云计算现在需要混合的人工技能。如果IT专业人员从来没有处理过内部部署的基础设施,那么所有的云计算认证...
    99+
    2023-06-04
  • ChatGPT PHP技术解析:构建智能聊天机器人的自然语言处理技术
    ChatGPT PHP 技术解析:构建智能聊天机器人的自然语言处理技术,需要具体代码示例引言随着人工智能技术的快速发展,智能聊天机器人越来越受到人们的关注和喜爱。智能聊天机器人不仅可以帮助用户解答问题,还可以进行自然语言交互,提供个性化的服...
    99+
    2023-10-27
    聊天机器人 自然语言处理 PHP技术
  • 怎样用Python写了一个智能机器人来聊天
    这篇文章将为大家详细讲解有关怎样用Python写了一个智能机器人来聊天,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。人工智能已是趋势,智能酒店,智能网吧,无人驾驶等等都已经实现,过不了多久,...
    99+
    2023-06-16
  • ChatGPT PHP技术解析:构建智能聊天机器人的语义理解技巧
    ChatGPT PHP技术解析:构建智能聊天机器人的语义理解技巧引言随着人工智能技术的迅猛发展,智能聊天机器人正在逐渐成为我们日常生活中不可或缺的一部分。在构建智能聊天机器人过程中,语义理解是非常关键的一环。本文将以ChatGPT为基础,介...
    99+
    2023-10-24
    ChatGPT PHP 智能聊天机器人
  • 基于小程序制作一个ChatGPT聊天机器人
    在AI技术日新月异的浪潮中,将ChatGPT与实战开发相结合,制作一个随身携带的聊天机器人,紧贴前沿的同时稳固基础。 一、前言 1.1、什么是ChatGPT 1.2、什么是文本完成 ...
    99+
    2023-08-30
    chatgpt 机器人 微信小程序 原力计划
  • ChatGPT PHP技术解析:构建智能聊天机器人的关键要点
    ChatGPT PHP技术解析:构建智能聊天机器人的关键要点,需要具体代码示例引言:随着人工智能和自然语言处理等技术的发展,智能聊天机器人逐渐成为了许多企业和个人项目的重要组成部分。而ChatGPT是OpenAI推出的一款先进的自然语言处理...
    99+
    2023-10-27
    聊天机器人 PHP 关键词:ChatGPT
  • Node.js制作聊天室的代码怎么写
    这篇文章主要介绍了Node.js制作聊天室的代码怎么写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node.js制作聊天室的代码怎么写文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • Python调用两个机器人聊天的实战
    目录机器人api接口调用接口封装机器人实现两个机器人聊天聊天文字转语音总结众所周知,现在网上有很多非常智能bushi(智障)的AI机器人接口,利用这些接口,我们可以实现一个机器人,可...
    99+
    2024-04-02
  • 四个月技术写作,我写了些什么?
    从去年国庆节开始,我连续更新了 4 个月公众号,累计发布原创文章 40 篇。 按照大多数个人订阅号的优良传统,号主应该在跨年的前后作年终总结。然而,一来我反应比较迟钝,没跟上节奏,二来当时我正在写比较重要的系列,没时间分心,所以还是慢了...
    99+
    2023-01-30
    些什么 写了 四个月
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作