小编mah*_*fat的帖子

使用自定义名称创建Python动态函数

如果已经提出并回答了这个问题,请道歉.我需要做的是概念非常简单,但不幸的是我无法在网上找到答案.

我需要在运行时使用自定义名称在Python(Python2.7)中创建动态函数.每个函数的主体也需要在运行时构造,但对于所有函数(几乎)都是相同的.

我从一个名单开始.

func_names = ["func1", "func2", "func3"]
Run Code Online (Sandbox Code Playgroud)

请注意,func_name列表可以包含任意名称列表,因此名称不仅仅是func1,func2,func3,....

我希望结果如下:

    def func1(*args):
        ...

    def func2(*args):
        ...

    def func3(*args):
        ...
Run Code Online (Sandbox Code Playgroud)

我需要这样做的原因是每个函数名称对应一个测试用例,然后从外部世界调用.

更新:没有用户输入.我正在绑一个更大的模块的两端.一端确定测试用例是什么,以及填充测试用例名称的列表.另一端是函数本身,它必须与测试用例的名称进行1:1映射.所以我有测试用例的名称,我知道我想对每个测试用例做什么,我只需要创建具有测试用例名称的函数.由于测试用例的名称是在运行时确定的,因此基于这些测试用例的函数创建也必须在运行时.

更新:我也可以将这个自定义命名函数包装在一个类中,如果这样可以使事情变得更容易.

我可以在字符串中硬编码函数的内容(因为它们几乎相同),或者我可以将它基于先前定义的基类.只需要知道如何用这个内容填充函数.

例如:

    func_content = """
                   for arg in args:
                       print arg
                   """
Run Code Online (Sandbox Code Playgroud)

提前致谢,

马赫迪

python closures metaprogramming dynamic-function python-2.7

41
推荐指数
4
解决办法
4万
查看次数

为什么“隐式函数声明”只是一个警告?

这不是一个关于如何解决 C 程序中出现的“隐式函数声明”警告的问题,这个问题已经回答了很多次。

我知道这是一个编译器警告,我想知道为什么这是一个警告而不是错误?如果编译器看不到该函数,那么在运行时调用该函数时会发生什么?链接器最终能解决这个问题吗?或者我们是否假设调用产生此类警告的函数的行为是未知的?

c warnings compilation compiler-warnings linkage

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

FFmpeg libavcodec.a Xcode链接器问题 - 架构arm64的未定义符号

我使用这个脚本为iOS构建FFmpeg:https: //github.com/kewlbear/FFmpeg-iOS-build-script

我为所有架构构建,然后我再次为arm64构建(作为我想要的拱门),我甚至使用其他构建脚本来构建适用于iOS的FFmpeg.但是,我一直遇到同样的问题:

Undefined symbols for architecture arm64:
  "_VTDecompressionSessionCreate", referenced from:
      _av_videotoolbox_default_init2 in libavcodec.a(videotoolbox.o)
  "_VTDecompressionSessionDecodeFrame", referenced from:
      _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o)
  "_VTDecompressionSessionInvalidate", referenced from:
      _av_videotoolbox_default_free in libavcodec.a(videotoolbox.o)
  "_VTDecompressionSessionWaitForAsynchronousFrames", referenced from:
      _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o)
Run Code Online (Sandbox Code Playgroud)

我试过了

  • 更改项目的"构建设置"中的体系结构设置
  • 将死代码剥离设置为NO
  • 双重检查我的库/链接器搜索路径

请注意,所有链接器错误都来自同一个静态库(libavcodec.a).这让我相信我错过了链接器专门针对这些符号所需的其他库.我添加了FFmpeg构建中提到的所有库 - 请参见下图:

链接二进制文件/库的快照

任何帮助表示赞赏.谢谢!

xcode linker ffmpeg ios

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