关于Python的几点疑惑

一、python是什么?

  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?

1、开发效率高

Python是一门开发效率最高的语言,它比C有6倍的开发效率,简单来说,如果一个C开发人员工作6天,使用Python的开发人员只需要工作一天即可,意味着做Python开发人员可一周只上一天班。它比C++有2倍的开发效率,它比Java和C#也有1.5倍的开发效率。有这么高的开发效率,当然是用性能换来的代价,不过从目前硬件技术进步来看,目前的CPU计算能力普遍是过剩的,并且越来越多硬件成本降低,但人工的成本越来越贵。其实从社会进步来看,也是工具越来越先进,但人的大脑管理复杂程度并没有跟着提高,显然要提高起来就比较困难了。

2、调试运行方便

无论是在Windows平台,还是Linux平台,都一样开发和调试。跨平台运行更加方便,如果没有使用平台差别的API接口,只要写一遍代码,就可以在Windows平台或Linux平台上运行。

3、开源免费

Python无论在商业上,还是教育上,都是免费使用,意味可以零成本进入学习它,使用它。Python拥有众多功能完善的开发库可以使用。

4、测试领域需求

测试是软件开发里有相当大的工作量,比如模块测试,当开发人员把一个模块功能完成之后,需要测试这个模块是否正确,就需要搭建一堆测试代码,才可以验证的。这时,如果使用C++或Java来写这些功能,显然没有使用Python来得快,从前面效率就可以看到。因此,通常就会变成这样的开发模式:发布的软件是使用C++或Java开发,但测试的代码使用Python来开发。比如嵌入式系统涉及网络通讯方面,需要不断地向嵌入式系统发送网络数据和接收网络数据,就可以使用Python搭建一个测试环境出来,这样花费很少的时间,就可以对嵌入式系统进行验证,提高代码的质量,减少嵌入式系统与其它系统的调试时间,以及以后维护时间。另外,通过使用Python语言编写众多的脚本,就可以提高自动化测试水平,每发布一个版本,就可以把以前的测试用例,全自动化测试一遍,这样会大大提高对软件快速发布的要求。像我所见过的测试用例,就有几万个,如果靠手工方式测试,验证起来是非常慢的,并且并不全面。目前采用全自动化测试之后,每天24小时运行,一台电脑相当于10个测试员工的工作量,可见带来多大效率的提升。在可以预见的将来,在测试领域里,Python的工作需求会持续增加,要求所有测试人员都会掌握这个好用的工具。

 

三、Python 应用领域有哪些?

  Python 不仅仅是一个设计优秀的程序语言,它能够完成现实中的各种任务,包括开发者们日复一日所做的事情。作为编制其他组件、实现独立程序的工具,它通常应用于各种领域。实际上,作为一种通用语言,Python 的应用角色几乎是无限的:你可以在任何场合应用Python, 从网站和游戏开发到机器人和航天飞机控制。

  

  主要应用领域包括:系统编程,用户图形接口,Internet 脚本,组件集成,数据库编程,快速原型,数值计算和科学计算编程,游戏、图像、人工智能、XML 、机器人等。 

  

  详见:http://blog.163.com/myhome_2/blog/static/28595817201311259355568/ 

四、Python语法有什么独特之处?

1、基本概念

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、逻辑行与物理行

一个物理行中使用多于一个逻辑行,需要使用分号(;)来特别地标明这种用法。一个物理行只有一个逻辑行可不用分号

2、数据结构

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‘  : ‘[email protected]‘,
       ‘Larry‘   : ‘[email protected]‘,
       ‘Matsumoto‘ : ‘[email protected]‘,
       ‘Spammer‘  : ‘[email protected]‘
   }
print "Swaroop‘s address is %s" % ab[‘Swaroop‘]
# Adding a key/value pair
ab[‘Guido‘] = ‘[email protected]‘
# 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的字符

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 19:32:57

关于Python的几点疑惑的相关文章

magic method细解python一直让我疑惑的几个常用魔法方法(上)

这里只分析几个可能会常用到的魔法方法,像__new__这种不常用的,用来做元类初始化的或者是__init__这种初始化使用的 每个人都会用的就不介绍了. 其实每个魔法方法都是在对内建方法的重写,和做像装饰器一样的行为.理解这个道理 再尝试去理解每个细节装饰器会比较方便. 关于__str__和__repr__: 直接上例子: class Test(object): def __init__(self, world): self.world = world def __str__(self): re

【python】类(资料+疑惑)

1.http://python-china.org/t/77 有关method binding的理解 2.[Python] dir() 与 __dict__,__slots__ 的区别 3.Descriptor HowTo Guide 4.如何理解 Python 的 Descriptor? 5.简明Python魔法 - 1 6.简明Python魔法 - 2 7.详解Python中 __get__和__getattr__和__getattribute__的区别 8.定制类 9.Python 的 t

python (3)编码的疑惑

1.说明下面代码中两行# 第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释: 第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码. #!/usr/bin/env python # -*- coding: utf-8 -*- print u'中文测试正常' print '----------------------------------------------' print

Python基础部分的疑惑解析(2)

变量: 变量名由 字母.数字.下划线构成,数字不能做为开头 不能用关键字:另外一些内置的方法也别用 推荐使用下划线命名间两个单词user_id 变量在最后底层处理的时候没什么意义,但是在命名的时候有利于编码 条件语句: if: else: if后面如果没有要执行的要用pass占位 数据类型: 字符串:‘’双引号或单引号还有三引号(可换行的注释)包括起来的都是字符串 数值: 字符串可以做一些运算,加  乘一个数字就是连续的字符串 数值计算里 //是取除的整数结果,%是余数,/除 可以得到小数部分

Python解析excel文件并存入sqlite数据库

功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解析的数据存储入库 一 建立数据库 根据需求建立数据库,建立了两个表,并保证了可以将数据存储到已有的数据库中,代码如下: import sqlite3 def createDataBase(): cn = sqlite3.connect('check.db') cn.execute('''CREATE TABLE IF NOT EXISTS TB_CHECK (ID integer PRIMA

Python学习笔记 | 变量 + 引用 + 拷贝 + 作用域

在Python中,变量是没有类型的,在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没有赋值,那么Python认为这个变量没有定义(not defined). 一.变量和对象 1. 可变对象和不可变对象 在Python中,对象分为两种:可变对象和不可变对象,不可变对象包括int,float,long,str,tuple等,可变对象包括list,set,dict等.需要注意的是:这里说的不可变指的是值的不可变.对于不可变类

python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域

在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个问题吧: 在Python中,令values=[0,1,2];values[1]=values,为何结果是[0,[...],2]? >>> values = [0, 1, 2] >>> values[1] = values >>> values [0, [.

python 深入理解 赋值、引用、拷贝、作用域

在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个问题吧: 在Python中,令values=[0,1,2];values[1]=values,为何结果是[0,[...],2]? >>> values = [0, 1, 2] >>> values[1] = values >>> values [0, [.

7个你现在应该学习python的理由

Python 是一门更注重可读性和效率的语言,尤其是相较于 Java,PHP 以及 C++ 这样的语言,它的这两个优势让其在开发者中大受欢迎. 诚然,它有点老了,但仍是80后啊 -- 至少没有 Cobol 或者 Fortran 那么老.而且,如果还能派上用场的话,为啥要折腾着改变它呢 (尤其在这个还有那么多方法可以提升它性能的时候)? 实际上这要看你怎么看待它,生命线长本身就是件好事 -- 说明它稳定且可靠. 如果你是像其他许多人一样都是从 Java,C 或者 Perl 开始进入职业生涯的,那么