国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

cython之a(chǎn)lways_allow_keywords

wind5o / 3157人閱讀

摘要:最近有個同事編譯一個腳本后,腳本里面調(diào)用函數(shù)的地方出現(xiàn)了問題。這個報錯的意思是,這個不支持參數(shù),但是是支持這種特性的。特地去差了下文檔,確實如此在這里只要開啟選項,就可以解決問題。

TypeError

最近有個同事編譯一個腳本后,腳本里面調(diào)用函數(shù)的地方出現(xiàn)了問題。
用一個簡短的例子說明下:
py文件 a.py 內(nèi)容如下:

def fn(a):
    print a

fn(a=4)   #出現(xiàn)問題在這一行

編譯腳本build.sh如下:

cython -D -2 --embed a.py 
gcc -c -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python2.7 -o a.o a.c
gcc -I/usr/include/python2.7 -o a a.o -lpython2.7

前面的a.py用python a.py執(zhí)行是沒有問題的,但是用cython編譯成可執(zhí)行文件后,執(zhí)行就會出現(xiàn)如下錯誤:

Traceback (most recent call last):
  File "a.py", line 4, in init a
    fn(a=4)
TypeError: fn() takes no keyword arguments

也就是在 fn(a=4)的時候出現(xiàn)了問題。這個報錯的意思是,這個fn不支持keyword參數(shù),但是python是支持這種特性的。這不是沖突了?

always_allow_keywords

我上網(wǎng)找了一下,也有人碰到這個問題:https://github.com/bottlepy/b...
這里有人指出:

This is actually an incorrect assertion, and there is a quite simply fix.

By default, Cython compiles functions with 0 or 1 arguments, as special PyCFunction METH_O or METH_NOARGS. This functions do not accept keyword arguments.

You can tell Cython to disable this optimization by changing the always_allow_keywords compiler directive to True (you can do it per function, per file or globally, check cython"s documentation on how to do it).

This issue happens actually in all web frameworks who use tricks like this.

cython編譯器默認情況下會做一下優(yōu)化:對于沒有參數(shù)或只有一個參數(shù)的函數(shù),會禁止keyword參數(shù)。

特地去差了下cython文檔,確實如此:

always_allow_keywords (True / False)
Avoid the METH_NOARGS and METH_O when constructing functions/methods which take zero or one arguments. Has no effect on special methods and functions with more than one argument. The METH_NOARGS and METH_O signatures provide faster calling conventions but disallow the use of keywords.

在這里只要開啟always_allow_keywords選項,就可以解決問題。所以我在前面build.sh里對cython 加了一個參數(shù),效果如下:

cython -D -2 --directive always_allow_keywords=true --embed a.py

也就是增加了 --directive always_allow_keywords=true,也就解決了問題。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41939.html

相關(guān)文章

  • 在 Mac 下使用 Cython

    摘要:摘要在下使用會碰到一些意外。本文就此簡單舉了一個例子來說明在中使用的正確姿勢。運行之接下來,我們來運行這個函數(shù),當然是使用的方法。結(jié)束至此步驟全部完成本文只是給出了一些在上使用可能碰到的一些問題的解決方法。 摘要:在 Mac 下使用 Cython 會碰到一些意外。例如鏈接命令不一樣什么的。本文就此簡單舉了一個例子來說明在 Mac OS X 中使用 Cython 的正確姿勢。 安裝 Cy...

    huangjinnan 評論0 收藏0
  • Cython 3.0 中文文檔校對活動 | ApacheCN

    摘要:整體進度貢獻指南項目倉庫貢獻指南請您勇敢地去翻譯和改進翻譯。然后回復,注明章節(jié)號一定要留。二校對需要校對語法術(shù)語使用文檔格式如果覺得現(xiàn)有翻譯不好,重新翻譯也是可以的。三提交項目將譯文放在文件夾下請見入門指南。 整體進度:https://github.com/apachecn/c... 貢獻指南:https://github.com/apachecn/c... 項目倉庫:https://...

    iamyoung001 評論0 收藏0
  • 4 個快速的 Python 編譯器 for 2018

    摘要:但是由于程序并沒有那么快,開發(fā)人員多年來創(chuàng)建了幾個的編譯器,包括和。在下面的細分中,所有的編譯器都針對進行基準測試。編譯器是系列的一部分,旨在作為的現(xiàn)代替代品。不僅僅是的編譯器,它是的超集,支持與的互操作性。 簡評:Python 和其他的解釋型語言一樣經(jīng)常被吐槽性能不行,所以開發(fā)人員為了提升性能創(chuàng)建了不少編譯器,本文則選取其中的四個做了基準測試。 Python 其實是一種相當快的語言,...

    YancyYe 評論0 收藏0
  • 為你的Python程序加密

    摘要:在實際的工作中,有時候我們需要部署自己的應用,但這時候我們并不希望別人能夠看到自己的源程序。因此,我們需要為自己的源代碼進行加密,已經(jīng)為我們提供了這樣一套工作機制。本文以系統(tǒng)為例,講解如何將自己的程序文件加密為文件。 ??在實際的工作中,有時候我們需要部署自己的Python應用,但這時候我們并不希望別人能夠看到自己的Python源程序。因此,我們需要為自己的源代碼進行加密,Python...

    Terry_Tai 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<