本学习笔记主要用要记录下学习<<Python基础教程>>过程中的一些Key Point,或自己没怎么搞明白的内容,可能有点杂乱,但比较实用,查找起来也方便。
原书:《Beginning.Python.From.Novice.to.Professional,2nd.Edition》,所以翻译过来,应该是《Python从入门到精通》
作者: Magnus Lie Hetland
整本书由易到难,面面俱到,有要注意的地方或者跟Python3.0区别,都会说明,例子也很实用。对于初学python者,或者有一定编程经验者,本书都非常有参考价值!整个笔记以该书为主,也加了些自己的理解,体会。忘了的时候,可以查查。
第01章:基础知识
------
Jython: Python的Java实现,运行在JVM中,相对稳定,但落后于Python,当前版本2.5,在TA(Python+Robot)会用到
IronPython:Python的C#实现,运行在Common Language Runtime,速度比Python要快
>>> from __future__ import division >>> 1/2 0.5#这是Python为未来预留的一个模块__future__
如果直接运算的话,值是0. 除非输入1/2.0,那么Python就当成否点数来运算
------
>>> 1 + 2 + 3
6
>>> _ + 4 #特殊变量_用于保存上一次计算的结果,只在交互环境下才有意义
10
------
几种退出shell的方式
1. IDLE菜单中的EXIT
2. >>> ^Z #WIN: Ctrl+Z按键,UNIX: Ctrl+D
3. >>> exit() #或者import sys; sys.exit(0)
4. >>> raise SystemExit #一般在程序中使用
------
变量名:包括字母、数字、下划线,不能以数字开头。所以下面正确的表述
正确: file_1; dict2; _del
错误: 9jin; hello world; g-z
------
input与raw_input的区别:
1. 如果输入是数字的话,input后,数据类型为int行,raw_input,则只能字符型.
必须用int(str1)进行转化,这在程序编程中要注意的。
>>> i = input('Enter here:') Enter here:32 >>> type(i) <type 'int'> >>> j = raw_input('Enter here:') Enter here:43 >>> type(j) <type 'str'> >>> raw_input('Enter a number:') Enter a number:4 '4' >>> input('Enter a number:') Enter a number:4 42. input不能包括特殊字符,转译字符,否则会报错,raw_input则可以。
>>> a = input('Enter here:') Enter here:\n\t也要注意如果是字符串输入的话,必须加单引号,或双引号
>>> a = input("Enter string:") Enter string:'hello' Traceback (most recent call last): File "<pyshell#75>", line 1, in <module> a = input('Enter here:') File "<string>", line 1 \n\t ^ SyntaxError: unexpected character after line continuation character >>> b = raw_input('Enter here:') Enter here:*\n\c\t >>>3. 在Win下面双击运行程序,如果想看到交互式的界面,要避免程序一闪而过,就在最底下加raw_input('Press Enter to Exit<>')
4. input函数里面,可以进行数学计算,
>>> input('Enter math expression here:') Enter math expression here:2+4*2 10
Note: 在python3.0里面,raw_input不存在了,统一用input()函数.
在Python3里面input函数不具备数学计算的功能.
------
format函数来格式化字符串
>>> price = 1000
>>> format(price,"06d")
'001000'
------
>>> round(1/2) 1.0 #遵循四舍五入 >>> math.floor(1.1),math.floor(-1.1) #floor始终是取小的,从名字也可以知道,地板,当然是最底层 (1.0, -2.0)------
cmath
>>> import math >>> math.sqrt(-1) #求负数的平方根 Traceback (most recent call last): File "<pyshell#94>", line 1, in <module> math.sqrt(-1) ValueError: math domain error 必须用cmath >>> import cmath >>> cmath.sqrt <built-in function sqrt> >>> cmath.sqrt(-1) 1j >>> (1+2j)*(3-4j) #复数的运算 (11+2j)------
shebang
如果希望Python脚本像普通脚本一样运行,可以在行首加上#!
再用chmod增加可执行权限,比如下面的:
#!/usr/bin/env python or #!/usr/bin/python $ chmod +x ./hello.py $ hello.py#如果不加的话,必须 ./hello.py 或者 python hello.py
------
单引号如果还涵单引号的号,必须加转译
''' ''' 三引号,可以按自己意愿输出字符串联,所见即所得的模式,还可以包含单引号,双引号
'Let\'s go' ''Let's go'' >>> print """This is a first programing... print "Hello,World!" print "Let's Go" """输出结果:
This is a first programing... print "Hello,World!" print "Let's Go"
>>> print str("Hello,World!") Hello,World! >>> print repr("Hello,World!") 'Hello,World!'str(), repr和反引号是转换值为字符型变量的三中方法
用``反引号来计算算术值,或引用带数字型的变量
>>> print `2+3` 5 >>> temp = 2 >>> print "Temp's value is:", temp Temp's value is: 2 >>> print "Temp's value is:" + str(temp) Temp's value is:2 >>> print "Temp's value is:" + `temp` Temp's value is:2 >>> print "Temp's value is:" + repr(temp) Temp's value is:2------
\ 在行中用于转义,如\n代表换行,\t制表符等,在行尾,可忽略,主要用于多行输入。如:
>>> 1 + 2 + 3 \ - 4 / 2 \ * 2 % 3 5.0>>> print "C:\\python27"
C:\python27
也就是说不能在字符串末尾输入\
>>> print "This is illegal.\"
SyntaxError: EOL while scanning string literal
如果真想表示的话,则需要这样:
print r'C:\python27\lib\test\pack1\pack2\pack3' '\\'
C:\python27\lib\test\pack1\pack2\pack3\
如果是长路径的话,这么输入的话就比较麻烦,如果嫌麻烦就在前面加r, raw,原始字符串.
表示保持原样,尤其是正则表达式匹配中,原始字符串会非常有用。
>>> print 'C:\\python27\\lib\\test\\pack1\\pack2\\pack3' C:\python27\lib\test\pack1\pack2\pack3 >>> print r'C:\python27\lib\test\pack1\pack2\pack3' C:\python27\lib\test\pack1\pack2\pack3一般python用的8位ASCII来存储数据的,如果想用Unicode字符来存储的话,则可以存储16位,可以存储更多的字符。用户类似于r
>>> u'Hello,World!'
u'Hello,World!'
本章节主要的内置函数
函数名 作用 例子
-----------------------------------------------------------------------
abs(number) 返回数字的绝对值 >>> abs(-2) #2
float(object) 将字符串和数字转换为否点型 >>> float('123') #123.0
help() 提供帮助的交互式界面 >>>help(math.cmath) #或help()
input(prompt) 获取用户输入 >>>input("Enter nuber:") #见上文
raw_input(prompt) 获取用户输入,字符型>>>raw_input("Enter:") #见上文
long(object) 将字符串和数字转换为长整数型 >>> long('12345')#12345L
math.ceil(number) 返回数的上入部分,否点型 >>> math.ceil(1.4) #2.0
math.floor(number) 返回数的下舍部分,否点型 >>> math.floor(-1.6)#-2.0
pow(x,y[,z]) 返回x的y次幂,再对z取模 >>> pow(3,2,4) #1
repr(object) 返回值的字符串方式 >>> repr(1234) #'1234'
str(object) 将值转换为字符串 >>> str(12345) #'12345'
round(number[,ndigit])根据指定精度的数字进行四舍五入操作 >>>round(3.14) #3.0
cmath.sqrt(number) 返回数字的平方根 >>> cmath.sqrt(-4) #-2j