zoukankan      html  css  js  c++  java
  • 【Finish】Python Day 15

    # # 复习
    # # 迭代器和生成器
    # 迭代器
    # 可迭代协议——含有iter方法的都是可迭代的
    # 迭代器协议——还有next和iter的都是迭代器
    #
    # 特点
    # 节省内存空间
    # 方便逐个取值,一个迭代器只能取一次
    #
    # 生成器——所有的生成器都是迭代器
    # 生成器函数
    # 含有yield关键字的函数都是生成器函数
    # 生成器函数的特点
    # 调用之后函数内的代码不执行,返回生成器
    # 每次从生成器中取一个值就会执行一段代码,遇见yield就停止
    # 如何从生成器中取值:
    # for循环:如果没有break会一直取,直到取完
    # next:每次只取一个
    # send:不能用在第一个,取下一个值得时候给上一个位置传一个新的值
    # 预激活 可以使用装饰器修饰
    # 数据类型强制转换:会一次性把所有数据都取到
    #
    # 生成器表达式
    # (条件成立,想放在生成器中的值 for i in 可迭代的 if 条件)
    #
    # # 1、处理文件,用户指定要查找的文件和内容,将文件正包含要查找内容每一行都输出到屏幕上
    # def output_file_result(file,content):
    # with open(file=file,mode='r',encoding='UTF-8') as f: # 句柄handler,文件操作符,文件句柄
    # for line in f:
    # if content in line:
    # yield line.strip()
    # ret = output_file_result('file','python')
    # for i in ret:
    # print(i)
    #
    # # 2、写生成器,从文件中读取内容,在每一次读取到的内容之前加上'***'之后再返给用户
    # def output_file_result_g():
    # with open(file='file',mode='r',encoding='UTF-8') as f:
    # for line in f:
    # yield '***'+line.strip()
    # ret = output_file_result_g()
    # for i in ret:
    # print(i)

    # def generator():
    # for i in range(3):
    # yield i
    # g = generator()
    # g1 = (i for i in g)
    # g2 = (i for i in g1)
    # print(list(g1))# [0, 1, 2]
    # print(list(g2))# []


    # def add(n,i):
    # return n+i
    #
    # def test():
    # for i in range(4):
    # yield i
    #
    # g = test()
    # for n in [1,10,5]:
    # g = (add(n,i) for i in g)
    #
    # # 解析步骤如下所示:
    # 1
    # g = (add(n,i) for i in g)
    # 10
    # g = (add(n,i) for i in g)
    # 5
    # g = (add(n=5,i(10,11,12,13)) for i in (add(n=5,i(5,6,7,8)) for i in (add(n=5,i(0,1,2,3)) for i in g)))
    #
    # print(list(g)) # list(g)才是执行状态



    # 内置函数
    # print(locals())#返回本地作用域中的所有名字
    # print(globals())#返回全局作用域中的所有名字
    # global 变量
    # nonlocal 变量

    # 迭代器.__next__()
    # next(迭代器)
    # def next(迭代器):
    # 迭代器.__next__()
    # [].__len__() = len([])

    # 迭代器 = iter(可迭代的)
    # 迭代器 = 可迭代的.__iter__()

    # range(1,11)
    # range(1,11,2)

    # dir 查看一个变量拥有的方法
    # print(dir([]))

    # print(callable(print)) # True 确认是否是函数名,是否可以被调用
    # print(callable(globals))# True

    # print(help(str)) # 输出可调用方法名以及其用法

    # import time
    # time = __import__('time')
    # print(time.time())


    # 某个方法属于某个数据类型的变量,据用.调用
    # 如果某个方法不依赖任何数据类型,就直接调用——内置函数和自定义函数

    # f = open('log') # open是内置函数
    # print(f.writable()) # 检测是否可写
    # print(f.readable()) # 检测是否可读


    # id
    # print(hash(123)) # 123
    # print(hash('12242'))# 8424298810427281872

    # print(hash((1,2,)))# 3713081631934410656
    # print(hash((1,2,)))# 3713081631934410656

    # print(hash([])) # TypeError: unhashable type: 'list'

    # 对于相同可以hash的数据的hash值在一次的执行过程中总是不变的
    # 字典寻址,通过hash值


    # ret = input('提示:')
    # print(ret)

    # print('啊哈哈哈',end='')# 指定输出结束符
    # print('啊哈哈哈',end='')
    # 啊哈哈哈啊哈哈哈
    # print(1,2,3,4,5,sep='|') # 1|2|3|4|5 指定输出多个值之间的分隔符
    # f = open('log','w') #
    # print('aaa',file=f)
    # f.close()

    # import time
    # for i in range(0,101,2):
    # time.sleep(0.3)
    # char_num = i//2 # 整除
    # per_str = ' %s%%:%s ' % (i,'*'*char_num) if i==100 else ' %s%%:%s'%(i,'*'*char_num) # 回到行首
    # print(per_str,end='',flush=True) # flush = true,直接输出,不等其它数据的缓存
    # # progress_Bar

    # exec('print(123)') #123
    # eval('print(123)') #123
    # print(exec('(1+2+3)')) # None
    # print(eval('(1+2+3)'))# 6
    # exec 和eval都可以执行字符串类型的代码,但是区别是eval有返回值,而exec无返回值
    # eval只能用在明确知道你要执行的代码是什么
    # exec 没有返回值——简单的流程控制
    # eval 有返回值——有结果的简单计算
    # code = '''for i in range(10):
    # print(i*'*')'''
    # exec(code)

    # code1 = 'for i in range(1,10):print(i)' # 编译成可执行模式
    # compile1 = compile(code1,'','exec')
    # exec(compile1) # 1 2 3 4 5 6 7 8 9 10

    # code1 = '1+2+3+4' # 编译成可执行模式
    # compile1 = compile(code1,'','eval')
    # print(eval(compile1)) # 10

    # code = 'name = input("please input your name:")'
    # compile1 = compile(code,'','single')
    # exec(compile1)
    # print(name) # 输出input输入的内容,pycharm

    # 复数——complex
    # 实数:有理数 和 无理数
    # 虚数:虚无缥缈的数 比方说负数的平方是负数
    # 复数 :5+12j 5是实数,12是虚数 == 复数

    # 浮点数(有限循环小数,无线循环小数) == 小数:无限不循环小数不属于浮点数
    # 浮点数
    # 354.123 = 3.54123*10**2f = 35.4123*10
    # f = 1.84653245783465834 # 1.8465324578346582 浮点数特别长久会出现不准的情况,因为二进制转换出问题

    # print(bin(10)) # 0b1010 10进制
    # print(oct(10)) # 0o12 8进制
    # print(hex(10)) # 0xa 16进制

    # print(abs(-5)) # 求绝对值
    # print(divmod(10,2)) #(5, 0) div除法 mod取余 == 除余方法

    # print(round(3.141592,3)) # 3.142
    # print(pow(2,3)) # 8 pow幂运算 2**3
    # print(pow(3,2,1)) # 3的2次幂取1余 0

    # print(sum([1,2,3])) # 6
    # print(sum([1,2,3],10)) # 16 累加

    # print(min([6,1,2,3,4,5])) # 1
    # print(min(6,4,2,3,-4,5)) # -4
    # print(min(-4,2,3,-3,key=abs)) # 2 求绝对值的最小值
    # print((-4,2,3,-3,key=abs)) # 2 求绝对值的最小-4大值







  • 相关阅读:
    浅谈三层架构
    尺度空间(Scale space)理论
    漫游Kafka实现篇之消息和日志
    杭电 2095
    .net调用Outlook 批量发送邮件,可指定Outlook中的账号来发送邮件
    Java实现 蓝桥杯VIP 算法提高 计算时间
    Java实现 蓝桥杯VIP 算法提高 计算时间
    Java实现 蓝桥杯VIP 算法提高 计算时间
    Java实现 蓝桥杯VIP 算法提高 计算时间
    Java实现 蓝桥杯VIP 算法提高 最小乘积(提高型)
  • 原文地址:https://www.cnblogs.com/wonderful0714/p/9461253.html
Copyright © 2011-2022 走看看