python基础学习

来源:互联网 发布:类似于记事本的软件 编辑:程序博客网 时间:2024/05/22 17:04

python基础语法

#!/usr/bin/python#coding=utf-8  #中文编码声明print "你好,世界"#python代码块必须要缩进(一个制表符或者2个空格or4个空格)if True:print "aaa"else:print "bbb"#python字符串表示,可以单引号。双引号,三引号表示,区别就是三引号可以编写多行 三引号(三个单引号或者双引号)也可以做多行注释word='''这是一个多行编写句子'''print word'''这是一个多行注释'''#等待用户输入#raw_input("\n please scanf: ");#print默认输出是换行的。要不换行输出加个逗号就可以x="xxxxx"y="yyyyy"print x,print y#python字符串#两种取值顺序:1从左到右索引默认0开始,2从右到左索引默认是从-1开始,最大范围是字符串开头0str="ilovec++"print str[0:6] #获取子串[头下标:尾下标] 截取到尾下标-1的位置,不包括尾下标print str * 2#*重复操作print str+"test"#+连接字符串#python列表类型,列表支持字符,数字,字符串和嵌套list=['aa',15,2.11,'bbb']listtwo=[134,'abc']print list#打印完整列表print list[0]#打印列表第一个元素print list[1:2]#打印第二个元素,不包括尾下标元素print list[2:]#从第3个元素打印所有元素print listtwo+list#打印组合列表list[0]='bb'#列表可以二次赋值print list#python元组,类似与列表,用()表示,但是元组不能二次赋值,相当于只读变量tup=['aa',15,2.11,'bbb']tuptwo=[134,'abc']print tup#打印完整列表print tup[0]#打印列表第一个元素print tup[1:2]#打印第二个元素,不包括尾下标元素print tup[2:]#从第3个元素打印所有元素print tuptwo+tup#打印组合列表#python字典,字典是通过键来存取数据的,字典用{}标识dict={}dict['69']="大桥未久"dict[1]="宇都宫紫苑"arrdict={'name':'aaa','size':36,'long':175}print dict['69']print dict[1]print arrdictprint arrdict.keys()print arrdict.values()#python类型转换,内置函数调用a=1/2#python2.0整数除以整数,商为整数print aa=1/float(2)print a#python比较运算符,多了一个<>也表示不等于和!=类似one=1two=2if(one!=two):print "one != two"else:print "one==two" if(one<>two):print "one <> two"else:print "one==two" #python位运算a=1b=2c=a&bprint "a&b=",cc=a|bprint "a|b=",cc=a^b #按位异或运算,两个对应的二进制位想异时结果为1print "a^b=",cc=a<<2print "a<<2",c c=b>>1print "b<<1",c #python逻辑运算符 and逻辑与 or逻辑或not逻辑非#python成员运算符#in如果在指定的序列中找到值返回ture,否则返回false 例如:x在y序列中则返回true#not in如果在指定的序列中没有找到值返回ture,否则返回false 例如:x不在y序列中则返回truea=10b=30list=[1,2,4,6,7,3,9]if(a in list):print "a in list列表中"else:print "a not in list列表中"if(b not in list):print "b not in list列表中"else:print "a int list列表中"#python身份运算符#isis是判断两个标识符是不是引用自一个对象 例如:x is y 类型id(x)=id(y),如果是引用自同一个对象返回true, id()函数用于获取对象内存地址#is not is not是判断两个标识符是不是引用自不同对象 例如:x not is y 类型id(x)!=id(y),如果是引用不同对象返回truevar1=10var2=10if(var1 is var2):print "var1和var2是同一个对象"else:print "var1和var2不是同一个对象"var2=20if(var1 is not var2):print "var1和var2不是同一个对象"else:print "var1和var2是同一个对象"    #python判断语句语法,if中没有switch语句,只能用elif来实现'''if (判断条件):执行语句else:执行语句if (判断条件):执行语句elif:执行语句elif:执行语句else:执行语句'''#python while循环语句,没有do while语句,也是break跳出整个循环,continue跳出当前循环#while (判断条件):#执行语句#python还有while..else语句count=0while (count<3):print "while count=",countcount+=1else:print "else count=",count#python for循环可以遍历任何序列的项目,如一个列表或者一个字符串#for 遍历的值 in 序列:#执行语句for var in 'ilovepython':print "当前字母:",varprint "执行语句"list=['林由奈','三上悠亚','天海翼']for actress in list:print "你选择的女优是:",actress    #通过序列索引迭代,range()返回序列的数,len()返回列表的元素个数list=['林由奈','三上悠亚','天海翼']for index in range(len(list)):print "你选择的女优是:",list[index]for index in range(3):print "你选择的女优是:",list[index]        #python for...else也可以使用#求质数(素数):因数只有1和本身(只能整除1和本身)for num in range(10,20):#求10-20的质数,遍历10-20,不包括20,for i in range(2,num):#遍历从2开始到要判断的数字之间的数if(num%i==0):#判断有咩有其他的因数print "num不是质数:",num#有就不是质数breakelse:print "num是质数:",num        #python能循环嵌套,while嵌套while或者for for也一样#python随机数 所有的随机数的方法都要导入random模块#rangrange(start,stop,step) start-开始位置,stop-结束位置,step-间隔数默认是1#python字符串格式化输出和c语言一样,只是用%接值print "my name is %s and weight is %d kg"%('roin',50)#r是把字符按原样输入,不转义#python字符串内建函数,字符串方法在string模块中,string模块提供了很多方法处理字符串,自己可查阅#python列表函数#cmp(list1,list2)比较两个列表的元素#len(list)列表元素个数#max(list)返回列表元素最大值#min(list)返回列表元素最小值#list(seq)将元组转换为列表#如果一方是数字,一方是别的类型,则别的类型的列表大,相同类型比较值,如果一方元素长,长的一方大l1=[123]l2=['abc']print cmp(l1,l2)#python列表方法#list.append(obj) 在列表末尾添加新的对象,还有很多方法自己查alist=[123,'abc',234]blist=['def',897]alist.append(blist)print alist#python元组注意点,如果元组只有一个元素,需要在元素后面加上逗号 tup=[123,]#python字典,键是不能修改的并唯一,值是可以修改dict={99:'abc','a':97,98:'b'}print dictdict['a']=1000print dict#删除用del del list[key]删除一条, del list删除整个字典,list.clear()清空字典(删除字典的所有元素)


python时间处理和函数


#!/usr/bin/python#coding=utf-8import time#python处理日期和时间在time模块import calendar#获取某月的日历,Calendar模块有很多方法来处理年历和月历import datetimestarttime=datetime.datetime.now() #第一种获取当前时间start=time.time()#第二种获取当前时间tick=time.time();#获取时间戳print tick#从返回浮点数的时间戳方式向时间元组转换,用loacltime()方法localtime=time.localtime(time.time())print localtime#获取格式化的时间,时间模式的函数时asctime()LT=time.asctime(time.localtime(time.time()))print LT#格式化日期用strftime()方法#格式化成2017-12-3-20 11:31这种形式print time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())#格式化成和系统时间一样的形式print time.strftime("%a %b %d %H:%M:%S %Y",time.localtime())#将格式化字符串转换为时间戳dat="Sat Mar 25 13:22:15 2017"print time.mktime(time.strptime(dat,"%a %b %d %H:%M:%S %Y"))#打印日历cal=calendar.month(2017,5)print caltime.sleep(2)endtime=datetime.datetime.now() end=time.time()print "第一种测试程序时间:",(endtime-starttime).secondsprint "第二种测试程序时间:",end-start#python还有有关日期时间处理的模块detetime pytz dateutil#python函数定义语法#函数以def关键字开头,后接函数名和()'''def FunName(argument1,argument2):函数代码块return 返回值'''#python可更改和不可更改对象#字符串,元组,数字是不可更改对象,而list(列表),dict(字典)是可修改对象#不可变类型:例如:x=5后 x=10,这里是新生成一个int值对象,再让x指向她,5被丢弃,不是改变x的值,5和10不是同一个对象#可变类型:list=[1,2,3,4] 修改list[1]=100是将list第二个元素修改,list是同一个对象#python函数参数传递注意点:#传不可变类型:类似c++的值传递#可变类型:类似c++的引用传递,例如列表和字典 fun(list),将list这个对象传过去,修改的是和外面同一个对象def funnot(a):"传不可变类型,值传递"a=10b=5funnot(b)print bdef funchange(list):list.append([10,20])l=[1,2,3]funchange(l)print l#不定长参数#def funname(arg,*agr_tuple(所有的未命名的参数都放在这个加星号(*)的变量中)):#for var in agr_tuple获取所有不定长参数def changearg(arg1,*args):for var in args:print "可变参数是:",varreturn;changearg(1,2,3,4)#匿名函数(lambda)#语法:lambda arg1,agr2,... :expression(表达式)number = lambda arg1, arg2: arg1+arg2print "相加等于:",number(100,200)



python模块导入方法


在当前下我有一个模块叫ModuleTest.py,里面有个函数叫hello,还有个包TestPage(文件夹),里面有三个模块(三个文件),__init__.py是必须要有的,模块中有两个函数testpage1和testpage2

#!/usr/bin/python#coding=utf-8from TestPage.TestPageFile1 import testpage1#导入包中模块from TestPage.TestPageFile2 import testpage2#导入包中模块#python模块导入(模块就是一个python文件,里面可以定义函数,类和变量也能包含可执行代码)import ModuleTest#导入模块名(文件名)from ModuleTest import world#from...import是在模块中导入指定的部分到当前文件中(例子:导入moduletest模块中的world函数) ModuleTest.hello("hello,world") #引用模块必须:模块名.引用的函数#导入模块的搜索路径#首先在当前目录搜索#如果不在当前目录,则搜索在shell变量PYTHONPATH中的目录#如果都找不到,会在默认路径查找,在linux中.默认路径一般在/usr/local/lib/python/#局部变量和全局变量注意点#python会只能猜测一个变量是局部的,要想给全局变量在函数内赋值,必须使用global声明#python中全局和局部变量重名,局部变量会覆盖掉全局变量,注意如果上面有global声明全局变量,局部变量才会覆盖全局变量(在同一作用域下)以后引用的就是局部变量Gvar=100def AddGvar():global Gvar#声明Gvar是一个全局变量,这样才能在函数中赋值Gvar=200#如果上面有global声明全局变量,局部变量才会覆盖全局变量(在同一作用域下)Gvar+=10print "没有相加的:",GvarAddGvar()print "相加后的值:",Gvar#dir()函数,一个排好序的字符串列表,内容是一个模块中定义过的名字#返回的列表是定义模块中的所有变量和函数content=dir(ModuleTest)print content#输出ModuleTest中定义的所有函数和变量#python中的包(简单的理解就是文件夹)#包必须存在__init__.py文件,该文件内容可以为空,为空只是起到一个表上作用(标识当前文件夹是一个包)testpage1()testpage2()


python文件io处理

#!/usr/bin/python#coding=utf-8import timeimport os '''#输入输出#raw_input从标准输入读取一行文本,#input可以接受表达式,将结果返回str1=raw_input("请输入:")print str1str2=input("请输入表达式:")print str2''''''#file对象属性,一个文件打开后,你有一个file对象,可以获取有关文件各种信息#file.closed 文件是否关闭,关闭为true 否则false#file.mode返回被打开文件的访问模式#file.name返回文件的名称#file.softspace末尾是否强制加空格,加了返回false,没加返回trueFO=open("a.txt","wb")print "文件名:",FO.nameprint "文件是否关闭:",FO.closedprint "文件打开方式:",FO.modeprint "末尾是否强制加空格",FO.softspaceFO.close()'''#文件输入输出#file.write(string) 可以将任何字符串写入一个打开的文件,也可以是二进制数据,注意write方法不会在字符串结尾添加换行符#file.read(count) 参数是从打开的文件读取的字节数,从文件开头读取,如果没有传参数,它会尽可能的多的读取内容,很可能是文件末尾#file.close() 刷新缓冲区(把缓冲区的数据写入到文件中),关闭文件,filew=open("t.txt","w+")filew.write("www.baidjksd.com\n")posw=filew.tell()print "write内容后文件指针的位置:",posw#filew.close()#在wirte之后,直接read文件会输出为空,因为指针已经移动到文件末尾,1可以先close文件,在open读取#2可以设置文件指针到文件开始位置再读取#filer=open("t.txt","r+")#strfile=filer.read(10)#print "第一次读取:",strfile#file.tell()方法返回文件内的当前位置#file.seek(offset(偏移量),from(参考位置)) from变量为0表示文件指针移动到文件开头作为参考位置,1是以当前文件指针位置,2是以文件末尾为参考位置#pos=filew.tell()#print "当前位置:",posfilew.seek(0,0)#把文件指针重新移动到开始位置strfile2=filew.read(10)print "文件指针移动后重新读取:",strfile2'''#python提供os模块执行文件处理操作方法比如重命名和删除#重命名 os.rename(oldfile,newfile)#删除os.remove(filename)#os.rename("test.py","test1.py")os.remove("t.txt")#os.mkdir(newdir)在当前目录创建新目录#os.chdir(newdir)改变当前目录#os.getcwd()显示当前工作目录#os.rmdir()删除目录os.mkdir("test1")os.chdir("/home/builder/test")#修改当前目录后再创建目录就是在这个目录下创建os.mkdir("test2")print os.getcwd()os.rmdir("test2")'''


python异常处理

#!/usr/bin/python#coding=utf-8'''#异常处理try:代码块except 匹配的异常类型:匹配发生异常的语句except 匹配的异常类型,参数:匹配发生异常的语句,并获得附加的参数的值(参数是一个元组包含异常位置,数字,字符串)else:没有发生异常语句'''try:fo=open("testfile","a")fo.write("这是测试异常的文件")except IOError:#匹配的标准异常类型print "error:打开文件失败或者没有写权限"else:print "没有异常,写入成功"fo.close()def TestException(var):try:return int(var)except ValueError,Argument:print "参数没有包含数字\n",ArgumentTestException("abc")#自动触发异常#raise Exception(arg,traceback) 第一个参数是可选的,如果不写参数默认为None,最后一个参数是可选的(很少使用),跟踪异常对象def funtest(lev):if lev<1:raise Exception("invalid lev!",lev)#触发异常后后面的代码块就不会执行funtest(0)