很高兴我能为你解答
先为你普及下*args和**kwargs的知识
在python中*args的使用是在你不知道有几个参数会传进函数时使用,这些任意数量的参数是被封装进tuple里的
而**kwargs允许你处理那些你在函数中未定义的带命名的参数,它是个字典
在你的代码中,你传进的是list对象,经过函数lowerstr的参数打包后就是这样的:
你也可以在你的函数中输出L0即可验证
要改成你要的功能很简单
似乎代码里没有看到你没有加载DLL啊.
另外你在c里直接改写python的内存可能不太妥当.通常是在C里构造后,再返回到python里去.
从你的程序上看,调用完Thin后,你的变量p似乎变成了空指针.
ctypes调用DLL通常都是别人做好的DLL,没有办法才自己去调用.这里有好多麻烦事情.
如果是自己写代码,通常会建议你用cython这个模块.很容易就实现接口.你也不用担心这些变量类型与接口封装的问题.
另外我印象中dll似乎与编译器也有关系.用VC可能容易些.用BC,或者是GCC就麻烦些.
原则上讲,你这种用法,也不是不可以,可能还是哪个地方没有弄对.比如编译参数.你可以试试用return type把数据带回来.而不是用指针写内存.
因为p目前按理它是常量,很有可能调用机制中,不会让你改写它.
python小白常见错误 关于函数的错误 NameError: name 'lower' is not defined.lower为字符串内建函数,使用方法为str.lower(),内建函数为系统已经定义好的
以上就是土嘎嘎小编为大家整理的调用函数报错python相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!