float和eval在python中的意思_Python3中,eval和float有什么区别

本文介绍了Python中的eval()函数和float()函数。eval()能执行字符串形式的表达式,如计算数学表达式、调用函数等,但不适用于语句,且使用时需谨慎避免安全风险。float()函数则用于将数字或特定格式的字符串转换为浮点数,包括正负无穷和NaN。同时,文章提到了filter()函数,用于根据提供的条件过滤序列中的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

>>> x = 1

>>> eval("x + 1")  # 注意:"x + 1"是字符串

2

>>> eval("4 

True

>>> eval("'py' * 3")

'pypypy'

>>> eval("10 ** 2")

100

eval()函数不仅仅能运行简单表达式,还能调用函数,使用方法等等:

>>> eval("abs(-11)")        # 计算-11的绝对值

11

>>> eval('"hello".upper()')   # 把字符串'hello'全变成大写字母

'HELLO'

>>> import os

>>> eval('os.getcwd()')       # 获取当前的工作目录

'/home/thepythonguru'

但是需要注意的是eval()仅适用于表达式,尝试传递语句会导致语法错误:

>>> eval('a = 1')                    # 赋值语句

Traceback (most recent call last):

File "", line 1, in

File "", line 1

a = 1

^

SyntaxError: invalid syntax

>>> eval('import re')             # 导入语句

Traceback (most recent call last):

File "", line 1, in

File "", line 1

import re

^

SyntaxError: invalid syntax

此外,使用eval()语句应该十分小心,永远不要将不受信任的源直接传递给eval()。 因为恶意用户很容易对您的系统造成破坏。 例如:

>>> eval(input())  # eval()将执行用户输入的代码

用户输入以下代码就能从系统中删除所有文件:

os.system("RM -RF /")

# 上面输入相当于执行:

>>> eval('os.system("RM -RF /")')

filter()

"filter"的意思是“过滤”,filter()函数需要两个参数:一个函数对象和一个可迭代对象。函数对象需要返回一个布尔值,并为可迭代的每个元素调用。 filter()函数仅返回那些通过函数对象返回值为true的元素。解释有一些抽象,看一个例子:

>>> a = [1, 2, 3, 4, 5, 6]

>>> filter(lambda x : x % 2 == 0, a)        # 过滤出所有偶数,结果返回一个filter对象

>>> list(filter(lambda x : x % 2 == 0, a))  # 可以使用list()函数使fileter对象变成列表,方便查看结果

[2, 4, 6]

下面是另外一个例子:

>>> dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]

>>> filter(lambda x : x['name'] == 'python', dict_a)  # 过滤出列表中键'name'为值'python'的字典

>>> tuple(filter(lambda x : x['name'] == 'python', dict_a))  # 使用tuple()函数使结果变成字典

({'name': 'python', 'points': 10},)

float()

float()的参数是一个数字或者字符串,它返回一个浮点数。如果参数是字符串,则字符串中应该包含一个数字,并可以在数字前加入一个 '-' 符号,代表负数。参数也可以是表示NaN(非数字)或正无穷大的字符串。如果没有任何参数的话,将返回0.0。

>>> float('+1.23')         # 1.23

1.23

>>> float('   -12345\n')   # -12345

-12345.0

>>> float('1e-003')        # 0.001

0.001

>>> float('+1E6')          # 10的6次幂

1000000.0

>>> float('-Infinity')     # 无穷小

-inf

>>> float('-inf') + 100     # 负无穷小加100仍等于负无穷小

-inf

>>> float('inf')           # 无穷大

inf

>>> float('NaN')           # NaN,代表非数字

nan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值