CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnCách gọi hàm C từ Python

Cách gọi hàm C từ Python

CyStack blog 2 phút để đọc
CyStack blog27/08/2025
Locker Avatar

Bao Tran

Web Developer

Locker logo social
Reading Time: 2 minutes

Cách gọi hàm C từ Python

Bạn muốn tận dụng tốc độ xử lý của ngôn ngữ C nhưng vẫn giữ sự linh hoạt của Python? Bài viết này sẽ hướng dẫn chi tiết cách gọi hàm C từ Python, giúp bạn viết code hiệu quả, tối ưu hiệu suất mà không mất đi sự tiện lợi của Python.

Bạn có thể gọi một hàm C từ Python bằng cách sử dụng module ctypes.

Quy trình này gồm các bước sau:

  1. Tạo một tệp C (có đuôi .c) với các hàm cần thiết.
  2. Tạo một tệp shared library (có đuôi .so) bằng trình biên dịch C.
  3. Trong chương trình Python, tạo một instance của ctypes.CDLL từ tệp shared library.
  4. Cuối cùng, gọi hàm C theo định dạng: {CDLL_instance}.{tên_hàm}({các_tham_số_của_hàm}).

Bước 1: Tạo tệp C với các hàm

#include <stdio.h>

int square(int i) {
	return i * i;
}

Tạo tệp C với các hàm Chúng ta có một hàm C đơn giản sẽ trả về bình phương của một số nguyên. Mã hàm này được lưu trong tệp có tên là my_functions.c.

Bước 2: Tạo tệp Shared Library

Bạn có thể dùng lệnh sau để tạo tệp shared library từ tệp nguồn C.

$ cc -fPIC -shared -o my_functions.so my_functions.c

goi ham c bang Python Bước 3: Gọi hàm C từ chương trình Python

>>> from ctypes import *
>>> so_file = "/Users/pankaj/my_functions.so"
>>> my_functions = CDLL(so_file)
>>>
>>> print(type(my_functions))
<class 'ctypes.CDLL'>
>>>
>>> print(my_functions.square(10))
100
>>> print(my_functions.square(8))
64
>>>

goi ham c bang python

Nếu bạn thay đổi tệp chương trình C, bạn sẽ phải tạo lại tệp shared library.

Kết luận

Cách triển khai Python mặc định được viết bằng ngôn ngữ lập trình C và được gọi là CPython. Vì vậy, việc sử dụng các hàm C trong một chương trình Python không phải là điều hiếm gặp. Trong bài hướng dẫn này, chúng ta đã học cách dễ dàng gọi các hàm C trong một chương trình Python.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất