python的学习之路(三)
一、set集合
#!/usr/bin/env python
# *_*coding:utf-8 *_*
# Author: harson old_dict = {
"#1": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},
"#2": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},
"#3": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80}
} # cmdb 新汇报的数据
new_dict = {
"#1": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 800},
"#3": {'hostname': 'c1', 'cpu_count': 2, 'mem_capicity': 80},
"#4": {'hostname': 'c2', 'cpu_count': 2, 'mem_capicity': 80}
}
old = set(old_dict.keys())
new = set(new_dict.keys()) update_set = old.intersection(new) del_set = old.symmetric_difference(update_set)
insert_set = new.symmetric_difference(update_set) print(update_set)
print(del_set)
print(insert_set)
二、collection
#!/usr/bin/env python
# *_*coding:utf-8 *_*
# Author: harson import collections obj = collections.Counter('dsafd45f45d6s4t6we4g56ds4f5')
print(obj)
obj1 = obj.elements()
print(obj1)
for k in obj.elements():
print(k)
for k,v in obj.items():
print(k,v) #有序字典
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
print(dic)
dic.move_to_end('k1')
print(dic)
dic.popitem()
print(dic)
dic.pop('k2')
print(dic)
dic.setdefault('k4','v4')
dic.update({'k1':'v111','k5':'v5'})
print(dic) #默认字典
ddic = collections.defaultdict(list)
ddic['k1'].append('v123')
print(ddic)
#可命名元组
my_tuple = collections.namedtuple('my_tuple',['x','y','z'])
t = my_tuple(11,22,33)
d=t.x
print(d) #双向队列
q = collections.deque()
q.append(11)
q.append(22)
q.appendleft(11)
c =q.count(11)
print(q)
print(c) #单项队列
que = queue.Queue()
que.put(11)
que.put(22)
g = que.get()
print(g)
import copy #字符串、数字的深拷贝、浅拷贝、赋值时内存地址相同
s = 11
str = 'zifuchuan'
s1 = s
str1 = copy.copy(str)
str2 = copy.deepcopy(str)
print(id(s))
print(id(s1))
print(id(str))
print(id(str1))
print(id(str2)) #其他、列表、字典、元组赋值时内存地址相同,浅拷贝及深拷贝内存地址不同,但是最底层元素内存地址相同 k = {'k1':'111','k1':'harson','k3':['lee','kobe']}
k1=k
print(id(k))
print(id(k1))
k2 = copy.copy(k)
k3 = copy.deepcopy(k)
print(id(k2))
print(id(k3)) #深拷贝应用 dic = {'cpu':[80,],'mem':[80,],'disk':[80,]}
print('before',dic)
new_dic = copy.deepcopy(dic)
new = copy.copy(dic) new_dic['cpu'][0] = 50
new['cpu'][0] = 40 print(dic)
print(new_dic)
print(new) 二、函数
#无参数def mail():
n = 11
n += 1
print(n) mail()
d = mail()
d
e = mail
e()
#一个参数
def a(a):
print(a) a(2) #默认参数
def show(a=22,b=33):
print(a,b) show()
show(55,66) #指定参数
def show1(a,b):
print(a,b) show1(b=3,a=4) #动态参数、参数前加一个*代表把传入的参数转化为一个元组,参数前加两个*代表把传入的参数转化为字典
#两个带*参数也可混合使用,但是一个*的参数必须在前,**的在后
def test(*args):
print(args,type(args)) def test1(**args):
print(args,type(args)) def test2(*args,**kwargs):
print(args, type(args))
print(kwargs,type(kwargs)) test(11,22)
test1(n=33)
test2(n=55,n1=66) #要想把l传入到args里需要前面加一个*,把k传入到kwargs里需要在参数前加两个*,否则则会把l,k当成两个参数转入到args中
l = [11,22,33,44]
k = {'n':33,'n1':'harson'} test2(l,k)
test2(*l,**k)
#内置函数
#all序列的元素是否都为真
r = all([11,''])
print(r) #r1序列的元素有一个为真则为真
r1 = any([22,''])
print(r1) #bin转化为2进制
print(bin(10)) #bytearray转换为字节数组
print(bytearray(10)) #bytes转换为字节码
print(bytes(10)) #callable函数是否可被调用
fun = lambda a: a+1
l = []
c = callable(fun)
c1 = callable(l)
print(c)
print(c1) #compile用于编译代码 #enumerate用于循环时给字段加下标
l = ['alex','harson','lee']
for i in l : print(i) for i,item in enumerate(l,1) :print(i,item) #eval把字符串转化成代码执行
str = '5*6'
e = eval(str)
print(e) #map将序列中的每个元素进行操作,得到新的序列,元素个数不变
li = [11,22,33,44]
new_li = map(lambda x : x*6,li)
n = list(new_li)
print(n) #filter将序列进行过滤得到新的序列
def fun(x) :
if x>22:
return True
else:
return False
_li = filter(fun,li)
_n = list(_li)
print(_n) s1 = '456456asd'
s2 = s1.format()
print(s2) # chr将数字转化为字符,ord将字符转化为数字
print(chr(99))
print(ord('A'))
#lambda表达式,用于简单函数的表示方式
#a表示传入的形式参数,a+1表示函数内容及return的返回值
fun = lambda a : a+1
ret = fun(5)
print(ret) str ='%s is good' % ('alex')
print(str)
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr def mail(user):
ret = True
try:
msg = MIMEText('hello!', 'plain', 'utf-8')
msg['From'] = formataddr(["harson", 'lihasheng@126.com'])
msg['To'] = formataddr(["lee", '83968660@qq.com']) msg['Subject'] = "主题" server = smtplib.SMTP("smtp.126.com", 25)
server.login("lihasheng@126.com", "lhs529464")
server.sendmail('lihasheng@126.com', [user, ], msg.as_string())
server.quit()
except Exception:
ret = False
return ret ret = mail('83968660@qq.com')
if ret :
print('发送成功')
else:
print('发送失败')
# f = open('test.log','w')
# f.write('hello world')
# f.close()
f = open('test.log','r',encoding='utf-8')
ret = f.read(1)
f.close()
print(ret)
#f.tell查看当前指针位置
#f.read指定读取字符
#f.seek指定当前指针位置
f = open('test.log','r')
print(f.tell())
f.read(1)
f.seek(1)
print(f.tell())
f.close()
python的学习之路(三)的更多相关文章
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
- Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!
Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!找到你自己感兴趣的点进行切入,并找到兴趣点进行自我驱动是最好的学习方式! 推荐两本书,一本作为 ...
- Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
- Python小白学习之路(三)—【数字功能】【字符串功能】
数字(int)常见功能 在网络课上,老师把这些功能称为神奇的魔法,想要揭开魔法神奇的面纱,想要看看有什么招数,在Pycharm里敲击三个字母(int),按住Ctrl,将鼠标点在int上,这时鼠标会变成 ...
- Python小白学习之路(十八)—【内置函数三】
一.对象操作 help() 功能:返回目标对象的帮助信息 举例: print(help(input)) #执行结果 Help on built-in function input in module ...
- python学习之路 三:字符编码
本节重点 彻底掌握字符编码之前的转换关系 掌握 python2 vs python3 上编码的区别 掌握 python2 和python3 上bytes,str 的区别 补充知识点:三元运算 三元运 ...
- python学习之路三(文件读写)
# -*- coding: utf-8 -* ''' Created on 2013-7-29 @author: lixingle ''' import os #引入操作文件和目录的函数包 impor ...
- Python基础学习参考(三):内置函数
一:内置函数 在第一篇文章中,我们简单的认识了一下print()函数和input()函数,也就是输入和输出,这些函数我们可以直接的调用,不要自己定义或者引入什么,对吧?想这样的函数就叫做内置函数.这里 ...
- python入门学习笔记(三)
10.函数 求绝对值的函数 abs(x) 也可以在交互式命令行通过 help(abs) 查看abs函数的帮助信息.调用 abs 函数:>>> abs(100)100>>& ...
随机推荐
- 洛谷P2221 [HAOI2012]高速公路(线段树+概率期望)
传送门 首先,答案等于$$ans=\sum_{i=l}^r\sum_{j=i}^r\frac{sum(i,j)}{C_{r-l+1}^2}$$ 也就是说所有情况的和除以总的情况数 因为这是一条链,我们 ...
- 微信小程序中如何使用setData --- 修改数组对象、修改对象
看代码吧~ 这是修改对象 this.setData({ allStageIndex: e.detail.value, [`projectDetailsData.stage`]: this.data.a ...
- NOIp2013 车站分级 【拓扑排序】By cellur925
题目传送门 我们注意到,题目中说:如果这趟车次停靠了火车站 x,则始发站.终点站之间所有级别大于等于火车站x的都必须停靠.有阶级关系,满满的拓扑排序氛围.但是,如果我们按大于等于的关系连,等于的情况就 ...
- springMVC @Valid不起作用
springmvc使用JSR-303进行表单验证不生效的问题 spring只是支持jsr-303验证,但却不提供jsr-303的实现,文档中提及了需要导入类如hibernate-validator等j ...
- logstash | logstash && logstash-input-jdbc 安装
Windows系统: 1.安装Logstash 1.1 进入官网下载zip包 [1] https://artifacts.elastic.co/ ...
- 在Linux下使用linuxdeployqt发布Qt程序
一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...
- DB buffer bussy wait 分析一例
####sample 1: DB层分析OI DB层分析OI的信息如下: 1. 异常时间段, Logical reads:/ Physical reads/ Physical write 指标都低于 ...
- 一个简单的jsp+servlet登录界面的总结
这个登录界面我是用eclipse+tomcat7来实现的(网上比较多都是用myeclipse来做的) 1.首先是关于servlet部署的问题 首先你的servlet类要写在WEB-INF的Class文 ...
- rhel7安装oracle 11gR2
一.修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件 输入命令:vi /etc/security/lim ...
- jq星星评分
html代码 <div class="make_mark"> <h5>请为这次服务打分</h5> <div class="mar ...