美文网首页
08.eval、exec和其他函数

08.eval、exec和其他函数

作者: 哈哈大圣 | 来源:发表于2019-12-17 20:16 被阅读0次

eval、exec和其他函数

一、eval函数

1). eval函数的功能

  1. 将字符串形式的变量转换成Python的数据类型
    • 元组 字典 列表 有返回值
  2. 将字符串形式的数字的计算式直接转换并计算出结果
  3. 必须是单行代码

2). 用法演示

  1. 将字符串提取内容转换为四则运算
g = '1 + 2 * 3 -2 / (-1 -1)'
g = eval(g)
msg = '4 ** 5'
a = eval(msg)
  1. 将字符串提取内容转换为int
a = '1.1'
a = eval(a)
  1. 将字符串提取内容转换为list
b= '[1,2,3]'
eval(b)
  1. 将字符串提取内容转换为tupe
c = '(1,2,3,)'
c = eval(c)
f = '1,2,3,4'
f = eval(f)
  1. 将字符串提取内容转换为dict
d = '{1:1,2:2,3:3}'
d = eval(d)
  1. 将字符串提取内容转换为set
e = '{1,2,3}'
eval(e)
  1. 补充:交互器写多行代码的方法
code = '''
pass
'''

3).exec函数

  1. 能将多行字符串转换成代码
  2. 没有返回值
  3. exec模板
code = """
for i in range(5):
    print(i)
"""
exec(code)

二、其他函数

1). isinstance() 判断对象是否为类的实例

isinstance(1,int)
isinstance('abc',str)
isinstance([],list)
isinstance({},dict)
isinstance({1,2},set)

2). sum()求和

d = [1,2,3,4,5]
sums = sum(d)

3). bytearray() 转换为字节数组

s = "ABC哈哈大圣"
s = s.encode("utf8")
s = bytearray(s)
s[0] = 97
print(s[5])
s[5] = 137
s = s.decode("utf8")
print(s)

4).callable(a) 判断是否可调用,是否是函数

def a():
    pass
boolean = callable(a)

5). locals()返回局部变量

6). globals()返回全局变量

7). repr(obj)返回规范化的字符串表示该对象的方法

8). zip将两个可迭代对象打包成一个对应元素的元组列表

print(list(zip([0,1,2,3],["a","b","c","d"])))

9). complex(int_a, int_b) 复数

10). round(2.35434, 3)保留几位小数

11). abs(-1)取绝对值

12). 编码转换

name='你好'
print(bytes(name,encoding='utf-8'))  # 转换为字节,py3把除非Unique编码的汉字全部以16进制表示
print(bytes(name,encoding='utf-8').decode('utf-8'))  # 先编码,再解码

13). hash()哈希运算

  1. 可hash的数据类型即不可变数据类型(预防篡改),不可hash的数据类型即可变数据类型
hash_after = hash('12sdfdsaf31231asdfasdfsadfsadfasdfasdf23')

14). help(dict) 查看帮助信息

15). 幂运算

a = pow(3,3)     # 3**3
b = pow(3, 3, 2) # 3**3%2   #3的3次方然后取余

16). 反转

l=[1,2,3,4]
h = reversed(l) # 返回一个反转的列表迭代器
print(next(h))
print(l)

17). slice()自定义切片功能

l='hello'
s1=slice(3,5)      # 定义切片(不收尾)
s2=slice(1,4,2)    # 定义切片(不收尾)指定步长为2
a = l[3:5]         # 直接切片
b = l[s1]          # 使用定义的切片取值
c = l[s2]          # 使用定义的切片取值,步长为2
d = s2.start       # 查看定义的参数  开始位置
e = s2.stop        # 查看定义的参数  结束位置(不收尾)
f = s2.step        # 查看定义的参数  步长

18). max

注意!比较的值必须是同一个类型,否则报错

l = [1,3,100,-1,2]
maxs = max(l)   # 取最大值,从前到后一个一个比较(类型必须一样)(print(min(l))

19). min

age_dic={'a':18,'b':20,'c':100,'d':30}
a = max(age_dic) # 默认比较的是字典的key
b = max(age_dic.values())
print('=======>',list(max(zip(age_dic.values(),age_dic.keys()))))  # 默认比较转换结果的第一个参数
  • 指定比较的值
people=[
    {'name':'a','age':1000},
    {'name':'b','age':10000},
    {'name':'c','age':9000},
    {'name':'d','age':18},
]
print(max(people, key=lambda dic:dic['age']))

20). set('hello') 变成一个集合的方式 鸭子类型转换

21). type("ss") 查看数据类型

22). vars() 获得当前作用域所有的变量值或者类型,是一个字典。

三、函数闭包

# 闭包的效果,这种情况当return了,当前函数bibao没有被释放.
def bibao():
    name = "go"
    def baobao():
        print(name)
    return baobao
    
func = bibao()
func()

四、补充:import导入方式

  1. import---调--->sys---调-->import()
import test   #test.py 这个写的模块,import不能导入字符串
test.say_hi()
import 'test'   # 报错

module_name='test'
m=__import__(module_name)  # 这种方式为导入字符串方式导入模块
m.say_hi()

相关文章

  • 08.eval、exec和其他函数

    eval、exec和其他函数 一、eval函数 1). eval函数的功能 将字符串形式的变量转换成Python的...

  • php命令执行函数

    Exec函数 Exec函数的语法为: exec ( string $command [, array &$outp...

  • Nodejs spawn 之stdio

    spawn,exec,execFile和fork关系 从上图可以看出,在用户层面其他的三个函数都调用了child_...

  • 代码审计——命令执行

    了解命令执行函数 system()passthru() 需回显示函数exec() shell_exec() ` `...

  • PHP的exec()

    php中可以使用 exec() 函数调用外部函数。 语法: string exec ( string $comma...

  • 进程控制二

    函数exec 函数介绍 这几个函数若出错返回-1,成功不返回。 这几个函数的区别 我们看到这几个函数都是exec开...

  • Python可执行对象——exec、eval、compile

    Python提供的调用可执行对象的内建函数进行说明,涉及exec、eval、compile三个函数。exec语句用...

  • 内置函数

    内建函数: 其他相关 不建议使用字符串类型代码的执行 eval,exec,complieeval: 执行字符串类...

  • ES6 promise版的Ajax封装

    语法: exector是带有resolve和reject两个参数的函数,Promise构造函数执行立即调用exec...

  • exec函数族

    fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数...

网友评论

      本文标题:08.eval、exec和其他函数

      本文链接:https://www.haomeiwen.com/subject/atuenctx.html