Python(英语发音:/?pa?θ?n/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年 。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块很轻松地联结在一起。根据其实现方法的不同,可分为:CPython(默认用C实现),Jython,IronPython,PyPy等等。
1、python是解释型语言而非编译型语言:将源码转换成字节码,之后再解释这些字节码,执行之。
解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程 序,每个语句都是执行的时候才翻译。
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等编译型与解释型,两者各有利弊
前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
2、为什么有那么多python实现?
前面也提到,CPython是最通用的,是一个用C实现的,被认为是”默认“的实现。但其他的呢?其中最显赫的之一就是Jython,一个用Java实现的采用了JVM的实现。CPython中很容易为你的Python代码写C扩展,因为最终都是由C解释器执行的。另一方面,Jython则使得和其他java程序共同工作很容 易:无需其他工作,你就可导入任何Java类,在你的Jython程序中使用其他Java类。IronPython是另一很流行的Python 实现,完全用C#实现,针对.NET平台。她运行在可以叫做.NET虚拟机的平台上,这是微软的 Common Language Runtime (CLR),同JVM相对应。
Python是一门开发效率最高的语言,它比C有6倍的开发效率,简单来说,如果一个C开发人员工作6天,使用Python的开发人员只需要工作一天即可,意味着做Python开发人员可一周只上一天班。它比C++有2倍的开发效率,它比Java和C#也有1.5倍的开发效率。有这么高的开发效率,当然是用性能换来的代价,不过从目前硬件技术进步来看,目前的CPU计算能力普遍是过剩的,并且越来越多硬件成本降低,但人工的成本越来越贵。其实从社会进步来看,也是工具越来越先进,但人的大脑管理复杂程度并没有跟着提高,显然要提高起来就比较困难了。
无论是在Windows平台,还是Linux平台,都一样开发和调试。跨平台运行更加方便,如果没有使用平台差别的API接口,只要写一遍代码,就可以在Windows平台或Linux平台上运行。
Python无论在商业上,还是教育上,都是免费使用,意味可以零成本进入学习它,使用它。Python拥有众多功能完善的开发库可以使用。
测试是软件开发里有相当大的工作量,比如模块测试,当开发人员把一个模块功能完成之后,需要测试这个模块是否正确,就需要搭建一堆测试代码,才可以验证的。这时,如果使用C++或Java来写这些功能,显然没有使用Python来得快,从前面效率就可以看到。因此,通常就会变成这样的开发模式:发布的软件是使用C++或Java开发,但测试的代码使用Python来开发。比如嵌入式系统涉及网络通讯方面,需要不断地向嵌入式系统发送网络数据和接收网络数据,就可以使用Python搭建一个测试环境出来,这样花费很少的时间,就可以对嵌入式系统进行验证,提高代码的质量,减少嵌入式系统与其它系统的调试时间,以及以后维护时间。另外,通过使用Python语言编写众多的脚本,就可以提高自动化测试水平,每发布一个版本,就可以把以前的测试用例,全自动化测试一遍,这样会大大提高对软件快速发布的要求。像我所见过的测试用例,就有几万个,如果靠手工方式测试,验证起来是非常慢的,并且并不全面。目前采用全自动化测试之后,每天24小时运行,一台电脑相当于10个测试员工的工作量,可见带来多大效率的提升。在可以预见的将来,在测试领域里,Python的工作需求会持续增加,要求所有测试人员都会掌握这个好用的工具。
Python 不仅仅是一个设计优秀的程序语言,它能够完成现实中的各种任务,包括开发者们日复一日所做的事情。作为编制其他组件、实现独立程序的工具,它通常应用于各种领域。实际上,作为一种通用语言,Python 的应用角色几乎是无限的:你可以在任何场合应用Python, 从网站和游戏开发到机器人和航天飞机控制。
主要应用领域包括:系统编程,用户图形接口,Internet 脚本,组件集成,数据库编程,快速原型,数值计算和科学计算编程,游戏、图像、人工智能、XML 、机器人等。
详见:http://blog.163.com/myhome_2/blog/static/28595817201311259355568/
A、数
在Python中有4种类型的数——整数、长整数、浮点数和复数。
(1)2是一个整数的例子。
(2)长整数不过是大一些的整数。
(2)3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(4)(-5+4j)和(2.3-4.6j)是复数的例子。
B、字符串
(1)使用单引号(’)
(2)使用双引号(”)
(3)使用三引号(”’或”“”)
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。例如:
‘‘‘This is a multi-line string. This is the first line.
This is the second line.
"What‘s your name?," I asked.
He said "Bond, James Bond."
‘‘‘
(4)转义符
(5)自然字符串
自然字符串通过给字符串加上前缀r或R来指定。例如r”Newlines are indicated by \n”。
C、逻辑行与物理行
一个物理行中使用多于一个逻辑行,需要使用分号(;)来特别地标明这种用法。一个物理行只有一个逻辑行可不用分号
A、列表
shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]
print ‘I have‘, len(shoplist),‘items to purchase.‘
print ‘These items are:‘, # Notice the comma at end of the line
for item in shoplist:
print item,
print ‘\nI also have to buy rice.‘
shoplist.append(‘rice‘)
print ‘My shopping list is now‘, shoplist
print ‘I will sort my list now‘
shoplist.sort()
print ‘Sorted shopping list is‘, shoplist
print ‘The first item I will buy is‘, shoplist[0]
olditem = shoplist[0]
del shoplist[0]
print ‘I bought the‘, olditem
print ‘My shopping list is now‘, shoplist
B、元组
元组和列表十分类似,只不过元组和字符串一样是不可变的即你不能修改元组。
zoo = (‘wolf‘, ‘elephant‘, ‘penguin‘)
print ‘Number of animals in the zoo is‘, len(zoo)
new_zoo = (‘monkey‘, ‘dolphin‘, zoo)
print ‘Number of animals in the new zoo is‘, len(new_zoo)
print ‘All animals in new zoo are‘, new_zoo
print ‘Animals brought from old zoo are‘, new_zoo[2]
print ‘Last animal brought from old zoo is‘, new_zoo[2][2]
像一棵树
元组与打印
age = 22
name = ‘Swaroop‘
print ‘%s is %d years old‘ % (name, age)
print ‘Why is %s playing with that python?‘ % name
C、字典
类似哈希
ab = { ‘Swaroop‘ : ‘swaroopch@byteofpython.info‘,
‘Larry‘ : ‘larry@wall.org‘,
‘Matsumoto‘ : ‘matz@ruby-lang.org‘,
‘Spammer‘ : ‘spammer@hotmail.com‘
}
print "Swaroop‘s address is %s" % ab[‘Swaroop‘]
# Adding a key/value pair
ab[‘Guido‘] = ‘guido@python.org‘
# Deleting a key/value pair
del ab[‘Spammer‘]
print ‘\nThere are %d contacts in the address-book\n‘ % len(ab)
for name, address in ab.items():
print ‘Contact %s at %s‘ % (name, address)
if ‘Guido‘ in ab: # OR ab.has_key(‘Guido‘)
print "\nGuido‘s address is %s" % ab[‘Guido‘]
D、序列
列表、元组和字符串都是序列。序列的两个主要特点是索引操作符和切片操作符。
shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]
# Indexing or ‘Subscription‘ operation
print ‘Item 0 is‘, shoplist[0]
print ‘Item 1 is‘, shoplist[1]
print ‘Item -1 is‘, shoplist[-1]
print ‘Item -2 is‘, shoplist[-2]
# Slicing on a list
print ‘Item 1 to 3 is‘, shoplist[1:3]
print ‘Item 2 to end is‘, shoplist[2:]
print ‘Item 1 to -1 is‘, shoplist[1:-1]
print ‘Item start to end is‘, shoplist[:]
# Slicing on a string
name = ‘swaroop‘
print ‘characters 1 to 3 is‘, name[1:3]
print ‘characters 2 to end is‘, name[2:]
print ‘characters 1 to -1 is‘, name[1:-1]
print ‘characters start to end is‘, name[:]
E、参考
当你创建一个对象并给它赋一个变量的时候,这个变量仅仅参考那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。
print ‘Simple Assignment‘
shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]
mylist = shoplist # mylist is just another name pointing to the same object!
del shoplist[0]
print ‘shoplist is‘, shoplist
print ‘mylist is‘, mylist
# notice that both shoplist and mylist both print the same list without
# the ‘apple‘ confirming that they point to the same object
print ‘Copy by making a full slice‘
mylist = shoplist[:] # make a copy by doing a full slice
del mylist[0] # remove first item
print ‘shoplist is‘, shoplist
print ‘mylist is‘, mylist
# notice that now the two lists are different
F、字符串
name = ‘Swaroop‘ # This is a string object
if name.startswith(‘Swa‘):
print ‘Yes, the string starts with "Swa"‘
if ‘a‘ in name:
print ‘Yes, it contains the string "a"‘
if name.find(‘war‘) != -1:
print ‘Yes, it contains the string "war"‘
delimiter = ‘_*_‘
mylist = [‘Brazil‘, ‘Russia‘, ‘India‘, ‘China‘]
print delimiter.join(mylist) //用delimiter来连接mylist的字符
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/dengpeng0419/article/details/47731153