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)




posted @ 2017-07-06 12:10  饺子吃遍天  阅读(132)  评论(0编辑  收藏  举报