Rumah  >  Artikel  >  pembangunan bahagian belakang  >  黑马云课堂8天深入理解Python视频资料

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

巴扎黑
巴扎黑asal
2017-08-25 14:53:192286semak imbas

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)

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

Atas ialah kandungan terperinci 黑马云课堂8天深入理解Python视频资料. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn