Python3 内置函数及excel操作

雨燕双飞 提交于 2020-04-29 15:31:49

exec是通过命令行执行,类似于print

exec和eval的区别:

1、eval有返回值,exce没有返回值

2、eval不可以执行复杂代码 会报错,但是exec可以执行复杂代码

python一些常用的内置函数及作用请见以下代码,值得一提的是eval和exec的区别,最大的一个区别是eval会返回代码运行的值,类似于函数自带了一个return功能,但是exec不会,它只管执行代码,等于是函数没有return值,默认返回了None;还有一个区别是exec可以执行复杂的代码,类似于命名函数,定义对象等,但eval不行。通过exec可以执行动态Python代码,类似Javascript的eval功能;而Python中的eval函数可以计算Python表达式,并返回结果

复制代码
1 lis=[1,4,3,8,2,9,10,0]
 2 print(all(lis))#判断可迭代对象里头是否存在不为真的元素,如果全为真,则显示True,如果存在不为真的元素则返回False
 3 print(any(lis))#判断可迭代对象里头是否存在为真的元素,如果存在为真的元素则返回True,否则False
 4 print(bin(10).replace('0b',''))#10进制转换为二进制,后面的replace是用空格取代二进制的前缀:ob
 5 print(bool({}))#把一个对象转换成布尔类型(True,False),非空即真,非0即真
 6 from hashlib import md5
 7 m=md5()
 8 print(dir(m))#dir列出m的方法
 9 eval('print("haha")')
10 exec('print("haha")')
11 b=exec('[1,2,3]')#exec执行代码时,不返回值,不能赋值,这里b是none
12 c=eval('[1,2,3]')#eval执行代码时,返回值,多用于表达式,这里赋值成功
13 print(b)#会输出None
14 print(c)#会输出[1,2,3]
15 exec("def hs():print(123)")#可执行复杂代码,这里正常余兴
16 eval("def hs():print(123)")#不可以执行复杂代码,会报错
17 print(round(66.66666,3))#round(float,int)保留float小数的int位
18 print(sum([1,6,9]))#求和
19 print(min([1,6,9]))#取最小值
20 print(max([1,6,9]))#取最大值
21 print(hex(34523).replace('0x',''))#10进制转16进制
22 print(hash('asd'))#将一个字符串hash成数字
23 print(globals())#返回程序内所有的变量,返回的是一个字典
24 print(locals())#返回局部变量

复制代码

  通过exec可以执行动态Python代码,类似Javascript的eval功能;而Python中的eval函数可以计算Python表达式,并返回结果,>>>可以通过右击Pycharm,选择“Execute Line in Console”来调用

>>> a = 1
>>> exec("a = 2")
>>> a
2

eval有返回值,不能赋值,不能像exec那样进行复杂的运算。

a=2
eval('a')
2

 

 eval的用法:同exec一样,eval也可以使用命名空间:

>>> result = eval('2+3')
>>> result
5
>>> scope={}
>>> scope['a'] = 3
>>> scope['b'] = 4
>>> result = eval('a+b',scope)
>>> result
7

 

接下来我们详细看下filter和map这两个内置函数,map这个函数会改变原来的list的元素,这里只的改变有:修改、删除,而filter这个函数只能删除、不能修改元素,还有一点需要注意,这两个函数执行后都是返回一个内存地址,需要用lsit强制转换才可以得到list数据:

复制代码
lis=['123',456,{"age":18},0,[],(1,2,3),(),{},'False']
def my_char(var):
    return var
res=filter(my_char,lis)#filter(fun,list),list只要是可迭代类型即可,循环list里的值,调用fun函数,当fun函数返回为真时,保留list的迭代值,否则,删掉
print(list(res))#res得到的是一个对象,需要list方法接收值

def maps(var):
    return str(var)+'值都变咯'
res1=map(maps,lis)#map(fun,list),list只要是可迭代类型即可,循环list里的值,调用fun函数,fun函数返回值作为新值保存到rese1对象里
print(list(res1))
复制代码

  接下来mark一下excel的操作:

 

复制代码
1 import xlrd,xlwt,xlutils,os
 2 from xlutils.copy import copy
 3 book=xlrd.open_workbook('stu.xls')#打开一个excel文件对象
 4 sheet=book.sheet_by_name('Sheet1')#通过sheet 名称指定工作sheet
 5 # sheet=book.sheet_by_index(0)#通过sheet 索引指定工作sheet
 6 all_sheets=book.sheet_names()#获取所有sheet名称,返回一个list
 7 print(all_sheets)
 8 print(sheet.cell(0,0).value)#通过cell获取指定坐标的数据
 9 print(sheet.nrows)#获取sheet页的行数
10 print(sheet.ncols)#获取sheet页的列数
11 print(sheet.row_values(0))#获取指定行数的数据
12 print(sheet.col_values(0))#获取指定列数的数据
13 
14 workbook=xlwt.Workbook()#打开一个excel文件对象
15 wsheet=workbook.add_sheet('sheet1')#添加一个sheet
16 wsheet.write(0,0,'test')#写入数据
17 workbook.save('test.xls')#保存excel,后缀必须是.xls,否则报错
18 
19 ubook=xlrd.open_workbook('stu.xls')#打开一个excel文件对象
20 mbook=copy(ubook)#复制读到的文件对象
21 msheet=mbook.get_sheet(0)#获取sheet页,注意这里只能用get_sheet(0)方法,指定下标
22 msheet.write(0,0,'new_data')#写入数据
23 mbook.save('new.xls')#保存数据
24 os.remove('stu.xls')
25 os.rename('new.xls','stu.xls')
复制代码
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!