# a = 11
# b = 11
# # 1438240528
# # 1438240528 两个值的内存地址一样,看来常量的存储和使用方式和java一样
# print(id(a))
# print(id(b))
# ====================================================
# a = "hello"
# print(a[0])
# 字符串,它是不可修改类型,其他不可变类型包括数字,元组,只有这三种
# 两种可变类型为,数组和字典
# a[0] = "w" # 'str' object does not support item assignment.
# 数组不能当字典的key,因为它的key跟Hashmap的key一样,用HashCode排列
# 的,因此,如果key是可变类型的,排序可能会出错,所以数组和字典都不能当key
# a = {"name": "laowang", {"n": 2}: "shit"}
# a = {"name": "laowang", [3, 4]: "shit"}
# print(a) # unhashable type: 'dict'
# ====================================================
# 用递归求阶乘
# def get_result(num):
# # 如果为1,返回1
# if num == 1:
# return 1
# # 如果大于1,则递归往下走
# else:
# return num * get_result(num - 1)
#
#
# print(get_result(3))
# ====================================================
# 匿名函数 lambda 参数:式子
# 后面的x+y的式子,相当于返回值
# func = lambda x, y: x + y
# print(func(66, 22)) # 88
# ====================================================
# nums = [23, 1, 4, 345, 43, 24, 54, 24, 4]
# # 排序
# nums.sort()
# nums = [{"name": "ladf", "age": 23},
# {"name": "daladf", "age": 33},
# {"name": "adfadf", "age": 13}]
# # nums.sort()#直接排序会报错 not supported between instances of 'dict' and 'dict'
# # 用匿名函数,实现以age来排序,x在此处代表的是每一个字典元素
# # nums.sort(key=lambda x: x["age"])
# nums.sort(key=lambda x: x["name"])
# print(nums)
# ====================================================
# 匿名函数的另一种使用方式,类似java方法中使用的CallBack
# def test(a, b, func):
# result = func(a, b)
# print(result)
#
#
# # 相当于设置了一个匿名类,调用了一个方法,但是是由这个方法来触发的
# # test(33, 44, lambda x, y: x + y)
# # 骚操作,后来用输出一个函数来执行
# func_new = input("输入一个匿名函数")
# func_new = eval(func_new) # 能去掉双引号,不然默认是字符串
# test(11, 22, func_new)
# ====================================================
# 两个数,交换值
a = 4
b = 5
# 方法1
# c = a
# a = b
# b = c
# print(a, b)
# 方法二
# a = a + b
# b = a - b
# a = a - b
# print(a, b)
# 方法三
# a, b = b, a
# print(a, b)
# ====================================================
# num = [100]
# num+=num 并不真正的等价于 num=num+num,后者会创建新的堆内存对象,赋值给num
# ====================================================
# 字符串操作
# myStr = " my name is wanG feI ge ,i am yOur faTher "
# print(myStr.find("isss")) # 如果找不到,就返回-1,找到返回首字母索引
# print(myStr.index("isss")) # 如果找不到,就会崩溃出错
# print(myStr.rindex("isss")) # 从右找
# print(myStr.count("i")) #字符的数量
# print(myStr.replace("i", "your")) # 字符替换,不更换原有数据,而是返回新数据
# print(myStr.replace("i", "your",1)) # 字符替换,可以只换某几个
# print(myStr.split(" ")) # 切割,如果什么也不传,则按不可见的字符切,如空格,回车,制表符
# print(myStr.capitalize()) # 把第一个字变成大写
# print(myStr.title()) # 把所有字的第一个字母字变成大写
# print(myStr.startswith("my")) # 是否以某个开头
# print(myStr.lower()) # 全转小写
# print(myStr.upper()) # 全转大写
# print(myStr.ljust(50)) # 左对齐
# print(myStr.rjust(50)) # 右对齐
# print(myStr.center(50)) # 居中
# print(myStr.rstrip()) # 去右边空格
# print(myStr.lstrip()) # 去左边空格
# print(myStr.strip()) # 去两边空格
# print(myStr.partition("is")) # 以左边第一个is来把它分开,变成三个元素的数组
# file_content = "i am \n your \n father"
# print(file_content.splitlines()) # 按行分成一个数组
# print(myStr.isalpha())#是否全字母
# print(myStr.isdecimal())#是否全数字
# print("*".join(myStr.split(" ")))#把一个字符加入到一个数组中,形成一个字符串
# ====================================================