python中如何翻译from fractions import fraction,用编程的的意思翻译,不是按英文的意思翻译

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中如何翻译from fractions import fraction,用编程的的意思翻译,不是按英文的意思翻译相关的知识,希望对你有一定的参考价值。

参考技术A 就是吧fractions.fraction 这个模块导入进来呗。追问

是否可以说详细点,谢谢

追答

这还要咋详细,就是吧别人写的代码导入进来你就可以用别人写好的代码呗。

参考技术B from fractions import fraction的中文翻译_百度翻译
from fractions import fraction
从分数进口分数
全部释义和例句试试人工翻译
from fractions import fraction的中文翻译_百度翻译
from fractions import fraction
从分数进口分数
全部释义和例句试试人工翻译追问

是用编程方面的意思翻译,不是将英文翻译成中文那样翻译,谢谢

如何编写一个函数来接受 SWIG 中的 Fraction 对象?

【中文标题】如何编写一个函数来接受 SWIG 中的 Fraction 对象?【英文标题】:How can I write a function to accept a Fraction object in SWIG? 【发布时间】:2019-10-29 11:39:28 【问题描述】:

我正在使用 SWIG 在 Python 和我们的 C++ 视频处理库之间编写一个接口。在 python 中,我使用Fraction 类来表示帧速率(例如 NTFS24 = 24000/1001 FPS)。有问题的功能是视频转码,即获取视频(或帧流)输入并产生类似的输出。为此,我们需要指定输出(有时是输入)帧速率。

有什么方法可以在 C++ (SWIG) 端连接 Fraction 类吗?根据我在 Internet 上找到的内容,我应该能够将 tuple 传递给 std::pair<int,int> 参数,这是我的后备计划,但有更好的方法吗?谢谢!

【问题讨论】:

在 C++ 中定义一个相应的分数类并将 python 映射到它是非常容易的,如果它是你想要的。 C++ 库已经做了什么? 我更新了问题以指定功能,该库几乎可以满足我们的所有需求,但到目前为止只需要一个浮点 FPS。如果你说的是一个映射,它允许我们在 python 端传递一个Fraction 对象并在 C++ 上获取相应的对象(std::pair 或自定义类),那么这可能就是我们想要的.您能否链接一些有关如何进行此类映射的文档?谢谢! 如果 C++ 函数需要一个浮点数,那么你就只能给它传递一个浮点数。我可以在 SWIG 中为分数编写一个类型映射,但它不会被应用,或者如果 C++ 函数只将浮点数作为输入,它必须转换为浮点数。 别担心浮动,我打算做出改变,让它接受std::pair<int,int>,至少给它一个元组接口!我没有说清楚图书馆是我们的(因此我可以在必要时更改它),哎呀! 嗯,好的,我会在今天晚些时候写一个答案,希望如此。 【参考方案1】:

我整理了以下接口文件来说明包装分数的工作方式。最后,我决定创建自己的分数结构来保存 C++ 端的分数,主要是因为它比使用std::pair<int, int> 更不模糊。 (我认为一对整数也可以是 2D 坐标,或者屏幕分辨率或许多其他类型,并且对于重载分辨率等来说,更强的类型是更好的选择。)

%module test

%
#include <iostream> // Just for testing....

static PyObject *fractions_module = NULL;
%

%init %
  // Import the module we want
  fractions_module = PyImport_ImportModule("fractions");
  assert(fractions_module);
  // TODO: we should call Py_DECREF(fractions_module) when our module gets unloaded
%

%typemap(in) const Fraction& (Fraction tmp) 
  // Input typemap for fraction: duck-type on attrs numerator, denominator
  PyObject *numerator = PyObject_GetAttrString($input, "numerator");
  PyObject *denominator = PyObject_GetAttrString($input, "denominator");

  int err = SWIG_AsVal_int(numerator, &tmp.numerator);
  assert(SWIG_IsOK(err)); // TODO: proper error handling
  err = SWIG_AsVal_int(denominator, &tmp.denominator);
  assert(SWIG_IsOK(err)); // TODO: errors...

  Py_DECREF(numerator);
  Py_DECREF(denominator);

  $1 = &tmp;  


%typemap(out) Fraction 
  // Output typemap: pass two ints into fractions.Fraction() ctor
  $result = PyObject_CallMethod(fractions_module, "Fraction", "ii", $1.numerator, $1.denominator);


%inline %
  struct Fraction 
    int numerator, denominator;
  ;

  void fraction_in(const Fraction& fraction) 
    std::cout << fraction.numerator << "/" << fraction.denominator << "\n";
  

  Fraction fraction_out() 
    Fraction f = 100, 1;
    return f;
  
%

大多数情况下,这只是两个类型映射 - 一个用于 C++ 函数的输入,一个用于输出。他们从输入对象的分子和分母属性构造一个临时 C++ 分数,并分别从我们的 C++ 对象构造一个fractions.Fraction Python 对象。将它们调整为其他类似的小数类型应该相当简单。

【讨论】:

非常感谢,我这周晚些时候试试! 效果很好,非常感谢!不过有个小问题,我在哪里释放加载的fractions 模块?我现在理解了init 块,但我没有找到任何类似的“拆解”注释我可以把它放在哪里......(抱歉耽搁了!) 这是个好问题,我不确定。我看看能不能找到。最坏的情况你可以使用unique_ptr 我猜。 这可能对某人有用:%typemap(typecheck, precedence=SWIG_TYPECHECK_DOUBLE) xyz::Fraction $1 = PyObject_HasAttrString($input, "numerator") &amp;&amp; PyObject_HasAttrString($input, "denominator"); (我花了一段时间才把它放在一起:)

以上是关于python中如何翻译from fractions import fraction,用编程的的意思翻译,不是按英文的意思翻译的主要内容,如果未能解决你的问题,请参考以下文章

1.3 fractions模块

python分数运算使用Fraction模块

python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', '

pythonchallenge学到的python内置函数整理

Python Sympy Latex Fraction在没有先考虑因素的情况下不会打印

python 分数的数学四则运算