请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

集中答疑专用贴

  [复制链接]

0

主题

0

好友

32

积分

新手上路

Rank: 1

发表于 2022-8-11 18:29:53 来自手机 |显示全部楼层
请教坛主:我始终认为if语句意义不大。因为判断结果总是两个方面,不是就是。所以最简单的判断语句最起码是if…else,用来分支处理不同的情况。而且,单独的if语句往往造成歧义错误,因为判断为否后,直接执行后续语句,这就给初学者造成一种误导,好像这是条件不成立时应该执行的。如此看来,if好像只是用在循环中的跳出了。不知道坛主是何意见?另外,我并不认同编程中的一些简练写法,他们对提高效率帮助甚微,反而增加了阅读困难,得不偿失!同理,如果用判断分支,我常常建议写完整if…else。
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2022-8-12 00:54:21 |显示全部楼层
子瑜略懂 发表于 2022-8-11 18:29
请教坛主:我始终认为if语句意义不大。因为判断结果总是两个方面,不是就是。所以最简单的判断语句最起码是 ...

你非要写上else,理论上来说是没有问题,但很多时候不一定需要,比如
if 下雨就带伞,不需要 else
你一定要加一个else当然也没错
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

32

积分

新手上路

Rank: 1

发表于 2022-8-12 09:15:39 |显示全部楼层
crossin先生 发表于 2022-8-12 00:54
你非要写上else,理论上来说是没有问题,但很多时候不一定需要,比如
if 下雨就带伞,不需要 else
你一定 ...

不错,从人类自然语言角度,比如说,今天如果下雨了你记得带雨伞,就可以了,因为他隐含了,否则不用带雨伞,这句话。但是对于计算机,它是很死板的,稍一省略就可能出现歧义。因此,我建议对于编程,还是严谨一些,带上else更好。
回复

使用道具 举报

0

主题

0

好友

32

积分

新手上路

Rank: 1

发表于 2022-8-13 20:04:38 来自手机 |显示全部楼层
请教坛主:python的宗旨是简明、优雅,那为什么还要发明推倒式这种不简明也不优雅的功能呢?我知道,推倒式确实可以提高效率,但是如果追求效率,直接使用c语言岂不是更快?相反,推倒式不太好理解而且往往造成一句话过长,我是不是可以理解这算是python演进过程中的走火入魔呢?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2022-8-13 23:19:31 |显示全部楼层
子瑜略懂 发表于 2022-8-13 20:04
请教坛主:python的宗旨是简明、优雅,那为什么还要发明推倒式这种不简明也不优雅的功能呢?我知道,推倒式 ...

你是指 list comprehension?
这个可以翻译成列表综合、列表解析式、列表推导,但不叫“推倒”,本来叫什么不重要,写代码嘛,理解意思就可以。但既然你要谈论一个语法是否优雅,那至少应该先把人家的名字写对,你说是吧?不然你这个提问也太不优雅了

“不简明也不优雅”这个是你的一家之言,主观感受,我很早就在知乎上写过一个回答,找不到具体问题了,大意就是你最喜欢python里的什么语法,我的回答就是 list comprehension。知乎上流行的一句话:先问是不是,再问为什么。所以我是没法回答你这个问题的,因为我个人觉得这个语法很优雅,具有一种简洁的美感

至于你说往往造成一句话过长,那这个本身就是对list comprehension的错误用法。类似的例子,lambda函数是用来简化函数的,本就不是必须的,但如果有人把一个复杂逻辑的函数也硬要写成lambda,搞得既不好写,别人也不好读,那这不是lambda的问题,是写代码人的问题

最后要说,我是一个实用主义者,我认为python是工具,是帮助人更好解决问题的,考据细节这种事我没有兴趣,所以也不会去深究。如果你之前有看过我类似的一些文章,应该会有看到过,我有多次吐槽过一些代码还没写几行,就老是纠结A语言B语言哪个更好的人。参考你的说法,这应该算是在学编程过程中的走火入魔吧。毕竟程序员是“工程师”,工程师更多是考虑现有条件下哪一种方案更可行,而不是做评论家

另外,看了你上述的问题,我倒是推荐一个更适合你看的作者:王垠。他研究的东西或许你会喜欢
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

32

积分

新手上路

Rank: 1

发表于 2022-8-14 01:42:25 来自手机 |显示全部楼层
crossin先生 发表于 2022-8-13 23:19
你是指 list comprehension?
这个可以翻译成列表综合、列表解析式、列表推导,但不叫“推倒”,本来叫什 ...

谢谢坛主指教!手机码字难免有误,至于推倒、推导我确实不太熟悉,见谅!坛主推荐王垠,我有些惶恐,可能坛主由此及彼了,觉得我和他是一类人,但这真的是抬举我了!我称不上,只是一个脑子很笨、认死理的人。讨论本身是一件容易引起情绪的事情,我很理解,但我的初衷很清楚,不是抬杠。有些问题看似质疑,但也只是讨论的范畴,你可以同意也可以不同意,每个人都有每个人的理由,不见得都对也不见得都错。python语法很好,所以我才喜欢,但我不能总是一边倒说他好,那叫盲目崇拜。不好的地方吐槽两句,也能促进他的进步,不是吗?谁又能保证自己永远走在正确的道路上呢?所以回到上述问题,您觉得推导式好我不反驳。我只说明我的理由,打个简单的比方,a++等同于a=a+1,据说前者效率更高,也有人说是程序员太懒,总想简化代码。对我而言,我更倾向于后者,因为他一目了然。我在干什么?用语言写程序。如果追求高效,汇编不好吗?既然用了更接近自然语言的编程语言,那为什么越走越远?又想起高效这件事了?难道python发明的初衷是为了高效?用c发明一个比c更高效的?我看这才是搞笑!所以,我还是认死理的想法,既然目的是更接近自然语言,那就保持这个目的走下去。至于有些提速的办法可以交给翻译器去做,或者干脆别学python岂不是更好?!
言语冒犯,请坛主见谅!如果坛主觉得我的提问偏离了答疑贴的标准,我可以选择保持沉默。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-13 11:29 , Processed in 0.017904 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部