def exchangeValue(a,b):
a = a^b
b = a^b # b = (a^b)^b = a
a = a^b # a = (a^b)^a = b
print(a,b)
if __name__ == '__main__':
#第一种(使用临时变量)
a = 1
b = 2
print(a,b)
temp = a
a = b
b = temp
print(a,b)
#第二种
a = 1
b = 2
print(a, b)
a,b = b,a
print(a,b)
#第三种
#如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
#异或计算法则:
# 1:a ^ b = b ^ a;
# 2:a ^ b ^ c = (a ^ b) ^ c = a ^ (b ^ c);
# 3:d = a ^ b ^ c = > a = d ^ b ^ c;
# 4:a ^ b ^ a = b;
exchangeValue(1,2)
2. read、readline、readlines的作用
if __name__ == '__main__':
#1.从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止
fo = open("zj.txt", "r", encoding="utf-8")
print("文件名为:", fo.name)
line = fo.read()
print("读取的字符串: %s" % line)
# 关闭文件
fo.close()
#2.从文件每次读出一行内容(占用内存小)
f = open("zj.txt","r", encoding="utf-8")
line = f.readline()
print(type(line)) #<class 'str'>
while line:
print(line)
line = f.readline()
f.close()
#3.读取整个文件所有行,保存在一个列表(list)变量中(占用内存大)
f = open("zj.txt","r", encoding="utf-8")
lines = f.readlines()
print(type(lines))
for line in lines:
print(line)
f.close()
import datetime
def datetime_add(n:int):
now = datetime.datetime.now() # 获取当前时间
_new_date = now + datetime.timedelta(days=n) # 获取指定天数后的新日期
new_date = _new_date.strftime("%Y%m%d") # 转换为指定的输出格式
return new_date
if __name__ == '__main__':
print(datetime_add(2))
5.datetime 类不支持 json 序列化,如何自己定制实现
from json import JSONEncoder
from datetime import datetime
#JSONEncoder不知道怎么去把这个数据转换成 json字符串的时候,
#它就会去调 default()函数,所以都是【重写***】这个函数来处理它本身不支持的数据类型,
class dataOperatorEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
else:
return super(ComplexEncoder,self).default(obj)
if __name__ == '__main__':
d = {'name': 'alex', 'data': datetime.now()}
#dumps序列化成字符串
print(type(json.dumps(d, cls=ComplexEncoder))) #<class 'str'>
print(json.dumps(d, cls=dataOperatorEncoder)) #{"name": "alex", "data": "2020-02-27 12:23:00"}
6.什么是闭包,写一段代码
#n=2 val=3
def func(n):
def func1(val):
return val * n
return func1
if __name__ == '__main__':
num = func(2)
print(num(3))
7.字符串代码性能问题
def strtest(num):
str='python'
for i in range(num):
str += "hello"
return str
if __name__ == '__main__':
print(strtest(5))
如果num非常大,那么内存中有很多str对象,非常占用内存。
8.一句代码输出1-100之间的偶数
if __name__ == '__main__':
print([i for i in range(1, 101) if i % 2 == 0])
9.with与上下文管理器
任何实现了 __enter__() 和 __exit__() 方法的对象都可称之为上下文管理器,
上下文管理器对象可以使用 with 关键字。目的就是为了不用人为手动去开启
资源和关闭资源,因为人为操作可能有失误导致资源浪费。看如下:
class File():
def __init__(self, filename, mode,code):
self.filename = filename
self.mode = mode
self.code = code
def __enter__(self):
print("开启资源")
self.f = open(self.filename, self.mode,encoding=self.code)
return self.f
def __exit__(self, *args):
print("关闭资源")
self.f.close()
def main():
with File("withtest.txt","w",'utf-8') as f:
f.write("使用自定义的File类")
if __name__ == '__main__':
main()
10.计算一个文件中的大写字母数量
if __name__ == '__main__':
count = 0
with open('python.txt') as py:
for i in py.read():
if i.isupper():
count += 1
print(count)