print(abs(-1)) # 1 print(abs(100)) # 100round()—四舍五入
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__': , '__file__': 'E:/Python/Study/py_20210522_爬虫/py_20220613_基础/py_20220616_globals与locals.py', '__cached__': None, 'main': , 'c': 3}
******************************
全局作用域再的globals: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000017A250AF340>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'E:/Python/Study/py_20210522_爬虫/py_20220613_基础/py_20220616_globals与locals.py', '__cached__': None, 'main': , '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:nPythontProject' print(type(repr(path))) #hash()—生成哈希值print(repr(path)) # 'D:nPythontProject' # 相当于 print(r'D:nPythontProject') # D:nPythontProject
# 文件校验
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("文件校验失败")



