python学习小记
一。python入门小计
最近研究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类型的实例 存在继承关系为true
print(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 time
curtime=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,1
print(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=1
while i<=9:
print(i,end="")
i=i+1
else:
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.html
it=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+p2
print(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 os
os.rename("c:/py.txt","c:/py1.txt")
os.remove("c:/py1.txt")
######>>>>>二进制文件读取
#a表示追加 b表示二进制 这里可以使用writelines将序列写入到文件中 其实就是序列化
import pickle
file=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=vname
self.__master=master
def 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 threading
class MyThread(threading.Thread):
def run(self):
print("线程启动")
myThread=MyThread()
myThread.start()
#同步
myThread.join()
print("后面执行")
###>>>2.网络编程socket
#服务端代码
import socket
serversocket=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()
break
serversocket.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 re
myEmail="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"))
二 python安装库
pip是python库安装工具 cenos下安装该库
yum -y install python-pip.noarch
比如 我这里安装redis的库
pip install redis
查看安装的信息pip show redis
测试import redis
sex="boy"
r=redis.Redis("localhost",6379)
r.set("sex",sex)