摘要:
首先:def f(): print('first')def g(): f()g()def f(): print('second')g()结果:>>> firstsecond又来:def g(): f()g()def f(): print('second')g()结果:NameError: global name 'f' is not defined再来:def g(): f()def f(): print('second')g()结果:>>> second 阅读全文
摘要:
几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归.虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的.我持续地零散地思考过这个问题,今天终于将其一举拿下,并且还是两个版本,一个是函数式(尾递归),一个是命令式.总算是解决一个心病了.关键在于哪?原来的思路是从左到右转换数字,这种思路用树形递归表示并不难,但是你尝试转化为尾递归时会让你欲仙欲死..反正我是没有弄出来,还浪费了很多时间.不知怎么的,我突然想到尝试从右到左转换,一下子就豁然开朗了.我首先写出了个命令式版本,随后轻松翻译为尾递归版本..这让我 阅读全文
摘要:
不知哪儿看到一个说法,大概是当map的函数参数可以直接引用一个已有的函数变量时(比如内建函数int,str之类的),用map更优美些,否则还是用列表解析更直观和快速.我同意此说法.昨天在写一个函数时,最开始用的是map:def process_messages(arr,msgs,mode): return map(lambda msg:process_message(arr,msg,mode),msgs)可以看到,那个lambda显得笨拙而庞大.今天起来转念一想,用列表解析不是更好么:def process_messages(arr,msgs,mode): return [proc... 阅读全文