python补充扩展知识点
复习Python时,将遇到的一些有疑问的知识点进行了简单总结,大家一起学习。文章有什么问题欢迎大家指正!
1.@classmethod
1.可以返回一个类
class Data(object):
def__int__(self,year=0,month=0,day=0):
self.day=day
self.month=month
self.year=year
@classmethod
def get_data(cls,string_data):
year,month,day=map(int,string_data.split('-'))
data1=cls(year,month,day)
return data1
def out_data(self):
print "year:"
print self.year
print "month"
print self.month
print "day"
print self.day
r=Data.get_data("2021-12-1")
r.out_data
2.定义类时,在一个方法前面使用@classroom进行修饰,则该方法属于类方法
2.小知识点
-
对于Python类中的私有成员,可以通过“对象名._类名__私有成员名”的方式来访问。 -
Python定义私有变量的方法为使用__xxx定义变量名 id(ls1)=1
ls2=ls1
ls3=ls1.copy()
x=[1,2]
y=x
print(id(x)==id(y))
z=x[:]
print(id(x)==id(z))
p=x.copy()
print(id(x)==id(p))
-
random.choice() && random.sample() import random
seq=(1,2,3,4,5)
print([random.choice(seq)for i in range(5)])
print(random.sample(seq,5))
-
将list转化为字符串 && 字符串转为list lst=['1','2','3','4']
print("".join(lst))
ss="123"
print(list(ss))
ss="123,123"
print(ss.split(','))
ss="madam madammm"
print(ss.strip('m').split())
-
sort && sorted ls=[1,3,2,4]
print(sorted(ls))
print(ls)
print(ls.sort())
print(ls)
dic={1:'b',3:'c',2:'a'}
print(sorted(dic))
print(dic)
print(sorted(dic.items(),key=lambda d:d[0]))
print(sorted(dic.items(),key=lambda d:d[1]),reverse=True)
-
x.sort(Reverse=True)&&x.reverse() ls=[3,1,2]
ls2=[3,1,2]
ls.reverse()
ls2.sort(reverse=True)
print(ls,ls2)
-
正则表达式元字符“^”一般用来表示从字符串开始处进行匹配,用在一对方括号中的时候则表示反向匹配,不匹配方括号中的字符。 -
组合数据类型可以分为 3 类:序列类型、集合类型和映射类型,Python 的 str、tuple 和 list 类型都属于序列类型 [1,2]*2 or 'ab'*2
{'a','b'}*2 or (1,2)*2
-
静态语言采用编译方式执行,脚本语言采用解释方式执行 -
Python采用的是基于值的自动内存管理方式 -
eval()函数:将输入的字符串转为python语句 print(eval('2+3*4'))
print(eval("'hello'"))
print(eval('"hell0"'))
-
Python中的同一种序列互相之间可以进行比较,按照字典序进行排序,例如 (1, 2, 3, 4) < (1, 2, 4) 的运算结果是True。 print((1,2,3)<(2,3,4))
print([1,2,3]<[2,3,4])
-
神奇的递归 ls=[1,2,3]
ls.append(ls)
print(ls)
-
math import math
x=1.23
print(math.ceil(x))
print(math.floor(x))
print(math.trunc(x))
-
round()
x=3.53
print(round(x,1),round(x))
-
uniform() import random
print(random.uniform(1,5),random.uniform(5,1))
print(round(random.uniform(1, 5),2))
-
format()
print("{1}{0}{1}".format('a','b'))
print("姓名:{name},学校{university}".format(name="红橙",university="DHU"))
-
通过字典设置参数 dic={"name":"红橙","university":"DHU"}
print("姓名:{name} 学校:{university}".format(**dic))
-
通过列表索引设置参数 lst=['红橙','DHU']
print("姓名:{0[0]},学校:{0[1]}".format(lst))
-
常用格式化方式 print("{:+.2f}".format(3.14))
print("{0:0^5d},{1:x>6d}".format(5,3))
-
正则表达式 相关推荐:pyhon正则表达式 -
{}==None (x)
3.file文件相关
-
当文件以文本方式打开时,读写按照 字节流 字符串 方式 -
文件对象的tell()方法用来返回文件指针的当前位置。 -
Python文件读取方法read(size)的含义是从文件中读取指定size大小的数据,如果size为负数或者空,则读取到文件结束 -
假设已成功导入os和sys标准库,那么表达式 os.path.dirname(sys.executable) 的值为Python安装目录。 -
open函数参数模式
- ‘a’从文件末尾写入字符
- ‘w’从文件开头写入字符,并覆盖原文本,若文件不存在则创建文件
- ‘x’新建文件并写入,若文件存在,则报错
- ‘+’既可以读又可以写
-
readlines,读所有行,每行作为一个列表元素 f=open('tmp.txt',mode='r',encoding='utf-8')
data_list=f.readlines()
f.close()
print(data_list)
-
循环读文件 f=open('tmp.txt',mode='r',encoding='utf-8')
for line in f:
print(line.strip())
f.close()
-
flush 手动将写的内容刷到硬盘 file_object = open('tmp.txt',mode='a')
while True:
user=input("用户名:")
if user.upper()=="Q":
break
pwd=input("密码:")
data="{}-{}\n".format(user,pwd)
file_object.write(data)
file_object.flush()
file_object.close()
-
光标设置 f.seek()&&f.tell()
f=open('tmp.txt',mode='r+',encoding='utf-8')
f.seek(5)
f.write(10)
pos=f.tell()
f.close()
-
with上下文管理
-
可以实现自动关闭文件,且支持同时多个文件的上下文进行管理 with open('tmp1.txt',mode='r')as f1,open('tmp2.txt',mode='r')
|