首页 >后端开发 >Python教程 >黑马云课堂8天深入理解Python视频资料

黑马云课堂8天深入理解Python视频资料

巴扎黑
巴扎黑原创
2017-08-25 14:53:192325浏览

Python, 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。 Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。 Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。 Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。《黑马云课堂8天深入理解Python视频教程》带你深入理解Python语言。

593ce5b5a73cb663.jpg

视频播放地址:http://www.php.cn/course/556.html

本视频的难点在于对C/C++的调用:

1、Python调用C动态链接库


        Python调用C库比较简单,不经过任何封装打包成so,再使用python的ctypes调用即可。
(1)C语言文件:pycall.c

/***gcc -o libpycall.so -shared -fPIC pycall.c*/  #include  #include  
int foo(int a, int b)  
{  
 printf("you input %d and %d\n", a, b);  
 return a+b;  
}  

(2)gcc编译生成动态库libpycall.so:gcc -o libpycall.so -shared -fPIC pycall.c。使用g++编译生成C动态库的代码中的函数或者方法时,需要使用extern "C"来进行编译。

(3)Python调用动态库的文件:pycall.py
import ctypes  
ll = ctypes.cdll.LoadLibrary  
lib = ll("./libpycall.so")    
lib.foo(1, 3)  
print '***finish***'  

(4)运行结果:

2、Python调用C++(类)动态链接库 

       需要extern "C"来辅助,也就是说还是只能调用C函数,不能直接调用方法,但是能解析C++方法。不是用extern "C",构建后的动态链接库没有这些函数的符号表。
(1)C++类文件:pycallclass.cpp

#include  
using namespace std;  
 
class TestLib  
{  
   public:  
       void display();  
       void display(int a);  
};  
void TestLib::display() {  
   cout<<"First display"<}  
 
void TestLib::display(int a) {  
   cout<<"Second display:"<}  
extern "C" {  
   TestLib obj;  
   void display() {  
       obj.display();  
     }  
   void display_int() {  
       obj.display(2);  
     }  
}

(2)g++编译生成动态库libpycall.so:g++ -o libpycallclass.so -shared -fPIC pycallclass.cpp。

(3)Python调用动态库的文件:pycallclass.py

import ctypes  
so = ctypes.cdll.LoadLibrary  
lib = so("./libpycallclass.so")  
print 'display()'  lib.display()  
print 'display(100)'  lib.display_int(100)

老师讲课轻松诙谐,学生学起来无压力。由浅入深,深入浅出,轻松欢快是这个老师的整体映像。

以上是黑马云课堂8天深入理解Python视频资料的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn