Python学习笔记(1)-快速浏览

Python是一门解释型语言,一般来说,由于不是以本地机器码运行,纯粹的解释型语言通常比编译型语言运行的慢。然而,类似于Java,Python 
实际上是字节编译的,其结果就是可以生成一种近似机器语言的中间形式。这不仅改善了Python的性能,还同时使它保持了解释型语言的优点。
其他语言扩展
CPython:C/C++
Jython:Java
IronPython:.Net/C#

几个特点:可扩展、可移植性、易学、易读、易维护、健壮性 

1.在Python 中未指定返回值的函数会自动返回None,等价于NULL

2.Python 不支持C 语言中的自增1 和自减1 运算符, 这是因为 + 和 - 也是单目运算符,
Python 会将 --n 解释为-(-n) 从而得到 n , 同样 ++n 的结果也是 n.

3.print语句

在print 语句中使用逗号来抑制自动生成的换行符号

字符串替换功能:print "%s is number %d!" % ("Python",1)  这一点和C语言中的printf()函数非常相似
print重定向到文件:
重定向到标准错误输出:
import sys
print >> sys.stderr,'Fatal error:invalid input!'
重定向到日志文件:
logfile=open('/temp/mylog.txt','a')
print >> logfile,'Fatal error:invalid input!'
logfile.close()
4.raw_input()内建函数,读取标准输入,并将读取到的数据赋值给指定的变量
user=raw_input('Enter login name:')
print 'Your login is:',user

5.小技巧help()内建函数,如果需要得到一个生疏函数的帮助,只需要对它调用内建函数help()就会得到相应的帮主信息

help(raw_input)

6.注释#,python采用#进行注释

7.逻辑运算符 and or not

3 < 4 < 5 //在python中是合法的,更简洁优美,其实这个表达式本质上是由多个隐式的 and 连接起来的多个表达式。

8.字符串

使用索引运算符( [ ] )和切片运算符( [ : ] )可以得到子字符串。

加号( + )用于字符串连接运算,星号( * )则用于字符串重复。

9.列表和元组

列表和元组可以存储不同类型的对象

列表和元组有几处重要的区别。列表元素用中括号( [ ])包裹,元素的个数及元素的值可以改变。元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以)。元组可以看成是只读的列表。通过切片运算( [ ] 和 [ : ] )可以得到子集,这一点与字符串的使用方法一样。

10.字典

字典元素用大括号({ })包裹。

11.if语句

与其它语言不同, 条件条达式并不需要用括号括起来。

Python 还支持 elif (意指 “else-if ”)语句。

12.for ... in ... 迭代

13.range()和enumerate()函数

foo = 'abc'
for i in range(len(foo)):
    print foo[i], '(%d)' % i

for i, ch in enumerate(foo):
    print ch, '(%d)' % i

14.列表解析

你可以在一行中使用一个for 循环将所有值放到一个列表当中:

squared = [x ** 2 for x in range(4)]
for i in squared:
    print i

做更复杂的事情, 比如挑选出符合要求的值放入列表:

sqdEvens = [x ** 2 for x in range(8) if not x % 2]

15.文件和内建函数open() 、file()

打开文件:handle = open(file_name, access_mode = 'r')

access_mode 中 'r' 表示读取,'w' 表示写入, 'a' 表示添加。其它可能用到的标声还有 '+' 表示读写, 'b'表示二进制访问. 如果未提供 access_mode , 默认值为 'r'。如果 open() 成功, 一个文件对象句柄会被返回。所有后续的文件操作都必须通过此文件句柄进行。

16.异常

要给你的代码添加错误检测及异常处理, 只要将它们封装在 try-except 语句当中。

也可以通过使用 raise 语句故意引发一个异常。

17.函数

Python 是通过引用调用的。 这意味着函数内对参数的改变会影响到原始对象。不过事实上只有可变对象会受此影响, 对不可变对象来说, 它的行为类似按值调用。

def foo(debug=True): //函数的参数可以有一个默认值
18.类

当一个类实例被创建时, __init__() 方法会自动执行, 在类实例创建完毕后执行, 类似构建函数。__init__() 可以被当成构建函数, 不过不象其它语言中的构建函数, 它并不创建实例--它仅仅是你的对象创建后执行的第一个方法。它的目的是执行一些该对象的必要的初始化工作。通过创建自己的 __init__() 方法, 你可以覆盖默认的 __init__()方法(默认的方法什么也不做),从而能够修饰刚刚创建的对象。

self关键字相当于Java中的this

创建一个类实例就像调用一个函数,不需要像Java一样的new关键字。

19.一些实用内建函数

dir([obj]) 显示对象的属性,如果没有提供参数, 则显示全局变量的名字
help([obj]) 以一种整齐美观的形式 显示对象的文档字符串, 如果没有提供任何参数, 则会进入交互式帮助。
int(obj) 将一个对象转换为整数
len(obj) 返回对象的长度
open(fn, mode) 以 mode('r' = 读, 'w'= 写)方式打开一个文件名为 fn 的文件
range([[start,]stop[,step]) 返回一个整数列表。起始值为 start, 结束值为 stop - 1; start默认值为 0, step默认值为1。
raw_input(str) 等待用户输入一个字符串, 可以提供一个可选的参数 str 用作提示信息。
str(obj) 将一个对象转换为字符串
type(obj) 返回对象的类型(返回值本身是一个type 对象!)

20.语句符号

反斜线 ( \ ) 继续上一行
分号 ( ; )将两个语句连接在一行中
冒号 ( : ) 将代码块的头和体分开
语句(代码块)用缩进块的方式体现,四个空格非常流行,不推荐使用Tab
不同的缩进深度分隔不同的代码块

21.Python 中下划线的特殊用法

_xxx 不用'from module import *'导入
_xxx__系统定义名字
_xxx 类中的私有变量名

核心风格:避免用下划线作为变量名的开始
因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx 被看作是“私有的”,在模块或类外不可以使用。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。因为变量名__xxx__对Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。

22.使用局部变量替换模块变量

让你的程序跑的更快的技巧: 将经常用到的模块属性替换为一个本地引用。

23.一些有用的模块

调试模块: Debugger: pdb
日志模块 Logger: logging
性能测试模块 Profilers: profile, hotshot, cProfile

你可能感兴趣的:(Python学习笔记(1)-快速浏览)