我有一些变量应该可以在程序中全局访问。由于它们被如此频繁地使用,我正在考虑为它们提供一种类型,据我所知,这种类型可以加快速度。
我无法做到这一点。在 Jupyter Notebook 的一个块中,我有以下内容:
%%cython
cdef int magic_number = 42
Run Code Online (Sandbox Code Playgroud)
在下一个块中,我收到以下错误:
print(magic_number)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-34-a40fcb730ac3> in <module>()
----> 1 print(magic_number)
NameError: name 'magic_number' is not defined
Run Code Online (Sandbox Code Playgroud)
cpdef也不起作用。如何获取全局变量?
我无法理解or以下代码中的关键字的使用,该代码取自本网站的答案,该答案显示了使用reduce以下方法对列表进行分区的方法:
def partition(l, p):
return reduce(lambda x, y: x[not p(y)].append(y) or x, l, ([], []))
Run Code Online (Sandbox Code Playgroud)
我知道如果条件为真,代码将附加到第一个列表,否则它将附加到第二个列表.这部分or x做什么?我试着把它留下来,但我最后说错了TypeError: 'NoneType' object is not subscriptable
根据文档<$>是同义词fmap,它们具有以下类型:
(<$>) :: Functor f => (a -> b) -> f a -> f b
fmap :: Functor f => (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
因此,在上面的签名中,我认为他们以相同的顺序接受参数,唯一的区别是一个是中缀而另一个不是.我有两段代码,一个使用fmap,另一个使用<$>.为什么只有前者运行正常?
import Control.Applicative
main :: IO ()
main = do
[x, y] <- map read . words <$> getLine
putStrLn $ show (x + y)
Run Code Online (Sandbox Code Playgroud)
这个不会编译:
import Control.Applicative
main :: IO ()
main = do
[x, y] <- map read . fmap words …Run Code Online (Sandbox Code Playgroud)