python数据类型集合及函数


# 数据类型:int string list tuple dict bool float set
# 集合,天生去重,集合是无序的,所以没有办法通过下标取值
s = set() # 空的集合
s2 = {'1', '2', '3', '4'}
s3 = {'1', '2', '5'}
s2.add('1') # 添加值
s2.remove('1') # 删除值
s2.pop() # 随机删一个值
print(s3.intersection(s2)) # 取交集
print(s3 & s2) # 取交集
print(s3.union(s2)) # 取并集
print(s3 | s2) # 取并集
print(s2.difference(s3)) # 在s2中存在,在s3中没有的
print(s2 - s3) # 取差集


# 函数
# 函数就是把一堆代码组合到一起,变成一个整体。
# 函数不调用不会被执行
# 提高代码的复用性
# 全局变量、局部变量

# 形参
# 实参
# 位置参数,必填参数
# 默认值参数,不是必填的,

# 返回值
# 如果想获取到函数的结果,那么必须return
# 如果函数没有写return的话,返回值是None,return不是必须写的,需要获取到函数的返回结果再写。
# return 立即结束函数

# 变量,全局变量和局部变量
# 函数中的变量都是局部变量
# 就近原则获取变量值,但存在相同的变量时,函数中的变量优先取最近的变量值(脚本都是从上到下执行)

a = 100 # 全局变量

def test():
global a # 声明全局变量
a = 5
print('里面的', a)
test() # 调用执行函数
print('外面的', a)

def hello(file_name, content=''): # 形参,形式参数
# 函数里面的变量都是局部变量
f = open(file_name, 'a+', encoding='utf-8')
if content:
f.write(content)
res = ''
else:
f.seek(0)
res = f.read()
f.close()
return res

# hello('a.txt', '开始')
print(hello('a.txt'))
print(hello('a.txt', '开始')) # 调用函数无返回值时返回None

# 函数调用小题
money = 500
def test(consume):
return money - consume
def test1(money):
return test(money) + money
money = test1(money)
print(money)

# 1、对比俩字典里面不一样的值
# 需求分析:
# 1、循环第一个字典,取到k,然后从第二个字典里面取值,然后判断两个值是否一样
d1 = {'a': 1, 'b': 2, 'f': 5}
d2 = {'s': 3, 'b': 4}
def compare(d1, d2):
for k in d1:
v1 = d1.get(k)
v2 = d2.get(k)
if v2:
if v1 != v2:
print('value不一样的k是%s,v1是%s v2是%s ' % (k, v1, v2))
else:
print('key不一样是%s' % k)

compare(d1, d2)
compare(d2, d1)

# 判断变量类型:k : hhh value : xx
def print_var_type(var):
if type(var) == str:
print('字符串')
elif type(var) == dict:
print('字典')
elif type(var) == int:
print('整数')
elif type(var) == list:
print('列表')
elif type(var) == tuple:
print('元组')
elif type(var) == float:
print('小数类型')
elif type(var) == set:
print('集合')

# 对比请求报文中的字典值是否一致
d1 = {'a': 1, 'b': 2}
d2 = {'a': 2, 'b': 2}
def compare(d1, d2):
for k in d1:
v1 = d1.get(k)
v2 = d2.get(k)
if v2:
if v1 != v2:
print('不一样的k是%s:v1是%s,v2是%s' % (k, v1, v2))
else:
print('k不一样的是%s' % k)
compare(d1, d2)

#比较两报文之间的差异
def compare2(d1, d2):
for k in d1:
v1 = d1.get(k)
v2 = d2.get(k)
if type(d1) == dict:
compare(v1, v2)#判断如果value也是字典,递归继续循环
else:
if v1 != v2 and v2 != 'get不到':
print('value不一样:key【%s】,v1是【%s】,v2是【%s】' % (k, v1, v2))
res = set(d1.keys()).symmetric_difference(set(d2.keys()))#两个字典k取对称差,两个里面都不存在则存在不一样的key
if res: print('key不一样:', ','.join(res))
 
原文地址:https://www.cnblogs.com/zhufb/p/8243304.html