我分析代码,因为我有一些空闲时间,认为可以学到一些新的东西!这是我发现的二进制到接触线转换器的代码。但在过去的2-3天里,我一直在脑海中回荡,但我绝对不能让自己明白这句话/函数/线的意思是什么?
lambda b: str(int(b, 2))我认为“b”在(b,2)中的意思是二进制?
我研究并发现lambda是一个“调用”匿名函数或没有名称的函数。对吗?
B:什么意思?这也是二进制的,还是lambda中的“子名称”?
还有什么
str(int(b, 2))卑劣?我知道这是将二进制代码转换成一元的代码,但是它到底是如何工作的呢?
我很想知道!希望有人能帮我解决这个问题!
发布于 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。
发布于 2014-01-15 18:59:01
b是lambda函数的参数:
lambda b: ....在:定义匿名函数的参数之前,第一部分只定义b,就像函数签名那样:
def binary_to_int(b):
# ...它也可以被赋予另一个名字:
lambda anothername: int(anothername, 2)它与您传递给此lambda的论点相关联:
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组成,a到z(或A到Z)的值为10至35。默认的基数是10.允许的值是0和2-36.基-2、-8和-16字面值可以可选地以0b/0B、0o/0O/0或0x/0X作为前缀,就像代码中的整数字面值一样。基数0意味着将字符串准确地解释为整数文本,以便实际基数为2、8、10或16。
发布于 2014-01-15 19:00:12
在本例中,b是匿名lambda函数的参数。但是,从匿名函数所做的事情来看,很明显,b应该是一个二进制字符串。
我认为理解匿名函数的最简单的方法是通过一个例子。
>>> b = '101'
>>> int(b, 2) # converts a binary string to base-10.
5
>>> str(int(b, 2))
'5'匿名函数将二进制字符串转换为基数-10整数,然后将该整数转换回字符串。要实际使用匿名函数,可以执行如下操作:
>>> fn = lambda b: str(int(b, 2))
>>> fn('10001')
'17'或以非匿名形式:
>>> def convertFromBinary(b): return str(int(b, 2))
>>> convertFromBinary('10001')
'17'https://stackoverflow.com/questions/21145909
复制相似问题