abs()—绝对值函数
print(abs(-1)) # 1
print(abs(100)) # 100
round()—四舍五入
print(round(3.87)) # 4
print(round(9.21)) # 9
print(round(2.5)) # 2 奇进偶不进 n.5的情况特定发生。
print(round(3.5)) # 4 奇进偶不进 n.5的情况特定发生。
max()、min() 的高阶函数的使用方式
# 几种编程语言及其产生时间
lst = [('Python', 1991), ('C', 1972), ('Java', 1995), ('C#', 2001), ('Go', 2009)]
def fn(n):
return n[1]
# 列表中产生时间最早的编程语言
# key值为函数名
print(min(lst, key=fn)) # ('C', 1972)
# 列表中产生时间最晚的编程语言
# key值为函数名
print(max(lst, key=lambda x: x[1])) # ('Go', 2009)
# 由角色与其年龄组成的字典
dic = {'汤姆': 20, '杰瑞': 18, '狗狗斯派克': 23, '狗狗泰克': 3, '老鼠泰菲': 2}
def func(n):
return dic[n]
# 年龄最大的角色
# key值为函数名
print(max(dic, key=func)) # 狗狗斯派克
# 年龄最小的角色
# key值为匿名函数
print(min(dic, key=lambda x: dic[x])) # 老鼠泰菲
range()—产生指定范围数据的可迭代对象
# 一个参数
for i in range(3): # 0 1 2
print(i)
# 二个参数
for i in range(3, 8): # 3 4 5 6 7
print(i)
# 三个参数
# 正向操作
for i in range(1,9,5): # 1 6 => 留头舍尾
print(i)
# 逆向操作
for i in range(9,1,-3): # 9 6 3
print(i)
globals()、locals()—分别获取全局变量、局部变量的变量字典
def main():
a = 1
b = 2
print('main函数局部作用域中的locls:', locals())
main()
c = 3
print('*' * 30)
print('全局作用域再的locls:', locals())
print('*' * 30)
print('全局作用域再的globals:', globals())
运行结果(在全局作用域下,globals()
、locals()
生成的自动是相同的):
main函数局部作用域中的locls: {'a': 1, 'b': 2}
******************************
全局作用域再的locls: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000017A250AF340>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'E:/Python/Study/py_20210522_爬虫/py_20220613_基础/py_20220616_globals与locals.py', '__cached__': None, 'main': <function main at 0x0000017A24D17310>, 'c': 3}
******************************
全局作用域再的globals: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000017A250AF340>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'E:/Python/Study/py_20210522_爬虫/py_20220613_基础/py_20220616_globals与locals.py', '__cached__': None, 'main': <function main at 0x0000017A24D17310>, 'c': 3}
另类创建变量的方式:
dic = globals()
dic['s'] = '创建一个全局变量'
print(s)
eval()、exec()—将字符串当作python代码执行
# eval
strvar = "print(123)"
strvar = "int(15)"
print(strvar)
res = eval(strvar)
print(res,type(res))
# strvar = "a=3" error eval的局限性 不能创建变量
# eval(strvar)
# exec的功能更强大
strvar = "a=3"
exec(strvar) # 可以创建变量
print(a)
strvar = """
for i in range(10):
print(i)
"""
exec(strvar) # 运行for循环
repr()—将转义字符直接当做字符串输出
path = 'D:\nPython\tProject'
print(type(repr(path))) # <class 'str'>
print(repr(path)) # 'D:\nPython\tProject'
# 相当于
print(r'D:\nPython\tProject') # D:\nPython\tProject
hash()—生成哈希值
# 文件校验
with open("test01.py", mode="r", encoding="utf-8") as fp1, \
open("test02.py", mode="r", encoding="utf-8") as fp2:
res1 = hash(fp1.read())
res2 = hash(fp2.read())
if res1 == res2:
print("文件校验成功")
else:
print("文件校验失败")