python学习小记

来源:互联网 发布:淘宝进口食品货源 编辑:程序博客网 时间:2024/05/17 09:09

最近研究npm npm是基于python的依赖工具 小小研究python 并记录

#-------- 《一》 变量定义# -*- coding: GBK -*-#############>>>>>普通变量sex="男"# 单引号和双引号是等价的 三个双引号 表示 可以换行书写字符串 或者 使用 \ myinstro="""你好   我的同胞"""myName="廖\        敏"age=12#print打印多个变量不换行  多个print之间自动换行print(sex,myinstro,myName,age)#--------《二》字符串处理# *-*  coding:UTF-8 *-*str="hello 第一次接触Python"#1>返回总长度   print(len(str));  #2>截取字符串 表示从1开始到3结束 不包括3的字符串print(str[1:3])print(str[1:])  #表示截取从1开始的后面所有字符串print(str[1])  #表示获取索引位置1的字符#3>获取一个字符串b在另一个字符串abc中的的位置 索引从1开始  print(str.index("P"))#4>切割字符串  比如通过 :切割 abc:bcd  print(str.split(" "))#5>去除空格  左边和右边空格print(str.strip(),str.lstrip(),str.rstrip())#6>转换大写  输出BCD  print(str.upper())#7>转换小写  输出bcd  print(str.lower())#8替换字符串 定义一个变量  将test变量的值中的yy替换成p  print(str.replace("P","p"))#--------《三》类型转换# *-*  coding:UTF-8 *-*i=10#获取变量i的类型print(type(i))#判断i是否为int类型print(type(i)==int)#判断i是否为int类型的实例 存在继承关系为trueprint(isinstance(i,int))stri="123"#字符串转换为int类型  第二个参数表示进制 默认10进制print(int(stri,10)+4)#将数字转换为字符串print(repr(10)+"10")print(str(10)+"10")#import用于导入其他的py文件定义的函数 导入了之后就可以用 time.方法名调用了  可以使用 dir(time) 查看time下所有的属性和方法import timecurtime=time.localtime();#将时间格式修改为 yyyy-MM-dd hh:mm:ss格式 转换为字符串bztime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())print(curtime)print(bztime)#--------《四》数组myhobby=["篮球","足球"]print(myhobby[0]);#获取数组从0开始到第2个元素 不包括第二个 也就是 0,1print(myhobby[0:2]);# in 判断值是否存在于数组中  not in是反义print("排球是否在数组中:","排球" in myhobby)# +号用于追加元素cherryHobby=myhobby+["排球"]print(cherryHobby);# count统计某个元素出现的次数  len获取数组长度print(cherryHobby.count("排球"),len(cherryHobby))# 删除某个匹配的元素cherryHobby.remove("排球")print(cherryHobby);#############>>>>>字典mykey={'userName':'jiaozi','mysex':'男'}print(mykey["userName"])#判断key是否在字典中  keys获取所有的键集合print('userName' in mykey,mykey.keys());#清除变量 后面就不能使用了del mykey#--------《五》流程控制# *-*  coding:UTF-8 *-*#if语句所有的块语句都是通过缩进来判断是否属于同一个if 同一个代码块缩进必须一致 比如同一个if中的两句必须缩进相同 否则报错sal=input("请输入您的薪水: ")if int(sal)>5000 :print("高新")elif int(sal)<=5000 and int(sal)>=3000:print("薪水一般")else:print("低薪")# *-*  coding:UTF-8 *-*#循环语句  continue和break表示继续和中断 end=""表示不换行else可以不要i=1while i<=9:print(i,end="")i=i+1else:print("循环结束后会执行")# for 循环 for in循环arr=["碧血剑","笑傲江湖"]for a in arr:print(a)# for循环数字1到9 使用range函数for a in range(1,9):print(a,end=" ")# 使用pass空指令 不加pass报错 为了保证程序的正确性for a in range(1,9):       pass   #迭代器 iter 只有两个元素 第三次next出现运行时异常 需要处理it=iter(arr);print(next(it),next(it))   #异常处理 try:  except:  except可以指定异常类型 比如except Exception:自定义异常 具体参考 http://www.runoob.com/python3/python3-errors-execptions.htmlit=iter(arr);while True:try:print(next(it),end=" ");except:   break;#--------《六》方法# *-*  coding:UTF-8 *-*def add(p1,p2):print(p1+p2)#使用return返回值可以给参数指定默认值 有了默认值可以不传def add1(p1=0,p2=0):return p1+p2#调用函数add(12,34)result=add1(11,22)print(result)#定义不定长的参数类似于java 中的...def syso(* arr):for a in arr:print(a)syso(1,2,3)#定义匿名函数使用lambda表达式sum=lambda p1,p2:p1+p2print(sum(13,3))#--------《七》流输入和输出(文件操作)# *-*  coding:UTF-8 *-*import sys######>>>>>文本文件读取#写入文本内容到文件  a表示追加 w表示写入  r表示读取 b表示2进制file=open("c:/py.txt","a")file.write("你好\n") #插入一行文本并换行tt=["123","234","345"]file.writelines(tt);#writelines用于写入一个字符串的序列也就是列表file.close(); #关闭流#打印出该对象所有的方法和属性print(dir(file))#closed是否关闭连接  name获取文件名 mode获取操作模式print("文件是否关闭:"+str(file.closed))#从文件中读取内容file=open("c:/py.txt","r")print("读取所有内容:"+file.read())#上面读取了一次就不能在读了 必须将读取指针指向第一个字符才能重新开始读file.seek(0);print("读取前两个字符:"+file.read(4))  #这里换行也是一个字符  file.seek(0);print("读取一行:"+file.readline())  #读取一行数据file.close()#重命名文件和删除文件 mkdir创建目录 rmdir删除目录import osos.rename("c:/py.txt","c:/py1.txt")os.remove("c:/py1.txt")######>>>>>二进制文件读取#a表示追加 b表示二进制  这里可以使用writelines将序列写入到文件中 其实就是序列化import picklefile=open("c:/pyobj.txt","wb")p={"id":1,"name":"zs"}p1=["jiaozi","cherry"]pickle.dump(p,file)pickle.dump(p1,file)file.close()#读取序列化数据file=open("c:/pyobj.txt","rb")p=pickle.load(file);p1=pickle.load(file);print(str(p))print(str(p1))file.close()#--------《八》面向对象+多线程+socket编程+正则# *-*  coding:UTF-8 *-*class Animal:      vname = 1#双下划綫开头表示属性或者方法是私有的__master=""# __init__是构造方法 第一个参数是当前实例本身def __init__(self,vname,master):self.vname=vnameself.__master=masterdef eat(self,something):print(self.vname+"【主人:"+self.__master+"】正在吃"+something,end="")ani=Animal("来福","饺子")print(ani.vname)print(ani.eat("狗粮"))#print(ani.__master) 该语句报错 私有属性不能直接外部访问#继承class Dog(Animal):def __init__(self,vname):Animal.vname=vname;#重写父类的方法def eat(self,something):print("狗狗"+self.vname+"正在吃:"+something)dog=Dog("旺财")dog.eat("小强")#面向对象高级###>>>>1.多线程import threadingclass MyThread(threading.Thread):def run(self):print("线程启动")myThread=MyThread()myThread.start()#同步myThread.join()print("后面执行")###>>>2.网络编程socket#服务端代码import socketserversocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)serversocket.bind(("localhost",9898))#允许同时访问的客户端socket个数serversocket.listen(2)while True:    # addr表示客户端的ip和端口clientSocket,addr=serversocket.accept();msg='欢迎访问菜鸟教程!'+ "\r\n"clientSocket.send(msg.encode('gbk'))clientSocket.close()breakserversocket.close()#客户端代码 也可以使用telnet localhost 9898来当做客户端测试s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(("localhost",9898))msg = s.recv(1024)s.close()print (msg.decode('gbk'))# *-*  coding:UTF-8 *-*###>>>3.正则表达式import remyEmail="lixin@12.com"if re.match(".+@.+",myEmail):print("满足邮件格式")###>>>4.http网络请求import urllib.request#tt返回的就是个流对象tt=urllib.request.urlopen("http://www.runoob.com/python3/python3-stdlib.html")print(str(tt.read()).encode("UTF-8"))


原创粉丝点击