发布网友 发布时间:2022-03-29 10:56
共1个回答
热心网友 时间:2022-03-29 12:25
Python解释器内置了许多函数,这意味着我们无需定义,始终可以它们。下面按照函数的字母顺序,讨论一些常用的内建函数。
eval()
eval()函数解析传给它的表达式,并在程序中运行Python表达式(代码)。举个例子:
>>> x = 1
>>> eval("x + 1") # 注意:"x + 1"是字符串
2
>>> eval("4 < 9")
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对象
<filter object at 0x1036dc048>
>>> 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'的字典
<filter object at 0x1036de128>
>>> 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
关于Python的基础问题可以看下这个网页的视频教程,网页链接,。