python学习笔记.docx
- 文档编号:6863815
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:125
- 大小:761.75KB
python学习笔记.docx
《python学习笔记.docx》由会员分享,可在线阅读,更多相关《python学习笔记.docx(125页珍藏版)》请在冰豆网上搜索。
python学习笔记
python学习笔记
(一)——入门1
python学习笔记
(二)——数据类型9
python学习笔记(三)——字符串20
python学习笔记(四)——数据字典25
python学习笔记(五)——语句35
python学习笔记(六)——函数45
python学习笔记(七)——文件和目录操作57
初识Redis及Redis在Windows下的安装和使用64
python小专题——time模块69
python一些小知识76
python小专题——JSON79
python小专题——optparse模块82
python小专题——urllib2模块88
python调用powershell、远程执行bat92
python对MySQL的CRUD102
python检测服务器是否ping通107
python操作excel表格(xlrd/xlwt)110
python学习笔记
(一)——入门
python很多人都非常熟悉,而我作为后知后觉者,虽然慢人一步,但是学习永远不会晚。
其实作为shell,不管是perl还是ruby、powershell等,语法很相似的,我以前没接触过python,现在从最基础的学起,当然对于非常简单的并没有详细记录,简单的准备记录下应该注意的地方。
虽然python3.X的shell工具已经出来了,但是相关教程好像没找到,而且与python2.x语法好多不兼容。
所以我的学习环境是pythonshell2.7,也是目前最稳定和常用的版本吧。
娱乐阶段:
学习python之前,先来看看python的设计哲学,我觉得GuidovanRossum一定是个有趣的人,能将设计思想展现在python解释器中,呵呵。
输入importthis命令:
Python2.7.3(default,Apr102012,23:
31:
26)[MSCv.150032bit(Intel)]onwin32
Type"copyright","credits"or"license()"formoreinformation.
>>>importthis
TheZenofPython,byTimPeters
Beautifulisbetterthanugly.优美胜于丑陋
Explicitisbetterthanimplicit.明了胜于晦涩
Simpleisbetterthancomplex.简单胜过复杂
Complexisbetterthancomplicated.复杂胜过凌乱
Flatisbetterthannested.扁平胜于嵌套
Sparseisbetterthandense.间隔胜于紧凑
Readabilitycounts.可读性很重要
Specialcasesaren'tspecialenoughtobreaktherules.即使假借特例的实用性之名,也不违背这些规则
Althoughpracticalitybeatspurity.虽然实用性次于纯度
Errorsshouldneverpasssilently.错误不应该被无声的忽略
Unlessexplicitlysilenced.除非明确的沉默
Inthefaceofambiguity,refusethetemptationtoguess.当存在多种可能时,不要尝试去猜测
Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.应该有一个,最好只有一个,明显能做到这一点
Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch.虽然这种方式可能不容易,除非你是python之父
Nowisbetterthannever.现在做总比不做好
Althoughneverisoftenbetterthan*right*now.虽然过去从未比现在好
Iftheimplementationishardtoexplain,it'sabadidea.如果这个实现不容易解释,那么它肯定是坏主意
Iftheimplementationiseasytoexplain,itmaybeagoodidea.如果这个实现容易解释,那么它很可能是个好主意
Namespacesareonehonkinggreatidea--let'sdomoreofthose!
命名空间是一种绝妙的理念,应当多加利用
>>>
哈哈,和一般的语言不同,在“helloworld”程序开始之前,它还有一番人生哲学啊。
初步入门:
第一个python程序:
(和其他脚本一样,可以按tab键快速选择)
>>>print"helloworld"==>print是一个函数
helloworld
>>>
这个在python3.0的解释器中运行是错误的,应该写成:
print("helloworld"),不管这些,以下均是2.X版本下。
基础知识:
交互式python解释器可以当非常强大的计算器使用
>>>1+1
2
>>>1/2==>和其他语言一样,不做任何处理的情况下,这个是取整
0
>>>1.0/2==>将任意一个数写成浮点形式,则结果会与精度最大的保持一致
0.5
>>>1./2==>单独写个小数点也行
0.5
>>>1//2==>//这个符号是专门取整的
0
>>>
假如不想每次都要这么费劲一下,我就想在python里执行普通的除法,有办法:
>>>from__future__importdivision==>注意future左右是两个下划线
>>>1/2
0.5
>>>1//2==>在这种情况下你反而想取整数部分了,使用//
>>>0
>>>1.//2
>>>0.0
长整型和进制:
>>>958346283662845==>2.2版本以前是不能处理长整型的,范围是-2147483648~2147483647
958346283662845L==>L表示长整型,而且是大写
>>>0xAF==>16进制
175
>>>010==>8进制(010首数字是0,表8进制)
8
>>>
获取用户输入:
>>>x=input("x=")
x=3
>>>y=input("y=")
y=4
>>>x*y
12
函数:
>>>pow(2,3)==>求幂函数
8
>>>2**3
8
>>>abs(-10)==>取绝对值
10
>>>round(5/2)==>这里是先算5/2,即2,所以round
(2)=2.0
2.0
>>>round(2.5)==>把浮点数四舍五入为最接近的整数值
3.0
>>>floor(32.9)==>取为不大于该数的最大整数
32
模块:
>>>floor(23.5)
==>出错了
#ff0000;">Traceback(mostrecentcalllast): File" floor(23.5) NameError: name'floor'isnotdefined >>>importmath==>引入模块math >>>math.floor(23.5) 23.0 >>>int(math.floor(23.5))==>转换为整数 23 >>> 那我不想每次都输入math.来调用相应函数,如下写法: >>>frommathimportfloor >>>floor(3.2) 3.0 cmath和复数: 在高中的时候有复数的预算,比如对一个复数取平方根,python提供了对复数处理的机制,但是要引入cmath模块。 >>>sqrt(-9) Traceback(mostrecentcalllast): File" sqrt(-9) NameError: name'sqrt'isnotdefined >>>importmath==>引入math模块也无效 >>>math.sqrt(-9) Traceback(mostrecentcalllast): File" math.sqrt(-9) ValueError: mathdomainerror >>>importcmath==>引入cmath模块 >>>cmath.sqrt(-9) 3j >>>(1+3j)*(9-2j)==>还可以进行计算 (15+25j) >>> (__future__这个模块比较特别,它可以导入那些在未来会成为标准python组成的新特性) 保存并执行程序: 现在建一个python文件,扩展名是.py,把print"hellopython! "写入,双击,我们看到的是一闪而过的一个黑框,我记得在执行C#窗体程序的时候也会出现这种情况,只要在主程序结尾加上"Console.ReadKey()"就行了,这里也是,要给控制台一个提醒输入的机会,不然运行完就退出了,在结尾加一个语句: raw_input()。 再双击即可弹出“hellopython! ” 执行这个文件hello.py name=raw_input("whatisyouname: ") print"hello"+name+"! " raw_input() 字符串: >>>"hellopython! "==>双引号会把原字符串按原样显示 'hellopython! ' >>>"we'llgoshopping! " "we'llgoshopping! " >>>'we'llgoshopping! ' SyntaxError: invalidsyntax >>>'we\'llgoshopping! '==>转义单引号 "we'llgoshopping! " >>>"\"hello,python! \"shesaid"==>字符串本身有双引号的情况 '"hello,python! "shesaid' >>>"hello"+"python! "==>字符串拼接 'hellopython! ' str&repr: 您可能发现了,不用print打印出的字符串显示出来的时候会被单引号括起来。 所有通过python打印的字符串是被引号括起来的,这是因为python打印值的时候会保持该值在代码中的状态,而不是你希望用户看到的状态。 >>>print"helloworld" helloworld >>>print'helloworld' helloworld >>>"helloworld" 'helloworld' >>>'helloworld' 'helloworld' >>>print10000L 10000 >>>10000L 10000L >>> 这里讨论的实际是值转换成字符串的两种机制, str函数: 会把值转换为较理性的字符串,以便用户可以理解 repr函数: 会创建一个字符串,以合法的python表达式的形式表示值。 >>>printrepr("hellopython! ") 'hellopython! ' >>>printrepr(100000L) 100000L >>>printstr("hellopython! ")==>显然,用户更希望看到的是str函数处理后的结果 hellopython! >>>printstr(10000L) 10000 >>> 其实python有时候也没有这么智能,在高级语言中,好像数字有时候可以自动转换为字符串型 >>>age=22 >>>print"myageis"+age Traceback(mostrecentcalllast): File" print"myageis"+age TypeError: cannotconcatenate'str'and'int'objects >>>print"myageis"+str(age) myageis22 >>> input&raw_input 这样,我们先运行两个脚本,代码如下: name=input("pleaseinputyourname: ") print"hello,"+name 另一个脚本是将上述input改为raw_input 运行会发现,第一个出错。 其实不运行脚本也行,我么直接在解释器里运行命令吧! >>>name=input("pleaseinputname: ") pleaseinputname: Jay Traceback(mostrecentcalllast): File" name=input("pleaseinputname: ") File" NameError: name'Jay'isnotdefined >>>name=raw_input("pleaseinputname: ") pleaseinputname: Jay 其实你只要在input那个下面输入的字符串加上引号就行了,这就是原因。 input会假设用户输入的是python的合法表达式,当然以字符串作为输入的名字肯定没有问题,但是要求用户每次输入一个东西还需要加引号,这不太友好。 想反,raw_input函数会把所有的输入当做原始数据,然后自动将其放入字符串中,所以不会出错,所以我们应尽可能使用raw_input() 长字符串 如果需要写一个很长的字符串,它需要跨多行,可以使用三个单引号,强制换行用反斜杠\ >>>'''asdgh agjaw ag''' 'asdgh\nagjaw\nag' >>>1+5+\ 4+6 16 >>> python中对多个反斜杠(路径中常用)转义除了加\,可以在整个字串的前面加r >>>print'c: \temp\test.txt' c: empest.txt==>\t是制表符,所以会将\t作为一个制表符显示 >>>print'c: \\temp\\test.txt'==>用传统的\转义 c: \temp\test.txt >>>printr'c: \temp\test.txt'==>在前面加r转义 c: \temp\test.txt >>> 常用的函数: abs(number)、cmath.sqrt(number)、float(object)、help()、input(prompt)、int(object)、long(object)、math.ceil(number)(返回上入整数)、math.floor(number)(返回下舍整数)、pow(x,y)、raw_input(prompt)、repr(object)、str(object)、round(number[.ndigits]) python学习笔记 (二)——数据类型 python数据结构 学一门语言,最基础和重要的就是数据结构了,而在python中最基本的数据结构是序列,也可以理解为数组,但貌似比数组强大。 >>>jason=['jason',42] >>>james=['james',45] >>>database=[jason,james] >>>database [['jason',42],['james',45]] >>> 索引: >>>greeting='hello' >>>greeting[0] 'h' >>>greeting[-1]==>反着的时候从-1而不是0开始开始 'o' >>>digital=raw_input("year: ")[3] year: 2013 >>>digital '3' 索引示例: >>>months=['January','February','March','April',\ 'May','June','July','August','September','October'\ 'November','December']#根据指定的年月日以数字形式打印出日期 >>>endings=['st','nd','rd']+17*['th']+['st','nd','rd']+7*['th']+['st']#以1-31的数字作为结尾的列表 >>>year=raw_input("Year: ") Year: 2013 >>>month=raw_input('Month(1-12): ') Month(1-12): 3 >>>day=raw_input('Day(1-31): ') Day(1-31): 30 >>>month_num=int(month) >>>day_num=int(day) >>>month_name=months[month_num-1]==>注意这里索引要减1 >>>ordinal=day+endings[day_num-1] >>>printmonth_name+''+ordinal+','+year March30th,2013 >>> 分片: 使用索引能访问单个元素,使用分片能访问一定范围的元素,分片通过冒号相隔的两个索引来实现。 >>>tag=' //www.python.org">Pythonwebsite' >>>tag[9: 30] 'http: //www.python.org' >>>tag[32: -4] 'Pythonwebsite'>>> >>>numbers=[1,2,3,4,5,6,7,8,9,10] >>>numbers[3: 6] [4,5,6] >>>numbers[-3: -1] [8,9] >>>numbers[-3: 0]#分片中的最左边的索引比它右边索引的晚出现在序列中,结果就是一个空序列 [] >>>numbers[-3: ]#默认到最后 [8,9,10] >>>numbers[: 3]#默认从第一个开始 [1,2,3] >>>numbers[: ]#默认全部 [1,2,3,4,5,6,7,8,9,10] 很显然,分片操作的实现需要提供两个索引作为边界,第一个索引的元素包含在分片内,而第二个不包含在分片内。 分片步长: 默认步长没有写,是1,分片格式: 上边界: 下边界: 步长 >>>numbers[0: 10: 1]#默认步长是1 [1,2,3,4,5,6,7,8,9,10] >>>numbers[0: 10: 2]#步长设为2 [1,3,5,7,9] >>>numbers[3: 6: 3]#步长设为3 [4] >>>numbers[: : 4] [1,5,9] >>>numbers[8: 3: -1]#步长不能为0,因为不会向下执行,可以为负数,向前执行 [9,8,7,6,5] >>>numbers[10: 0: -2]#当步长为负数时,开始索引必须大于结束索引 [10,8,6,4,2] >>>numbers[0: 10: -2] [] >>>numbers[: : -2] [10,8,6,4,2] >>>numbers[5: : -2] [6,4,2] >>>numbers[: 5: -2] [10,8] >>> 序列相加: >>>[1,2,3]+[4,5,6] [1,2,3,4,5,6] >>>[1,2,3]+'world'#列表和字符串都是序列,但是不能连在一起,两种同类型的序列才能进行连接操作 Traceback(mostrecentcalllast): File" [1,2,3]+'world' TypeError: canonlyconcatenatelist(not"str")tolist >>> 序列乘法: >>>'python'*5 'pythonpythonpythonpythonpython' >>>[25]*10 [25,25,25,25,25,25,25,25,25,25] 空列表可以简单的通过[]表示,但若想要创建一个占用十个元素空间,却不包括任何有用的有用的内容列表。 这时需要使用None,None是Python的内建值,初始化一个长度为10的列表如下: >>>sequence=[None]*10 >>>sequence [None,None,None,None,None,None,None,None,None,None] 序列乘法示例: (存在脚本中运行) sentence=raw_input("Sentence: ") screen_width=60 text_width=len(sentence) box_width=text_width+6 left_margin=(screen_width-box_width)//2 print print''*left_margin+'+'+'-'*(box_width-2)+'+' print''*left_margin+'|'+''*text_width+'|' print''*left_margin+'|'+sentence+'|' print''*left_margin+'|'+''*text_width+'|' print''*left_margin+'+'+'-'*(box_width-2)+'+' print raw_input() 结果如下: in运算符: 检查一个值是否在序列中 >>>permission='rwx'#有木有觉得这个像判断Linux中某个文件的执行权限,确实可以这么判断 >
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 学习 笔记