标签:
判断a集合是不是b集合的父集或是不是子集:
print(a.issuperset(b)) #判断a集合是不是b集合的父集,也就是说b中有的a中都有,使用True或者False返回 print(a.issubset(b)) #判断a集合是不是b集合的子集,也就是说a中有的b中都有,使用True或者False返回 执行结果: True False
a.clear() print(a) 执行结果: set()
a.add(10) print(a) 执行结果: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
a.update([‘a‘,‘b‘,‘c‘,‘d‘]) print(a) 执行结果: {1, 2, 3, 4, 5, 6, 7, 8, 9, ‘a‘, ‘c‘, ‘d‘, ‘b‘}
a.remove(3) print(a) 执行结果: {1, 2, 4, 5, 6, 7, 8, 9}
a.discard(8) print(a) 执行结果: {1, 2, 3, 4, 5, 6, 7, 9}
a.pop() print(a) 执行结果: {2, 3, 4, 5, 6, 7, 8, 9}
print(a.intersection(b)) 执行结果: {3, 4, 5, 6}
a.intersection_update(b) print(a) 执行结果: {3, 4, 5, 6}
print(a.isdisjoint(b)) 执行结果: False
print(a.union(b)) 执行结果: {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(a.difference(b)) 执行结果: {8, 1, 2, 9, 7}
a.difference_update(b) print(a) 执行结果: {1, 2, 7, 8, 9}
print(a.symmetric_difference(b)) 执行结果: {1, 2, 7, 8, 9}
在a集合或b集合中,但不会同时出现在二者中(对称差集),直接修改a集合:
a.symmetric_difference_update(b) print(a) 执行结果: {1, 2, 7, 8, 9}
c=0 name=‘Wu‘ if c== 0 else ‘Qi‘ #先做if判断如果c等于0那么name的值就是Wu否则值为Qi print(name) 执行结果: Wu
a=‘hello‘ b=‘hello‘ c=1 d=1 print(id(a)) #id()查看变量的内存地址
print(id(b))
print(id(c))
print(id(d)) 执行结果: 1902418750296 1902418750296 1521807152 1521807152
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]} n2 = n1 print(id(n1)) #查看n1字典在内存的位置 print(id(n2)) #查看n2字典在内存的位置 print(id(n1[‘k1‘])) #查看n1字典中k1值的内存位置 print(id(n2[‘k1‘])) #查看n2字典中k1值的内存位置 执行结果: 1961536305736 1961536305736 1961536697040 1961536697040
import copy #拷贝模块 n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]} n2 =copy.copy(n1) #浅拷贝n1 print(id(n1)) #输出n1在内存的位置 print(id(n2)) #输出n2在内存的位置 print(id(n1[‘k3‘])) #输出n1中列表在内存的位置 print(id(n2[‘k3‘])) #输出n2中列表在内存的位置 执行结果: 2162448251464 2162448682888 2162450147144 2162450147144
import copy n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]} n2 = copy.deepcopy(n1) #深拷贝 print(id(n1)) #查看n1字典的内存地址 print(id(n2)) #查看n2字典的内存地址 print(id(n1[‘k3‘])) #查看n1字典中的k3值的内存地址 print(id(n2[‘k3‘])) #查看n2字典中的k3值的内存地址 print(id(n1[‘k1‘])) #查看n1字典中的k1值的内存地址 print(id(n2[‘k1‘])) #查看n2字典中的k1值的内存地址 执行结果: 2398849710664 2398850108872 2398851605768 2398851575624 2188442383056 2188442383056
while True: if cpu利用率 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 硬盘使用空间 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 内存占用 > 80%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接
def 发送邮件(内容) #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 while True: if cpu利用率 > 90%: 发送邮件(‘CPU报警‘) if 硬盘使用空间 > 90%: 发送邮件(‘硬盘报警‘) if 内存占用 > 80%: 发送邮件(‘内存报警‘)
可以看出来上面的两种方法第二种要比第一种重用性和可读性要好很多,这就是面向过程和函数式编程的区别
def 函数名(参数):
...
函数体
...
返回值
def test(): a=0 if a == 0 : return ‘成功‘ else: return ‘失败‘ print(test()) 执行结果: 成功
def CPU报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 def 硬盘报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 def 内存报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 while True: if cpu利用率 > 90%: CPU报警邮件() if 硬盘使用空间 > 90%: 硬盘报警邮件() if 内存占用 > 80%: 内存报警邮件()
def 发送邮件(邮件内容) #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 while True: if cpu利用率 > 90%: 发送邮件("CPU报警了。") if 硬盘使用空间 > 90%: 发送邮件("硬盘报警了。") if 内存占用 > 80%: 发送邮件("内存报警了。")
def test(name): #参数name,(形参) return name print(test(‘Wu‘)) 执行结果: print(test(‘Wu‘)) #执行test函数传参Wu。(实参) 执行结果: Wu
def test(name=‘None‘): #默认参数必须在形参后面,也可以理解为写到最后面才可以使用。 return name print(test()) 执行结果: None
def test(*name): return name print(test(1,2,3,4,5,7)) #给test函数传很多数字 执行结果: (1, 2, 3, 4, 5, 7) #输入结果为元组类型的。
def test(**name): return name print(test(name=‘Wu‘,age=20)) #给函数test传实参,多个参数,必须是**=**因为这种动态参数会以字典的形式返回 执行结果: {‘name‘: ‘Wu‘, ‘age‘: 20}
def test(*args,**kwargs):#python默认提供的动态参数名称*args和**kwargs return args,kwargs print(test(123,123,234,name=‘Wu‘,age=20)) 执行结果: ((123, 123, 234), {‘age‘: 20, ‘name‘: ‘Wu‘})
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
def func(arg1,arg2): if arg1 == 0: print arg1, arg2 arg3 = arg1 + arg2 print arg3 func(arg2, arg3) func(0,1)
寻找差异
# 数据库中原有 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 } }
提示是否删除:?
提示是否新建:?
提示是否更新:?
注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新,凭自己想法去做。
练习解答在另一篇中出现 !
标签:
原文地址:http://www.cnblogs.com/WuYongQi/p/5468773.html