python常用功能

2021-06-09 00:03

阅读:559

标签:img   描述   解释器   stack   pip   不能   下标   ring   split   

l  常用的功能

.1.        异常

l  捕获异常

try :

         ….

except (Ex1,Ex2) as e:    -捕获异常Ex1,Ex2(也可以使用Except捕获所有类型的异常)等,并把捕获到的异常错误赋值给变量e;

         …..print(e)

else:

         无异常执行

finally:

         无论异常与否,都执行

 

l  主动抛出异常

raise 异常名称(“异常描述”)

异常名称:可以是python内建异常,或用户自定义异常,也可以直接用Exception代表异常

.2.        格式化字符串

l  f替换具体变量

str = f’user…{user}…{name}’     --其中{user}/{name}会替换成具体变量值

 

l  %格式化

#格式化变量

“zaff%s中国%d” % (‘path’,’23’)   --格式符号进行格式化,使用%格式符对字符串格式化

#格式化字典

“我今天%(food)s,xxx%{poket}f” %(params)   ----其中params是字典params={“food”:”面板”,“poket”:16.9}

 

l  使用format格式化

“我是{0}还是{1}”.format(x1,x2)  -其中{0}是x1,{1}是x2

注:位置索引可以直接使用{},根据format先后顺序进行格式化

 

”我正在学习{language}”.format(lanugae=”python”)

 

”我正在学习{ food }”.format(**params)   --其中params为字典,**展开形式为”food”=面板,”poket”=16.9

 

”我正在学习{ 0[0]},{1[0]}”.format(my_list,my_list1)    --其中my_list为列表,{0[0]}代表my_list的第一个元素,{1[0]}代表my_list1的第一个元素

 

l  格式化带占位符的变量

s = ‘今天%(food)s号码’

t = s % (params)

.3.        字符串解码

l  str.encode(字符串)/字符串.encode()      --编码为二进制

l  二进制.decode()/bytes.decode(二进制)    --二进制解码成字符串

.4.        print

print(*args,seq=’’,end=’\n’,file=sys.stdout,flush=False)

*args:print可以同时输出多个内容,使用逗号分隔

seq:分隔符,默认空格

end:输出结束时补充该参数所指定的字符串,默认换行

file:定义输出流,默认标准输出;也可以指定文件输出流

flush:是否立即把内容输出到流文件,默认不做缓冲

返回结果:返回相应的输出结果

.5.        排序

只能对列表进行排序

.5.1.    列表自带的list.sort排序方法

list.sort(key=None,reverse=False)

列表自带的sort方法排序后会改变原始列表的顺序

.5.2.    系统自带的sorted方法(可迭代对象排序)

sorted(iterable,key=None,reverse=False)

不改变iterable顺序,返回一个新的对象

.5.3.    参数说明

reverse:False升序,True降序

iterable:可迭代对象,用于排序的可迭代对象

key:接收一个函数,该函数将在每个元素比较前调用,该函数作用于排序列表中的每一个值,即列表元素都先调用key函数后得到的值来进行排序,输出的是原始值;该函数只有一个参数,返回一个值来参与比较

;如果不传key,默认使用第一个元素排序

key=函数,此函数可以是系统自带的函数/用户定义的函数/lambda函数

注:key=str.lower,其中可以直接调用函数,参数不用传,默认为列表元素;

 

例如:sorted(iterable,key=len(x)):序列中的每个元素调用len(x)函数后得到长度,然后以长度排序,最后的结果是按元素长度由短到长排序

 

.5.4.    示列

l  列表中包含元组或字典排序

str1 = [(“x1”,”x2”),(…)]

str2 = [{‘name’:12,’age’:23},{…}]

sorted(str1,key=lambda x :x[0])    --x[0]即元组的第一个元素

sorted(str2,key = lambda x : x[‘name’])   --按字典的name值排序

 

l  字典排序

字典不是可迭代对象,只能转换成list去排序,dict.keys(),dict.items()为key和value的tuplue对象

str2 = {‘name’:12,’age’:23}

sorted(str2.keys())   --按key值进行排序,返回key的列表

s = sorted(str2.items(),lambda x : x[0])  --str2.items返回[(name,12),(age,23)],对元组第一个元素排序

s排序后是list类型,再dict(s)转换成字典就可以了

 

l  忽略大小写排序

sorted(str1,key=str.lower) 或sorted(str1,key=lambda x :str.lower(x)) 

直接调用函数,参数可以不用传,默认为参数列表元素

 

 

 

 

.6.        数据转换

.6.1.    普通类型转换

l  int(x)    字符串或数字转整形

l  long(x)   字符串或数字转长整形

l  float(x)   字符串或数字转浮点型

l  str(x)     转字符串,原样内容加双引号

l  tuple(s)   将s序列转元组,s序列(list&set&字典);字典会返回key组合

l  list(s)     将s字符串转列表(每字符转成一个列表元素);s也可以是元组

l  chr(x)     将整数转换成一个字符

l  set(s)      将序列转集合

l  map(function,iterable,..) :function函数,iterable一个或多个序列;根据提供的函数对指定序列做映射,返回迭代器;第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

 

.6.2.    列表、字典、字符串互转

l  列表转字典1

list = [[‘key’,’value’], [‘key1’,’valu1e’]]或[(‘key’,’value’),(‘key1’,’value1’)]

dict(list)   ---{‘key’:’value’,’key1’:’value2’}

 

l  列表转字典2

list1 = [‘key’,’key1’]

list2 = [‘value1’,’value2’]

dict(zip(list1,list2))

 

l  列表内容转字符串

‘’.join(list)  返回指定字符连接序列中元素后生成的新字符串

s = [‘a’,’1’,’3’]

‘’.join(s)  ---返回’a13’

‘bc’.join(s)   --返回’abc1bc3’

 

注:join方法需要保证序列中的元素都是字符,否则会报错,可以使用‘bc‘.join(str(x) for x in s),先列表元素转换成字符

 

l  字典key,value互转

{value:key for key,value in dict.items()}

 

l  字符串转list或字典

#split函数,string按分隔方式转list

s.split("分割标示符号"[分割次数])

“sdbf,sdf,sdf ”.split(“,”)  --返回[“sdbf”,”sdf”,”sdf”]

#字符串所有字符直接转list

s = ‘aabc’

list(s)   ---[‘a’,’a’,’b’,’c’]

 

#使用eval函数去掉字符串外面的双引号

s1 = “{‘name’:’tom’}”

eval(s)  ---{‘name’:’tom’}

 

.7.        eval返回表达式结果

https://blog.csdn.net/Together_CZ/article/details/72640276

eval(express,globals=None,local=None): 返回表达式结果,相当于去掉字符串,再计算结果

express:为参与计算的python表达式,可以是str类型

globals:字典对象

locals:map对象

查找顺序,先查找locals参数,再查找globals是否存在变量,再计算

 

注:python全局变量存在globals()对象中,局部变量存在locals()对象中,可以打印;globals()对象的值可以修改,locals()对象的值不能修改

globals()[key]=2  --修改全局变量key的值

locals()[key] = 2  --修改局部变量key值不生效

.7.1.    使用场景

eval主要用于去掉外层双引号

l  eval用于字符串对象和list\dict之间转换

l = ‘[1,2,3,4]’

eval(l)   --返回[1,2,3,4],list类型

 

l  计算

eval(‘1+1’)  --返回1+1的计算结果

l  配合globals和locals

age =10   --局部变量

name = 1  --全部变量

def f():

         age = 18  --局部变量

         eval(“{‘name’:name,’age’:age}”)    --{‘name’:1,’age’:18}},先去掉字符串双引号,再变量表达式计算,先查局部变量,再查找全局变量

         eval(同上,{‘age’:123,’name’:xxx},{….})   --local和globals参数同时存在,先找local参数中->globals参数中

         eval(同上,{‘age’:123,’name’:xxx})   -只存在globlas,只在globals参数中查找

 

注:eval可以替换成ast.literal_eval  ,更安全些

 

.7.2.    exec(object,globals,locals)

执行储存在字符串或文件中的python语句,与eval更复杂

.8.        随机数

l  random.choice(seq)

从序列中随机返回一个元素,seq:序列,字符串也是序列,是特殊序列

l  random.sample(seq,k)

从序列中随机取k个元素组成新序列,seq个数必须大于k,否则会出错

l  random.random()

返回0~1之间的随机数

 

l  random.unifrom(x,y)

返回x~y之间的随机浮点数

 

l  random.randint(a,b)

返回a~b之间的随机整数

l  random.randrange(start,stop,[step])

输出start到stop-1之间的随机元素,可设置步长,如:randrange(1,6,2),则在[1,3,5]中随机返回一个元素

l  random.seed([x])

设置种子,种子相同,每次获取的随机数相同,不同种子,获取的随机数不同

random.seed(10)

random.random()  --多次调用该方法返回的随机数相同

 

.1.        迭代对象相关方法

l  all(iterable)

判断可迭代对象中的所有元素是否都为true,有一个False返回False

注:空列表、空元组返回true

 

l  any(iterable)

与all相反,判断可迭代对象中的所有元素是否都为False,全False返回true

 

l  enumerate(iterable,[start]) 

遍历可迭代对象,返回(下标,元素);start为开始遍历的下标

for I in enumerate(tup)

         print(i)   --其中i为(0,第一个元素值)

或for i,k in enumerate(tup)

         print(I,k)   --其中i为小标,k为值

 

 

属性相关操作

l  dir(object)

返回指定对象的所有属性和方法,不传返回当前模块的

 

l  hasattr(object,attr)

判断对象是否包含对应的属性

l  delattr(object,attr)

删除属性

l  setattr(object,attr,value)

指定对象设置属性值

 

l  getattr(object,attr,[default])

获取对象的属性值,如不存在,返回default

repr(object)

将对象转换为共解释器读取的形式

 

filter(序列通过指定函数来过滤序列)

用于过滤序列,过滤掉不符合条件的元素,返回迭代器对象;如果要转换为列表,使用list()来转换;第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数,最后将返回return值为True(非0)的元素放到迭代器中

filter(function,iterable)

def show(x):

         if x>5

                   return True

         else:

                   return False

result = filter(show,range(10))   --返回迭代器

list(result)  --返回[6,7,8,9]

map(每个元素执行同一个函数)

map(function,iterable…)

将序列中的每个元素都执行同一个function函数,返回函数执行结果集的迭代器

获取当前运行类和函数名称

l  函数内部获取当前函数名称

sys._getframe().f_code.co_name

或者使用inspect模块,inspect.stack()[1][3]

l  类中获取类名称

slef.__class__.__name__

l  类中获取方法名称

sys._getframe().f_code.co_name

或者使用inspect模块,inspect.stack()[1][3]

 

.1     行表达式

l  var = va1 if condition else va2

如果if为真,var=va1,否则var=va2,其中va1和va2是表达式

 

l  c = a>b and a or b

表达式真则:1 and a or b = a

表达式假则:0 and a or b = b

示列:

x1 and x2 : x1为假,直接判断为假,返回0;x1为真,返回x2

x1 or x2 : x1为真,直接返回x1;x1为假,返回x2

 

l  c = [b,a][a>b]

a>     b的判断结果1代表真,0代表假;c返回[b,a]列表对应索引(0或1)的值

示列:c = [3,4][3>5] 其中3>5返回1,则c的值为索引为1的值

 

.2     in/is用法

in:在指定序列中找到值

is:判断两个标识符是不是引用一个对象

l  a in [1,3,5]   --指定序列中是否有a

l  ‘xx’ in ‘2323xsdsd’  --指定字符串序列中是否有字串xx

l  x is y   --类似id(x)==id(y)

.3     python项目依赖包管理(requrements.txt)

python项目移植到其他环境时,往往需要重新安装所需的第三方包,比较繁琐,可以在python项目中使用pip freeze>requirements.txt,在项目目录生成requrements.txt文件,该文件包含所有库包

 技术图片

 

 

在新环境可以使用pip install -r requirements.txt来安装所有的库包

python常用功能

标签:img   描述   解释器   stack   pip   不能   下标   ring   split   

原文地址:https://www.cnblogs.com/Durant0420/p/14464820.html

上一篇:java中的运算符

下一篇:java


评论


亲,登录后才可以留言!