欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python语法使用的小技巧

程序员文章站 2024-01-16 23:09:10
越写python,越觉得python的小技巧很重要 没有任何顺序,只是在写了一个demo后,总结了一些有趣或者很有用的东西 1、全局变量? 局部变量 首先,基础变量,如int...

越写python,越觉得python的小技巧很重要

没有任何顺序,只是在写了一个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):