首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这种情况下,这个功能到底是做什么的?

在这种情况下,这个功能到底是做什么的?
EN

Stack Overflow用户
提问于 2014-01-15 18:55:39
回答 3查看 77关注 0票数 1

我分析代码,因为我有一些空闲时间,认为可以学到一些新的东西!这是我发现的二进制到接触线转换器的代码。但在过去的2-3天里,我一直在脑海中回荡,但我绝对不能让自己明白这句话/函数/线的意思是什么?

代码语言:javascript
复制
lambda b: str(int(b, 2))

我认为“b”在(b,2)中的意思是二进制?

我研究并发现lambda是一个“调用”匿名函数或没有名称的函数。对吗?

B:什么意思?这也是二进制的,还是lambda中的“子名称”?

还有什么

代码语言:javascript
复制
str(int(b, 2))

卑劣?我知道这是将二进制代码转换成一元的代码,但是它到底是如何工作的呢?

我很想知道!希望有人能帮我解决这个问题!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-15 18:58:31

以下是关于lambdas的一个很好的问题:为什么Python有用?

来自docs的int():

int(x,base=10) 将数字或字符串x转换为整数,如果没有给定参数,则返回0。如果x是一个数字,它可以是一个普通整数、一个长整数或一个浮点数。如果x是浮点,则转换将截断为零。如果参数在整数范围之外,则函数将返回一个长对象。 如果x不是一个数字或给定基,那么x必须是一个字符串或Unicode对象,以基数表示整数文字。可以选择,文字前面可以是+或-(中间没有空格),并用空格包围。基-n字面值由数字0到n-1组成,a to z(或A to Z)的值为10至35。默认的基数是10.允许的值是0和2-36.基-2、-8和-16字面值可以可选地以0b/0B、0o/0O/0或0x/0X作为前缀,如代码中的整数。基数0意味着将字符串准确地解释为整数文本,以便实际基数为2、8、10或16。

票数 1
EN

Stack Overflow用户

发布于 2014-01-15 18:59:01

blambda函数的参数:

代码语言:javascript
复制
lambda b: ....

:定义匿名函数的参数之前,第一部分只定义b,就像函数签名那样:

代码语言:javascript
复制
def binary_to_int(b):
    # ...

它也可以被赋予另一个名字:

代码语言:javascript
复制
lambda anothername: int(anothername, 2)

它与您传递给此lambda的论点相关联:

代码语言:javascript
复制
binary_to_int = lambda b: int(b, 2)
result = binary_to_int('010101')  # so b is bound to '010101'

函数返回函数int(b, 2)的结果,该函数将字符串第一个参数解释为基2(二进制)中的整数:

如果x不是一个数字或给定基,那么x必须是一个字符串或Unicode对象,以基数表示整数文字。可以选择,文字前面可以是+- (中间没有空格),并被空格包围。基-n字面值由数字0到n-1组成,az (或AZ)的值为10至35。默认的基数是10.允许的值是0和2-36.基-2、-8和-16字面值可以可选地以0b/0B0o/0O/00x/0X作为前缀,就像代码中的整数字面值一样。基数0意味着将字符串准确地解释为整数文本,以便实际基数为2、8、10或16。

票数 2
EN

Stack Overflow用户

发布于 2014-01-15 19:00:12

在本例中,b是匿名lambda函数的参数。但是,从匿名函数所做的事情来看,很明显,b应该是一个二进制字符串。

我认为理解匿名函数的最简单的方法是通过一个例子。

代码语言:javascript
复制
>>> b = '101'
>>> int(b, 2) # converts a binary string to base-10.
5
>>> str(int(b, 2))
'5'

匿名函数将二进制字符串转换为基数-10整数,然后将该整数转换回字符串。要实际使用匿名函数,可以执行如下操作:

代码语言:javascript
复制
>>> fn = lambda b: str(int(b, 2))
>>> fn('10001')
'17'

或以非匿名形式:

代码语言:javascript
复制
>>> def convertFromBinary(b): return str(int(b, 2))
>>> convertFromBinary('10001')
'17'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21145909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档