ToB企服应用市场:ToB评测及商务社交产业平台

标题: day13-阶段总结 [打印本页]

作者: 汕尾海湾    时间: 2024-5-16 16:34
标题: day13-阶段总结
1.知识补充

1.1 nolocal关键字

在之前的课程中,我们学过global关键字。
  1. name = 'root'
  2. def outer():
  3.     name = "武沛齐"
  4.     def inner():
  5.         global name
  6.         name = 123
  7.     inner()
  8.     print(name)        # 武沛齐
  9. outer()
  10. print(name)        # 123
复制代码
实在,还有一个nolocal关键字,用的比力少,此处作为了解即可。
  1. name = 'root'
  2. def outer():
  3.     name = "武沛齐"
  4.     def inner():
  5.         nonlocal name
  6.         name = 123
  7.     inner()
  8.     print(name)        # 123
  9. outer()
  10. print(name)        # root
复制代码
  1. name = 'root'
  2. def outer():
  3.     name = 'alex'
  4.     def func():
  5.         name = "武沛齐"
  6.         def inner():
  7.             nonlocal name
  8.             name = 123
  9.         inner()
  10.         print(name)        # 123
  11.     func()
  12.     print(name)        # alex
  13. outer()
  14. print(name)        # root
复制代码
  1. name = 'root'
  2. def outer():
  3.     name = 'alex'
  4.     def func():
  5.         nonlocal name
  6.         name = "武沛齐"
  7.         def inner():
  8.             nonlocal name
  9.             name = 123
  10.         inner()
  11.         print(name)        # 123
  12.     func()
  13.     print(name)        # 123
  14. outer()
  15. print(name)        # root
复制代码
1.2 yield from

在生成器部分我们了解了yield关键字,其在python3.3之后有引入了一个yield from。
  1. def foo():
  2.     yield 2
  3.     yield 2
  4.     yield 2
  5. def func():
  6.     yield 1
  7.     yield 1
  8.     yield 1
  9.     yield from foo()
  10.     yield 1
  11.     yield 1
  12. for item in func():
  13.     print(item)
复制代码
1.3 深浅拷贝



2.阶段总结


3.考试题

  1. # 如果文件有多行
  2. with open("etl_log.txt", mode="r", encoding="utf-8") as f:
  3.     for line in f:
  4.         print(line)
复制代码
  1. # 文件只有一行
  2. import os
  3. file_size = os.path.getsize("etl_log.txt")
  4. chunk_size = 0
  5. with open("etl_log.txt", mode='r', encoding="utf-8") as f:
  6.     while chunk_size < file_size:
  7.         data = f.read(1)
  8.         chunk_size += len(data)
复制代码
  1. import os
  2. def get_all_file(folder_name):
  3.     data_list = os.walk(folder_name)
  4.     for folder_path, folder_list, file_list in data_list:
  5.         for file_name in file_list:
  6.             file_path = os.path.join(folder_path, file_name)
  7.             print(file_path)
复制代码
  1. def extend_list(val,data=[]):
  2.         data.append(val)
  3.         return data
  4. list1 = extend_list(10)
  5. list2 = extend_list(123,[])
  6. list3 = extend_list("a")
  7. print(list1,list2,list3)        # [10, 'a'] [123] [10, 'a']
复制代码
  1. import sys
  2. print(sys.argv)
复制代码

  1. even_list = [i for i in range(101) if i % 2 == 0]
  2. print(even_list)
复制代码
  1. def add(x,y):
  2.    return x+y
复制代码
  1. add = lambda x, y: x + y
复制代码
  1. def num():
  2.    return [lambda x: i * x for i in range(4)]
  3. result = [m(2) for m in num()]
  4. print(result)        # [6, 6, 6, 6]
复制代码
  1. # 写timer装饰器实现:计算fun函数执行时间,并将结果给 result,最终打印(不必使用datetime,使用time.time即可)。
  2. @timer
  3. def func():
  4.     pass
  5. result = func()
  6. print(result)
复制代码
  1. import time
  2. import functools
  3. def timer(origin):
  4.     @functools.wrap(origin)
  5.     def inner(*args, **kwargs):
  6.         start = time.time()
  7.         res = origin(*args, **kwargs)
  8.         end = time.time()
  9.         message = "耗时:{}".format(end - start)
  10.         print(message)
  11.         return res
  12.     return inner
  13. @timer
  14. def func():
  15.     pass
  16. result = func()
  17. print(result)
复制代码
  1. 内部维护的数据有:0123456789AB..Zab..z(10个数字+26个大写字母+26个小写字母)。
  2. 当执行函数:
  3.     base62encode(1),获取的返回值为1
  4.     base62encode(61),获取的返回值为z
  5.     base62encode(62),获取的返回值为10
复制代码
  1. import string
  2. import itertools
  3. MAP = list(itertools.chain(string.digits, string.ascii_uppercase, string.ascii_lowercase))        # 生成内部维护的数据
  4. def base62encode(data):
  5.     total_count = len(MAP)
  6.     position_value = []
  7.     while data >= total_count:
  8.         data, div = divmod(data, total_count)  # 得到余数和商
  9.         position_value.insert(0, MAP[div])        # 取得MAP中对应的值放到列表最前面
  10.     position_value.insert(0, MAP[data])
  11.     res = "".join(position_value)
  12.     return res
复制代码
  1. print("\n".join([" ".join(["{}*{}={}".format(i, j, i * j) for i in range(1, 10) for j in range(i, 10)])]))
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4