越写python,越觉得python的小技巧很重要
没有任何顺序,只是在写了一个demo后,总结了一些有趣或者很有用的东西
1、全局变量 局部变量
首先,基础变量,如int类型,str类型,都有基础变量和全部变量的区分。一般的变量,都是局部变量,但是如果你想要在一个函数中统计一些数据,然后在主函数使用,应该用全部变量
eg:
2、参数中或者函数中有list或者dict
使用copy,除非任务如此,否则尽量不要修改原内容
简单的复制:
如何在几个文件中互相使用变量
1、import或者from *** import ***
2、使用一个比较大的结构
eg:
没有任何顺序,只是在写了一个demo后,总结了一些有趣或者很有用的东西
1、全局变量 局部变量
首先,基础变量,如int类型,str类型,都有基础变量和全部变量的区分。一般的变量,都是局部变量,但是如果你想要在一个函数中统计一些数据,然后在主函数使用,应该用全部变量
eg:
def fun():
global NNNum
NNNum+=1
NNNum=0
fun()
fun()
print(NNNum)
#NNNum=2
而list ,dict是不区分局部变量和全局变量的,全局唯一
2、参数中或者函数中有list或者dict
使用copy,除非任务如此,否则尽量不要修改原内容
简单的复制:
A=[1,2,3]
C=A #浅复制
B=A[:] #深复制
B.append(4)
print(A) #A=[1,2,3]
C.append(4)
print(A) ##A=[1,2,3,4]
3、读取一个目录下的
import os #引入os库
files = os.listdir(filepath)#使用os.listdir读取到一个目录下面所有的文件名
s = []
fileNum = 0#
# 每一篇文章
for file in files:#循环读出,每一个文件
if not os.path.isdir(file):#以下6行是判断边界,可读取想要读取的文件
if fileNum < fist:
pass
else:
if fileNum == last:
break
else:
fd = open(filepath + file, 'r', encoding='utf-8', errors="ignore")#打开文件
iter_i = iter(fd)#读取
sstr = ''
for line in iter_i:
sstr += line
# juzhen_init(sstr)
s.append(sstr)
fd.close()#关闭
fileNum += 1
4、sorted
#对list排序很简单,但是对dict排序会有一些注意的
eg:对dictS进行排序(按照value)
dictSort = sorted(dictS.items(), key=lambda x: x[1], reverse=True)
5、列表解析
A=[ i for i in dictAllSort if i[1]>20]
listKey=[i[0] for i in Tota]
6、二维数组初始化
juzhen = [[0 for i in range(row_num)] for j in range(col_num)]
复制一个二维数组:
dataList = [[juzhen[j][i] for i in range(len(juzhen[0]))] for j in range(len(juzhen))]
7、pickle
如何在几个文件中互相使用变量
1、import或者from *** import ***
2、使用一个比较大的结构
eg:
#保存
fw = open('./txt/tree.txt', 'wb')
# pickle的dump函数将决策树写入文件中
pickle.dump(Tr, fw)
# 写完成后关闭文件
fw.close()
#读取:
filename='./txt/tree.txt'
fr=open(filename,'rb')
Tr=pickle.load(fr)
fr.close()
8、统计数量
dictS = {}
#global totalT
for eachTxt in listS:
# print("eachTxt: ",eachTxt)
for fenci in eachTxt:
# print("fenci: ",fenci)
if fenci in dictS:
dictS[fenci] += 1
else:
dictS[fenci] = 1
9、 类
class Tree:
def createTree(self, dataSet, labels, depth):#一定要有self
#如果在类内使用其他函数,则格式为self.func()
self.calcShannon( dataSet)
def calcShannon(self, dataSet):