最近经学长介绍学习python,为研究生做研究做准备,python对于科学计算有着很高的效率,对于科研人员当然是有着很强的诱惑,虽然我还没真正用它,但从整个学习的过程来看,的确是高效,学起来也很轻松。
初学只是简单地看了一下python的一些基本语法,一天看一点,一周结束,准备对一周的所学进行一点记录和总结。先来看一些大师对学python的感觉:
python的官方介绍是:python是一种简单易学,功能强大的编程语言,它有着高效率的高层数据结构,简单而有效地实现面向对象的编程。读一下像ESR这样的超级电脑高手谈Python的话,你会感到十分有意思:
● Eric S. Raymond是《The Cathedral and the Bazaar》的作者、“开放源码”一词的提出人。他说Python已经成为了他最喜爱的编程语言。这篇文章也是促使我第一次接触Python的
真正原动力。
● Bruce Eckel著名的《Thinking in Java》和《Thinking in C++》的作者。他说没有一种语言比得上Python使他的工作效率如此之高。同时他说Python可能是唯一一种旨在帮助程序员把事情弄得更加简单的语言。请阅读完整的采访以获得更详细的内容。
● Peter Norvig是著名的Lisp语言书籍的作者和Google公司的搜索质量主任(感谢Guido vanRossum告诉我这一点)。他说Python始终是Google的主要部分。事实上你看一下Google招聘的网页就可以验证这一点。在那个网页上,Python知识是对软件工程师的一个必需要求。
● Bruce Perens是OpenSource.org和UserLinux项目的一位共同创始人。UserLinux旨在创造一个可以被多家发行商支持标准的Linux发行版。Python击败了其它竞争对手如Perl和Ruby成为UserLinux支持的主要编程语言。
下载python,请到http://www.python.org/download/
虽然下面这些知识点很细节,但细节决定成败,这句老掉牙的话我还是很同意,记录下也是对自己这一周的学习做一点总结,同时也可以加深印象,免得做研究的时候用到又要重头学起。
1、如何退出Python提示符
如果你使用的是Linux/BSD shell,那么按Ctrl-d退出提示符。如果是在Windows命令行中,则按Ctrl-z再按Enter,而Ctrl-d则是输入空字符,表示触发EOF错误。
2、使用三引号('''或""")
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双
引号。
3、逻辑行与物理行
物理行是你在编写程序时所 看见 的。逻辑行是Python 看见的单个语句。Python假定每个物理行对应一个 逻辑行 。
4、在Python中没有switch语句。你可以使用if..elif..else语句来完成同样的工作(在某些场合,使用字典会更加快捷。)
5、语句for i in range(1,5),,range返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,range(1,5)给出序列[1, 2, 3, 4]。默认地,range的步长为1。如果我们为range提供第三个数,那么它将成为步长。例如,range(1,5,2)给出[1,3]。
6、函数通过关键字def定义,局部变量从它们的名称被定义的那点开始。只有在形参表末尾的那些参数可以有默认的参数值,即默认参数。
7、没有返回值的return语句等价于return None。None是Python中表示没有任何东西的特殊类型。例如,如果一个变量的值为None,可以表示它没有值。pass语句在Python中表示一个空的语句块。
8、sys.argv变量是一个字符串的列表,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数。sys.path包含输入模块的目录名列表。
9、含有0个或1个项目的元组。一个空的元组由一对空的圆括号组成,如myempty = ()。然而,含有单个元素的元组就不那么简单了。你必须在第一个(唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。即如果你想要的是一个包含项目2的元组的时候,你应该指明singleton = (2 , )。
10、列表、元组和字符串都是序列,序列的两个主要特点是索引操作符和切片操作符。索引操作符让我们可以从序列中抓取一个特定项目。切片操作符让我们能够获取序列的一个切片,即一部分序列。
E.g:slist = ['a','b','c','d']
索引操作符自然不用多说,但python运行有负值索引,如slist[-1] = 'd',表示从尾数的第一个数。
slist[1:3] = ['b','c']
切片操作符的第一个数(冒号之前)表示切片的开始位置,第二个数表示切片到那里结束,如果不指定第一个数,则从序列首开始,如果不指定最后一个数则到序列尾停止。
slist[2:] = ['c','d'] slist[:2] = ['a','b'] slist[1:-1] = ['b','c']
11、os.sep变量的用法——这会根据你的操作系统给出目录分隔符,即在Linux、Unix下它是'/',在Windows下它是'\\',而在Mac OS下它是':'。使用os.sep而非直接使用字符,会使我们的程序具有移植性,可以在上述这些系统下工作。
12、类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值,这个值就是self,如:假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1,arg2)——这就是self的原理了。
13、__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化,类似于C++的Constructor;对应的有__del__对应于Destructor。
14、Python中所有的类成员(包括数据成员)都是公共的,所有的方法都是有效的 。只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。
15、Python提供了一个标准的模块,pickle,使用之可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地 储存对象。cPickle功能和pickle完全相同,用C语言编写,比pickle快1000倍,储存使用dump函数,如:p.dump(slist,file);取储存使用load函数,如:p.load(file)
16、使用raise语句可以引发异常。
17、通过列表综合,可以从一个已有的列表导出一个新的列表。如:
listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]
print listtwo
结果为:[6, 8]
暂时学了这么多,以上是一些极易忘记的点,以后再通过学习《深入理解python》进行深入学习。