小编dev*_*v15的帖子

嵌入式 Python 3:将 stdout、stdin 和 stderr 重定向到 C++?

本质上我想做一些与这里描述的类似的事情:在嵌入 python 的应用程序中重定向 python 输出。最好的答案似乎是这个,因为它仅用 C / C ++ 编写(混合 Python 和 C / C ++ 对我来说似乎不太干净)。

我仍然对答案不满意。首先,当查看https://docs.python.org/3/c-api/file.html时,似乎我不应该再使用 PyFile_FromFile(..) ,并且我不确定 PyFile_FromFd(..) 是否已使用。 .) 是 Python 3 的替代品,请查看红色警告。其次,我只想将调用生成的输出重定向到 Python 函数,例如 PyRun_SimpleString(..),而不是整个程序输出。本质上,我的应用程序被编译为共享库,加载时应该只重定向它自己的输出。

库的应用程序将是一个自定义的 Python GUI:加载库的 GUI,用户可以输入将发送到库的字符串,该字符串将其提供给 PyRun_SimpleString(..) 并返回输出。GUI 将显示输出。

c c++ python stdout python-3.x

5
推荐指数
0
解决办法
1660
查看次数

如果 Python 函数根据参数返回不同的类型,这是好的代码风格吗

如果 Python 函数根据提供的参数返回不同的类型,它是否是好的代码风格?

def foo(bar):
  if bar is None:
    return None
  elif bar == 1:
    return 1*1
  else:
    return [b*b for b in bar]
Run Code Online (Sandbox Code Playgroud)

fooNone如果 bar 为 None 则返回

foo返回1如果bar == 1

foo返回一个列表,int如果 bar 是一个元组/整数列表

例子:

>> foo(None)
None
>> foo(1)
1
>> foo(1, 2, 3, 4)
[1, 4, 9, 16]
Run Code Online (Sandbox Code Playgroud)

返回None或 anint应该没问题,但是根据函数参数返回 anintints列表是否可以?您可能会争辩说这没问题,因为用户知道期望的返回类型并且不需要类型检查(在这种情况下我会说这不行),但有人可能会争辩说最好将函数拆分为两个函数,一个期待 aint并返回 an int,一个期待一个列表int并返回一个int …

python python-3.x

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

标签 统计

python ×2

python-3.x ×2

c ×1

c++ ×1

stdout ×1