Python简单介绍

Python的特性
一、Python是面向对象的,跨平台的,可扩展的解释型通用编程语言,它支持模块和包;Python的代码类型有三种:.py .pyc .pyo,分别是字节代码,二进制代码,优化代码,都可以直接运行,无需编译或者链接的步骤,而且Python还提供交互执行环境;Python是动态类型语言,不需要类型声明;提供自动内存管理;内置高级数据类型和操作支持;Python可扩展,可嵌入;语法简单清晰,强调代码可读性;可动态加载C模块;可动态装载Python模块;Python属动态语言,允许在程序运行期间动态添加删除函数,对类和实例可以在运行时动态添加修改方法;Python是具有内省性的语言;提供标准的GUI框架开发图形界面程序;支持标准Internet协议;支持内建的和第三方提供的库,丰富的库支持;免费使用且完全开放源代码。

Python语法
Python语言中一切事物都是对象,例如如下一个看似普通的字符串:

    >>> 'tool.txt'.find('oo') 

1, 内置在Python中的简单数据类型有:

bool    int      long    float   complex

Python内置容器类包含:

str   unicode    set      frozenset        list       tuple         dict 

其中str unicode list tuple都支持访问给定顺序的对象,dict是一个映射
str unicode tuple frozenset这四个容器类一旦创建了,就不能更改它们所存储的数据了;listdict set是可变容器。

除了这些内置高级数据类型,程序员还可以通过扩展模块自定义内置数据类型以支持实际应用;Python属动态类型语言,这是大部分脚本语言的特性:通过赋值决定或改变变量类型;Python使用缩排标识程序块结构,这是Python的一大特色,减少了不必要的块包围符号;str、unicode、list、tuple等类可以通过乘法实现多个容器的组合,可以通过分片进行分割,还能够负索引表示从后向前查找;可进行连续比较:x

>>> dir([])
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

type()函数可以帮助程序员确定对象的类型:

>>> type([]) 
<type 'list'>
>>>import sys 
>>> type(sys)
<type 'module'>
>>> type(dir) 
<type 'builtin_function_or_method'>

hasattr()函数和getattr()函数检索一个对象拥有的属性

>>> import os
>>> hasattr(os.dup, '__doc__') 
True
>>> print getattr(os.dup, '__doc__')
dup(fd) -> fd2

Return a duplicate of a file descriptor.

callable() 函数测试对象的可调用性:

>>> callable('string')
False
>>> callable(callable)
True

三、Python内存管理
Python不提供显式的内存分配回收API,完全自动的内存管理;Python memory manager实现了对程序运行时堆的管理,包括内存的分配,垃圾回收机制等;垃圾回收(garbage collection,一下简称GC)在当前的版本中使用的是引用计数垃圾收集和可选的循环结构垃圾空间扫描技术,一旦对象变得‘不可达’的时候就会被回收,但是不保证能够回收包含循环引用计数的内存垃圾。引用计数的算法比较直观:在每个存储片中记录了指向其的指针数目;在对存储片进行某些操作时,对引用计数进行更新,分配一个存储片时引用计数初始化为1,只要存储片的引用被复制,引用计数加1,存储片的引用被删除时,引用计数减1,如果引用计数减为0,则存储片会由于不可达而被回收。很明显引用计数算法不能回收循环的数据结构;设想一个简单的场景:对象a一个成员指向对象b,同时b也有一个成员指向a,而且代码中只有引用a的部分,b对象只是辅助a对象而生成的,如果后来a对象被删除了,那么a和b作为一个整体都变成内存垃圾了,理论上应该都被内存管理器删除,但是由于引用计数算法每次只考察一个结点,因此对于循环的数据结构无法回收。所以在编程时应尽量避免循环引用的情况出现。

1,Python的动态性掠影
Python是动态语言,所谓动态语言(Dynamic Programming Language),现在大致认同的一个定义是:程序运行期间允许改变程序结构或者变量类型。

def change_method(klass, method_name, replacement):
    'change a method using a replacement method'
    setattr(klass, method_name, new.instancemethod(replacement, None, klass))


def changed(self, *args, **kwds):
    print 'args: %s, kwds: %s, nothing' % (args, kwds)


def demo(  ):
    class Test:
        def fun(self, ran):
            print 'This is a method_change test %s' % ran
    d = Test(  )
    d.fun('hehe')
    change_method(Test, 'fun', changed)
    d.fun('haha')

demo(  )

程序输出如下:

This is a method_change test hehe
args: (‘haha’,), kwds: {}, nothing

可以看到Test类的fun方法在程序运行期间发生了改变。

稍稍解释一下程序代码:setattr(object, name, value)函数的功能是用来改变object类的name属性值为value;这里就是改变Test类的fun方法为一个新的方法replacement,instancemethod(function, instance, class)函数返回一个方法对象,注意在python里一切皆对象;可见setattr(…)一个语句就把Test类的fun方法替换成为changed函数了,体现了python的简单强大。

四、Python语言和其它语言的比较
Python语言的执行效率跟C/C++/Java比起来要稍逊一筹,但是代码长度大大缩短,并且Python跨平台、类库丰富、语法简单、开发速度快,因此常用Python代替C/Java构建大程序,涉及到系统效率的地方可以考虑用C/C++实现。而且Python也可以做glue language(胶水语言),因为Python跟C和Java的沟通能力非常的好。

三大脚本语言的比较:Perl Python Tcl

  Perl原是专门设计处理文本的,这方面能力最强,但是不适合编写大程序,语法晦涩难懂,与之相比,Python更易阅读,学习,可维护性更强,代码安全性更好(Python的异常处理),并且与Java语言更好的集成能力;Tcl的语法简单,和其它程序的交互能力强,可以和C语言集成,而且有tk辅助GUI开发,但是Tcl更多是作为scripting language和glue language,不适合写大程序,与之相比Python的应用范围要广阔的多。

Ruby:Python的正则表达式没有Ruby的用着方便,Ruby比Python有更完整的面向对象的语法,Ruby的主要功能都是用类的方法调用来实现的,不是函数;另一方面由于Ruby的强大,语言相对Python复杂,Ruby没有内省性,缺乏国际化支持,缺乏类似Jython的东西。

Python的实现

  CPython         通常的Python,完全用C语言实现的最原始的版本

Jython Python的纯Java实现;它可以将Python源代码翻译成Java字节码,在Java虚拟机上运行,是与Java的最无缝最平滑的集成;而且用户可以从Python访问所有Java库、构建Applet、与Java Bean集成等

Python for .NET

.NET平台上实现的Python;确切的说Python for .NET是一种编译器和运行时;它将 Python 脚本编译成外部虚拟机的格式,并使得.NET类库在Python语言中可用

IronPython .NET平台上的Python;相对于传统的Python,IronPython支持可选的静态编译功能,静态编译过的IronPython程序就形成了常规的.NET可执行文件(.EXE文件)。甚至还可以将IronPython程序静态编译为.NET动态链接库(.dll文件)并且供C#和VB.NET等.NET语言调用

  PyPy              用Python写的Python环境,很有趣

五、Python的应用

  Python自身的优秀特性决定了其在实际应用中的广泛性。快速原型开发;网络服务器脚本;科学计算;文档处理;数据库编程;嵌入开发;GUI开发;游戏开发;移动开发......Python拥有强大Python社区的支持,丰富的类库,以及C/C++/Java等语言提供可扩展模块。
全球已经有很多公司和政府使用Python进行企业级的软件开发和应用,比如Google

“Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we’re looking for more people with skills in this language.”
―――Peter Norvig, director of search quality at Google, Inc.

除了Google,还有NASA,NYSE,Yahoo!,RealNetworks,RedHat,LLNL,Fermilab,Zope Corporation,Alice project at CMU,Infoseek等等

Python的哲学(Pythonic)

在Python交互环境中输入”import this”,可以看到Python语言的设计哲学:

>>>import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
 Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced. 
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

与Perl语言不同,Python力求精简,Perl会提供给程序员很多种解决问题的方式,语言的泛化更强,但是Python则会在泛化、简单性和性能等方面作出权衡,力求给出一个最佳方案。

”The underlying idea that there should preferably be ONE obvious way to express a solution is part of what has kept Python so great as it evolved during the years.”

脚本语言
摩尔定律断言了处理器、内存或者I/O设备等将不再大幅度影响程序的执行效率,对于相当一部分的应用程序而言,实现同样的功能,用系统语言和脚本语言相比,生成代码的运行效率可能都会在可容忍的范围内,但是脚本语言代码量可能会低很多(Python和Java大约是1:6),开发周期更短,而且现在很多常用的功能都已经用系统语言实现了,可以作为功能模块,配合脚本语言的glue功能,即可完成系统实现。

  一般来说脚本语言的学习相比系统编程语言而言要更容易些,因为系统语言(如C/C++/Java)功能更加强大,语言复杂性高,学习周期长;从某种意义上说,脚本语言一句指令可以做更多事,更加人性化,体现了机器为人服务的宗旨。因为一个程序如果人做的少了,机器就相应做的多了,正好符合自动化的思想,发明机器就是为了要减轻人的劳动。脚本语言从这个角度来说是值得大力推崇的。但是没有什么是完美的,让机器做的太多的代价很有可能就是不如让机器做的少运行效率高。比如Python运行时要做动态的类型检查,要耗费机器运行时间,在C等静态编译的语言中这个工作是留给人做了,还有一些类似的因素,因此C的效率比Python高很多。


   脚本语言有其与生俱来的优点,但是优点也决定了缺点。类似的,各种语言之间都互有差异,语言只是工具,要根据任务的不同选择不同的工具。比如要文本处理就使用Perl或Awk,使用Zope就用Python,做专家系统就用Prolog,要跟操作系统底层交互就用C,跨平台就用Java或Python。

总结

Python最大特点:简单易用优美强大。简单性是Python语言最核心的设计哲学,例如Python的很多功能都是以扩展模块的形式提供的,Python的内核很小巧,语法简单,很容易学习;Python强调代码的可读性,以缩排的方式省去冗余,代码给人的感觉很清爽、美观;程序以模块和包的形式分发,版本可控性强;Python编译成的字节码具有平台无关性;代码长度相比C/C++/Java短很多;这些特性导致Python的开发周期短,而且可以作为快速原型开发的语言使用,即先用Python实现程序的主要模块,并测试发现bug,等模块稳定了之后再用C/C++等语言来实现替换Python模块;Python受到开源社区的广泛欢迎,大批的志愿者为Python语言贡献了源代码,使得Python的功能日趋完善。

Python还有很多不完善的地方,Python社区非常活跃,程序员可以通过提交PEP(Python增强提议)提出对Python语言改进的方案,促使Python语言不断发展;Python已经有15年的历史了,这期间不断的有新的语言特征被加进来,2.2版本之后的Python更倾向对大型软件的支持,比如静态方法,generator,property,method decorator等特征,对其它语言的优点Python也很注意学习。

### 回答1: Python是一种高级编程语言,语法简洁易懂,功能强大,适用于各种领域,特别是科学计算和数据分析。 主要特点: 1. 缩进语法:Python采用缩进来组织代码,不需要使用大括号。 2. 变量:在 Python 中,变量可以存储任何数据类型,并且可以随时重新赋值。 3. 数据类型:Python支持多种数据类型,如整数,浮点数,字符串,列表等。 4. 运算符:Python支持标准的算术,比较,逻辑运算符。 5. 控制结构:Python支持常见的控制结构,如if-else语句,for循环,while循环。 6. 函数:函数是可重用代码的一种方式,可以节省时间并增强代码的可读性。 7. 模块:模块是一组相关函数和变量的集合,可以方便地使用和分享代码。 这是Python语法的简要介绍,如果需要更详细的了解,请继续学习相关的资料。 ### 回答2: Python是一种简洁而强大的编程语言,具有简单易懂的语法。 首先,Python中使用缩进来表示代码块,而不是使用大括号。这使得代码看起来更加整洁,但也需要注意缩进的正确与一致性。 Python支持使用#来进行单行注释,可以用于解释代码的作用。 在Python中,不需要事先声明变量的类型,变量的类型是根据其值自动确定的。这意味着我们可以直接使用变量,而无需声明其类型。 Python中的基本数据类型包括整数、浮点数、字符串、布尔值等。它还支持列表、元组和字典等复杂的数据结构。 Python提供了丰富的运算符用于数值计算和逻辑控制,包括算术运算符如+、-、*、/等,比较运算符如==、!=、>、<等,逻辑运算符如and、or、not等。 Python提供了条件语句(if-else)、循环语句(for、while)和函数来进行逻辑控制和模块化编程。这些语法结构使得代码编写更加灵活和高效。 此外,Python还具有丰富的内置函数和标准库,可以用于执行各种任务,如文件操作、网络通信、图形界面等。 总之,Python语法简单易懂,使得编写Python代码变得简洁、易读,并且具有强大的功能和扩展性,因此在科学计算、数据分析、Web开发等领域得到广泛应用。 ### 回答3: Python是一种简单易学的高级编程语言,其语法灵活且易于阅读。以下是Python语法的简单介绍: 1. 变量和数据类型:在Python中,变量可以直接声明并赋值,无需指定数据类型。常见的数据类型包括整数、浮点数、字符串、布尔值等。 2. 条件与循环语句:Python使用if-else语句来进行条件判断,并使用缩进来划定代码块。循环语句有for循环和while循环,可以用来重复执行代码块。 3. 函数定义与调用:在Python中,函数可以通过def关键字进行定义,并可以被其他代码块调用。函数可以带有参数和返回值。 4. 列表和元组:列表是一种可变的有序集合,可以存储多个元素,并使用中括号来表示。元组与列表类似,但是其元素不可变,使用小括号表示。 5. 字典和集合:字典是一种键值对的数据结构,使用大括号表示,每个键值对用冒号分隔。集合是一种无序不重复元素的集合,使用大括号表示。 6. 字符串操作:字符串是一种不可变的序列,可以通过索引来访问和操作其中的字符。字符串还支持拼接、切片、查找等操作。 7. 文件读写:Python提供了简单且方便的文件读写操作。可以使用open函数打开文件,并通过read、write等方法对文件内容进行读写操作。 8. 异常处理:在编写程序时,可能会出现各种错误。Python提供了异常处理机制,可以使用try-except语句来捕获和处理异常。 总而言之,Python的语法简洁而直观,适合初学者入门。它具有丰富的内置函数和模块,可以实现各种功能。同时,Python还拥有庞大的社区支持和丰富的第三方库,可以满足各种需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值