小编Pro*_*mer的帖子

当一个语句中有两个不同的错误时,Python 如何决定显示哪一个?

当我们在解释器中输入以下内容时:

10(b)
Run Code Online (Sandbox Code Playgroud)

我们得到一个未定义 b 的 NameError。但是,当我们尝试:

10(4)
Run Code Online (Sandbox Code Playgroud)

现在,我们得到了 int 不可调用的错误信息。为什么 Python 在上面的第一种情况下没有给出相同的错误,因为即使在那里, int 也是不可调用的?换句话说,在第一个片段中,我们有“int not callable”和“NameError”这两个错误。如果 Python 从左到右扫描,它首先会看到对 int (10) 执行的调用操作。所以它也应该为第一个给出“int not callable”错误。为什么没有?

我认为这可能是因为它首先评估括号内的表达式。但是,当我们尝试这样做时:

f(print("Hello"))
Run Code Online (Sandbox Code Playgroud)

现在,它说 NameError 没有定义 f。它甚至不打印“你好”。所以这表明我们对带括号的表达式求值的假设似乎不成立。

那么它究竟是如何工作的呢?

python-3.x

5
推荐指数
1
解决办法
57
查看次数

Python的地图和Haskell的fmap有什么区别?

我知道它们都是不同的语言,但它们两者基本上不一样吗?fmap在Functor上应用函数,而Python的map在iterable上应用函数.因此,如果两者之间存在任何差异,您能提供一些我们可以用Python的地图而不是Haskell的fmap(反之亦然)的例子吗?

python haskell

4
推荐指数
2
解决办法
723
查看次数

返回> => f如何在Haskell中工作?

特别是,我的问题是如何认为这与f本身相同?

我们知道,类型return是:: a -> m a和类型>=>是:: (a -> m b) -> (b -> m c) -> (a -> m c)所以,当我们申请>=>return和f,不会有成为一个类型不匹配,因为不会有我们(a -> m a) -> (b -> m c)的类型return分别楼这意味着如何我们>=>现在申请?

haskell types

3
推荐指数
1
解决办法
60
查看次数

在Haskell中,当我们使用do块时,它如何确定要使用哪个monad?

我们知道do块只是语法糖.但是,它如何确定它所处的monadic背景?假设我们不在<-do块中的任何地方使用运算符.

haskell

3
推荐指数
2
解决办法
1369
查看次数

我可以在haskell中以pointfree表示法编写lambda函数吗?如果是这样,怎么样?

例如,如果我想转换:\ x - > x + 100,我如何用无点表示法编写?\ - > id + 100似乎不起作用

haskell

0
推荐指数
1
解决办法
150
查看次数

如何在haskell中工作2 $ [1 ..]?

我们知道$运算符绑定最松散,并且也关联到右边,这意味着,[1 ..]应该首先进行评估,因此,它不应该遇到无限循环?为什么它甚至停止了?

haskell

0
推荐指数
3
解决办法
146
查看次数

标签 统计

haskell ×5

python ×1

python-3.x ×1

types ×1