《转》python学习基础
学习的python本来想自己总结,但是发现了一篇不错的大牛的博客,拿来主义,,又被我实践了
关于前两篇如果总结的不详细,因此把他人的转载过来 http://www.cnblogs.com/BeginMan/archive/2013/04/12/3016323.html
一、欲练此功,必先自宫
从现在起,就开始真正地接触她了,或许很多人像我一样,不知道如何去快速掌握一门新的编程语言,今天贴出来一些建议,方便大家看看,这也是学习之前的十分重要的事情。虽然“欲练此功,必先自宫”太夸张,但是在学习之前,肯定要做好准备了。由于工作中使用Python,在工作前一个月就开始学习并投入到实际项目中,时隔一个月的学习,今天重温一遍。我做的准备如下:
这个在上一章学习笔记中已经做好了
2.资料准备
《Python 核心编程》
Python官方文档
博客园、CSDN等社区
3.入门教程准备
大约在六月份之前完成Python入门笔记。
4.心理准备
关于如何学好一门新的编程语言,这里推荐阅读:http://www.cnblogs.com/chgaowei/archive/2011/05/29/2061902.html
5.知识框架拆分准备
通过对整个Python学习过程中的框架进行拆分,利用《Python核心编程》一书中,几乎涵盖了所有Python知识点,但是对于像我一样的新手来说,我还是难以掌握她的整个学习框架、流程。如果我们大致看了这一本书,就能细分她的框架,分成模块来学,这样才能做到心中有数。下面是我拆分的框架:(由于我们先从Python基础学习,所以这里不考虑高级部分)
[1]、Python基础部分:
(1).语法基础、(2)、数据类型、(3).Python对象、(4).字符串、元祖和列表、(5).映射和集合、(6).函数
[2]、流程控制
条件和循环
[3]、文件操作
[4]、模块
[5]、面向对象
[6]、异常处理
[7]、环境部署
好了,这些准备都到位了,现在就开始学习吧,没事的时候建议看看Python哲学
我不知道自己之前是如何写第一个Python程序的,貌似是照着《Dive Into Python》这本令人在之前学起来蛋疼的教程中写的。一如既往地,咱们从"helloworld"开始看吧,哈哈,我们学的很多语言都是从helloworld开始的。
>>> 1 + 1 2 >>> print 'hello world' hello world >>> x = 1 >>> y = 2 >>> x + y 3
这里例子并不能说明什么语法,但是能让我们熟悉一些,比如,Python 既是 动态类型定义语言 (因为它不使用显示数据类型声明) , 又是 强类型定义语言 (因为一旦一个变量具有一个数据类型, 它实际上就一直是这个类型了) 、一句程序结束后并不不以分号结尾、print 可以输出字符串等。那下面就细致讲解下python语法吧
1、注释
和很多Unix脚本类似,Python的注释语句从#字符开始,如:
# print "hello world"
注意Python的#字符注释只能实现单行注释,或许很多人和我一样好奇,如果要注释掉一百多行代码,那么是不是敲一百多次#呢??毋庸置疑,如果我们这样做,只能说明还是打酱油的雇的帮打酱油的人。
(1).程序控制法:
在不影响整个程序的情况下,我们可以把一大堆要注释掉的代码段,利用if条件句进行间接注释,也就是if屏蔽了要注释的代码块的执行、可以使用 if False:、if None:、if 0:进行屏蔽处理,如下:
1 在eclipse中: 2 print 'BeginMan' #输出 3 if False: #屏蔽,if 后还可以是 0、None等一切布尔值为假的条件 4 print 'hello world' 5 print 'good man' 6 print 'sssss' 7 print 'ok!' #输出
则if 下的代码不会执行,也就没输出了。但是这个技巧呢,最好不要用,可能在很多代码存在的情况下存在潜伏的异常。
(2).编辑器技巧
如果在eclipse下,选中多行,可以使用快捷键ctrl+/注释或取消注释,这个强烈推荐,真是“工欲善其事,必先利其器”啊,对于编辑器,最好是掌握常用的快捷键,才能提高开发效率。
(3).doc string (文档字符串)
1 def foo(params): 2 """print a,b,c and return a """
三重引号(包含单引号又包含双引号)表示一个多行字符串。在开始与结束引号间的所有东西都被视为单个字符串的一部分, 包括硬回车和其它的引号字符。在三重引号中的任何东西都是这个函数的doc string, 它们用来说明函数可以做什么。 如果存在 doc string, 它必须是一个函数要定义的第一个内容( 也就是说, 在冒号后面的第一个内容 )。 在技术上不要求给出函数的 doc string, 但应该这样做。 Python 带来一些额外的动机: doc string 在运行时可作为函数的属性。
2、换行(\n)
常见的换行符,在学其他编程语言中经常看到。
3、反斜线(\)继续上一行
也就是对一行一个语句的隔行,针对一些过长的语句可使用反斜杠\来分解成多行,如:
1 if a>0 and \ 2 b<0 : 3 print 'ok!'
有两种例外情况可以不用反斜杠,一种是:小括号()、中括号[]、花括号{};另外一种是三引号。针对可读性,不建议使用反斜杠。
4、代码缩进
Python 函数没有明显的 begin 和 end, 没有花括号, 用于标函数的开始和结束。 唯一的分隔符是一个冒号 (:), 接着代码本身是缩进的。例子可以参考上面的。注意,码缩进十分严格,如果不按规律办事,不小心的话就会出现语法错误,比如unexpected indent之类的。甚至有时也会出现逻辑错误。
5、使用分号(;)可以在同一行书写多个语句
如;import os; a=123; print a
注意句子末尾不要带;建议不要这样写,因为会大大降低代码的可读性。
6、模块
每个python脚本看做一个模块,磁盘的形式存放,可多次拆分成多个模块。使用import 导入。
注意,与C#、Java、C/C++等编程语言不一样,Python的变量没有类型,它的类型是在内存中根据对象所确定的。由于涉及到Python函数部分,在本节先不讲,在后面的部分会有讲解。这一节就首先学学变量赋值。
Python是弱类型,无需明确指定变量类型,赋值的同时会自动声明类型。如:
1 >>> anInt=10 2 >>> astr="Car" 3 >>> aFloat=-1.2+3 4 >>> aList=[1,2,3] 5 >>> aTuple=('aa','ss') 6 >>> print anInt,astr,aFloat,aList,aTuple 7 10 Car 1.8 [1, 2, 3] ('aa', 'ss')
我们需要注意以下几点:
1、在Python中是通过对象的引用而不是值来赋值给变量的。
2、赋值操作符主要是"=",同时也可使用增量赋值,如 x+=1。但是没有自增、自减操作符。
3、在C语言中,赋值语句可以当作表达式(可以返回值),但是在Python中赋值语句不会返回值,如下面的就是非法的:
>>> x=1 >>> y=(x=x+1) SyntaxError: invalid syntax
4、Python支持链式赋值、多重赋值、多元赋值
(1).链式赋值:
>>> y=x=x+1 >>> x,y (2, 2)
(2).多重赋值
>>> x=y=z=1 >>> x,y,z (1, 1, 1)
值为1的整型对象被创建,该对象的同一引用被赋值给了x,y,z
(3).多元赋值
为什么叫做多元赋值,在Python核心编程书中说,是作者自己其的名称,因为等号两边对象都是元祖。
>>> x,y,z=1,'ssss',True >>> x,y,z (1, 'ssss', True)
x,y,z=1,'as',3 (x,y,z)=1,'as',3 (x,y,z)=(1,'as',3) #推荐
其中,Python变量交换实在太优雅了,如果交换x和y的值,在其他语言,如C,我们或许用一个临时变量来完成工作。但是在Python中,你只需这样做就行了
>>> x,y=y,x >>> x,y ('ssss', 1)
首先变量的命名规则跟其他主流语言如C一样,其次,Python关键字、标识符在Python文档中都有,必要时可翻阅。
1 #coding=utf-8 #编码格式 2 ''' 3 Created on 2013-3-11 4 @author: BeginMan 5 ''' 6 "this is a test module" #模块文档 7 import os #导入模块 8 import sys 9 s=True #全局变量(globalvariable) 10 class FooClass(object): #类的定义 11 "fooclass test" #类的文档对象 12 classAttribute=10 #类属性 13 def myFunction(self): #函数定义 14 "function test" #函数的文档对象 15 dataAttribute="BeginMan" #数据属性(实例属性) 16 pass 17 18 if __name__=="__main__": #主程序 19 inst=FooClass() 20 pass 21
这里我们重点是Python的主程序。那么什么是Python的主程序呢,就是说无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。通常这里不会有太多功能性代码,而是执行模式调用不同函数。
时刻记住一个事实,所有模块都有能力来执行代码,最高级别的Python语句,即没有缩进的代码,在模块被导入时就会执行。