java split 不传参_split 不带参数

>>> s = "this   is\natyu30's\ttest"

>>> print s

this    is

atyu30's        test

>>> print s.split()

['this', 'is', "atyu30's", 'test']

>>> print "".join(s.split())

thisisatyu30'stest

>>>

这是一个多行字符串,通过使用转义字符的定义代替了三重引号。\n 是一个回车,\t 是一个

50

制表符。

不带参数的 split 按照空白进行分割。所以三个空格、一个回车和一个制表符都是一样的。

通过 split 分割字符串你可以将空格统一化;然后再以单个空格作为分隔符用 join 将其重新

连接起来。这也就是 info 函数将多行 doc string 合并成单行所做的事情。

那么 info 函数到底用这些 lambda 函数、split 函数和 and-or 技巧做了些什么呢?

processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)

processFunc 现在是一个函数,但是它到底是哪一个函数还要取决于 collapse 变量。如果

collapse 为真,processFunc(string) 将压缩空白;否则 processFunc(string) 将返回

未改变的参数。

在一个不很健壮的语言中实现它,像 Visual Basic,你很有可能要创建一个函数,接受一个字符串

参数和一个 collapse 参数,并使用 if 语句确定是否压缩空白,然后再返回相应的值。这种方式

是低效的,因为函数可能需要处理每一种可能的情况。每次你调用它,它将不得不在给出你所想

要的东西之前,判断是否要压缩空白。在 Python 中,你可以将决策逻辑拿到函数外面,而定义一

个裁减过的 lambda 函数提供确切的 (唯一的) 你想要的。这种方式更为高效、更为优雅,而且很

少引起那些令人讨厌 (哦,想到那些参数就头昏) 的错误。

阅读(1977) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值