扩充python函数 pythonc扩展

python的优点有哪些优点
简单:Python是一种代表简单主义思想的语言 。阅读一个良好的Python程序就感觉像是在读英语一样 。它使你能够专注于解决问题而不是去搞明白语言本身 。
易学:Python极其容易上手,因为Python有极其简单的说明文档 [10]。
易读、易维护:风格清晰划一、强制缩进
用途广泛
速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的 , 运行速度非常快 。[7]
免费、开源:Python是FLOSS(自由/开放源码软件)之一 。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中 。FLOSS是基于一个团体分享知识的概念 。
高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节 。
可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上) 。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台 。
解释性:一个用编译性语言比如C或C写的程序可以从源文件(即C或C语言)转换到一个你的计算机使用的语言(二进制代码,即0和1) 。这个过程通过编译器和不同的标记、选项完成 。
运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行 。而Python语言写的程序不需要编译成二进制代码 。你可以直接从源代码运行 程序 。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行 。这使得使用Python更加简单 。也使得Python程序更加易于移植 。
面向对象:Python既支持面向过程的编程也支持面向对象的编程 。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的 。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的 。
Python是完全面向对象的语言 。函数、模块、数字、字符串都是对象 。并且完全支持继承、重载、派生、多继承 , 有益于增强源代码的复用性 。Python支持重载运算符和动态类型 。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持 。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具 。
可扩展性、可扩充性:如果需要一段关键代码运行得更快或者希望某些算法不公开 , 可以部分程序用C或C编写,然后在Python程序中使用它们 。
Python本身被设计为可扩充的 。并非所有的特性和功能都集成到语言核心 。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C、Cython来编写扩充模块 。Python编译器本身也可以被集成到其它需要脚本语言的程序内 。因此,很多人还把Python作为一种“胶水语言”(glue language)使用 。使用Python将其他语言编写的程序进行集成和封装 。在Google内部的很多项目,例如Google Engine使用C编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块 。《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过 , 2004 年,Python 已在Google 内部使用,Google 召募许多 Python 高手,但在这之前就已决定使用Python , 他们的目的是 Python where we can, Cwhere we must,在操控硬件的场合使用C,在快速开发时候使用 Python 。”
可嵌入性:可以把Python嵌入C/C程序 , 从而向程序用户提供脚本功能 。
丰富的库:Python标准库确实很庞大 。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作 。这被称作Python的“功能齐全”理念 。除了标准库以外 , 还有许多其他高质量的库 , 如wxPython、Twisted和Python图像库等等 。
规范的代码:Python采用强制缩进的方式使得代码具有较好可读性 。而Python语言写的程序不需要编译成二进制代码 。Python的作者设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译 。其中很重要的一项就是Python的缩进规则 。一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定(而C语言是用一对花括号{}来明确的定出模块的边界,与字符的位置毫无关系) 。通过强制程序员们缩进(包括if , for和函数定义等所有需要使用模块的地方) , Python确实使得程序更加清晰和美观 。
高级动态编程:虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它 。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论 。
做科学计算优点多:说起科学计算,首先会被提到的可能是MATLAB 。除了MATLAB的一些专业性很强的工具箱还无法被替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相应的扩展库 。和MATLAB相比,用Python做科学计算有如下优点:
● 首先 , MATLAB是一款商用软件 , 并且价格不菲 。而Python完全免费,众多开源的科学计算库都提供了Python的调用接口 。用户可以在任何计算机上免费安装Python及其绝大多数扩展库 。
● 其次,与MATLAB相比 , Python是一门更易学、更严谨的程序设计语言 。它能让用户编写出更易读、易维护的代码 。
● 最后,MATLAB主要专注于工程和科学计算 。然而即使在计算领域,也经常会遇到文件管理、界面设计、网络通信等各种需求 。而Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能 。
python 截取指定字符前后的所有字符的函数可以参考下面的代码:
#!/usr/bin/python
# encoding: utf-8
# filename: baiduzhidao.py
ln = "4564612131856 654654654654"
print ln.split(" ")
#~ Result:
#~ python -u "baiduzhidao.py"
#~ ['4564612131856', '654654654654']
#~ Exit code: 0Time: 0.052
Python在设计上坚持了清晰划一的风格 , 这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言,设计者开发时总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了 。
Python本身被设计为可扩充的 。并非所有的特性和功能都集成到语言核心 。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C、Cython来编写扩充模块 。
Python是完全面向对象的语言 。函数、模块、数字、字符串都是对象 。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性 。
扩展资料:
python参考函数
vars(obj) 返回一个object的name space 。用dictionary表示
locals() 返回一个局部name space,用dictionary表示
globals() 返回一个全局name space,用dictionary表示
type(obj) 查看一个obj的类型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子类
参考资料来源:百度百科-Python (计算机程序设计语言)
python list(range(1,10,3))结果是什么?Python语句list(range(1,10,3))执行结果为[1,4,7] 。
语法是:range(start,stop[,step])
参数说明扩充python函数:
(1)start:计数从start开始扩充python函数 , 默认是从0开始 。例如range(5)等价于range(0,5);
(2)stop:计数到stop结束扩充python函数,但不包括stop 。例如:range(0,5)是[0,1,2,3,4]没有5;
(3)step:步长 , 默认为1 。例如:range(0,5)等价于range(0,5,1) 。
因此,range(1,10,3)扩充python函数的意思是1到10之间的tuple,间隔为3,所以结果是(1,4,7) 。
列表(List)是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现 。
所以,list(range(1,10,3))执行结果为[1,4,7] 。
扩展资料
Python列表函数方法
Python包含以下函数:
1、cmp(list1, list2):比较两个列表的元素扩充python函数;
2、len(list):列表元素个数;
3、max(list):返回列表元素最大值;
4、min(list):返回列表元素最小值;
5、list(seq):将元组转换为列表 。
Python包含以下方法:
1、list.append(obj):在列表末尾添加新的对象;
2、list.count(obj):统计某个元素在列表中出现的次数;
3、list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表);
4、list.index(obj):从列表中找出某个值第一个匹配项的索引位置;
5、list.insert(index, obj):将对象插入列表;
6、list.pop([index=-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值;
7、list.remove(obj):移除列表中某个值的第一个匹配项;
【扩充python函数 pythonc扩展】8、list.reverse():反向列表中元素;
9、list.sort(cmp=None, key=None, reverse=False):对原列表进行排序 。
如何编译C文件为Python扩展模块大概有三种常用方法:
1使用ctypes模块来调用C写扩充python函数的共享库扩充python函数 , 比如:
[python] view plain copy print?
#测试ctypes调用linux动态库的能力
from ctypes import *
lib = CDLL("libc.so.6")
printf = lib.printf
printf("Hello World\n")
#查找动态库
from ctypes.util import find_library
print find_library('c')
output = CDLL(find_library("c")).printf
output("测试成功扩充python函数!\n")
但是用它来调用C写的so就不太合适扩充python函数,因为编译时c函数名修饰会给你的函数取一个特殊的字符串扩充python函数,你不能在你的python代码里直接使用此函数名,除非你使用的是修饰后的函数名 。(在linux下你可以用nm来查看so中的函数名)
2用C来写python的扩展模块 , 这个没怎么用过,以后使用时再记录在此 。
3用C来写python扩展模块:
我是使用Boost.Python来写扩展的,先上工作中的代码片段:
[python] view plain copy print?
#include boost/python.hpp //包含boost.python头文件
#include cstdio
#include string
using namespace boost::python;//引入命令空间
class lshw //定义一个类
{
public:
lshw();
virtual ~lshw();
void scan_device();
string get_xml();
private:
hwNode *computer;
};
lshw::lshw()
{
computer = new hwNode("computer", hw::system);
}
lshw::~lshw()
{
if (computer)
delete computer;
}
void lshw::scan_device()
{
enable("output:numeric");
disable("output:sanitize");
scan_system(*computer);
}
string lshw::get_xml()
{
return computer-asXML();
}
void hello()
{
std::cout"Hello World!" std::endl;
}
BOOST_PYTHON_MODULE(lshw)
{
class_lshw, boost::noncopyable("lshw", "This is a lshw project python extend", init())//导出类中的方法
.def("scan_device", lshw::scan_device)
.def("get_xml", lshw::get_xml)
;
def("hello",hello);//导出方法
}
使用boost.python其实结构很简单,你只要写很少的boost.python的代码,你可以把大部分的精力放在C功能代码上 , 花很少的精力就可以把它扩展成python的模块 。下面是我在Ubuntu11.10上的编译过程:
首先安装boost.python:
sudo apt-get install libboost-python1.46.1
再来编译生成so共享库文件:
g-shared -fPIC lshw.cc -o lshw.so -lboost_python
使用:
[python] view plain copy print?
import lshw
hw = lshw.lshw()
lshw.hello()
hw.scan_device()
xml = self.hw.get_xml()
python类和函数的区别一、主体不同
1、类:是面向对象程序设计实现信息封装的基础 。
2、函数:是指一段在一起的、可以做某一件事儿的程序 。也叫做子程序、(OOP中)方法 。
二、特点不同
1、类:是一种用户定义的引用数据类型,也称类类型 。每个类包含数据说明和一组操作数据或传递消息的函数 。类的实例称为对象 。
2、函数:分为全局函数、全局静态函数;在类中还可以定义构造函数、析构函数、拷贝构造函数、成员函数、友元函数、运算符重载函数、内联函数等 。
三、规则不同
1、类:实质是一种引用数据类型,类似于byte、short、int(char)、long、float、double等基本数据类型 , 不同的是它是一种复杂的数据类型 。
2、函数:函数必须声明后才可以被调用 。调用格式为:函数名(实参)调用时函数名后的小括号中的实参必须和声明函数时的函数括号中的形参个数相同 。
参考资料来源:百度百科-函数
参考资料来源:百度百科-类
关于扩充python函数和pythonc扩展的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读