生成器

生成器是迭代器的一种

面试小重点:

""""
函数中如果存在yield关键字,在调用函数之前,还是一个普通函数,一旦调用函数,就把函数变成了生成器(迭代器)

****************
生成器一定是迭代器
迭代器不一定是生成器
***************
"""
res=index()  # 此时就是生成器,并不会运行函数
ret=res.__next__()   # 代码遇到yield关键字,会停住,夯住
ret=res.__next__()  # 再次执行__next__,代码从上一次被停住的位置继续往下执行
ret=res.__next__()
# print(ret)

yield传值:

第一次取值可以用res.sent(None)代替

yield与return的区别

生成器的表达式

笔试题:

前面的只会屯着但不运行,直到循环到最后一次才会一起执行

 
 print(abs(10))
 print(abs(-10))  # 绝对值

    
 l = [1, 2, 3, 0]
 print(all(l))  # True
 print(any(l))

arr = range(10)


myslice = slice(5)    # 设置截取5个元素的切片



"""
    100条数据  10条  10页
    99条      10    10页
    101条      101  11
"""

 page, more=divmod(100, 10)
 page, more=divmod(99, 10)
 page, more=divmod(2005, 10)
 if more:
     page += 1
 print(page)

# res="""print('hello world')""" #
res="""
# 这是注释
for i in range(10):
    print(i)
""" #
# eval(res) # 识别简单的python代码
# exec(res)

# if type(123) is int:
#     print('123')
# print(type('123') is int)  # 判断数据类型的
# print(isinstance('123', int))
# print(isinstance(123, int))
# print(isinstance('123', str))
# print(isinstance([1,2,3,4], list))
# print(isinstance({'a':1}, dict))



# print(chr(65))
# print(chr(97))  # 根据ASCII码表,填入对应的十进制,返回对应的字符
# print(ord('A'))
# print(ord('z'))  # 根据ASCII码表,填入对应的字符,返回对应的十进制



# l = [10, 20, 30 ,40, 50]
# print(sum(l))  # 求和



# print(pow(4, 3))  # 4 ** 3
# print(pow(2, 3))  # 4 ** 3


s = '你好啊'
# res=s.encode('utf-8')
# print(res)
# ret = res.decode('utf-8')
# print(ret)
# res=bytes(s, 'utf-8')
# print(res)
# print(str(res, 'utf-8'))

def index():
    print('from index')

# print(callable(index))  # 查看是否能够被调用



'''健壮性'''
# res=callable(index)
# if res:
#     index()
# else:
#     ''''''

# def func(name, age):
#     print(locals()) # {'name': 1, 'age': 2}
# func(1, 2)

# 复数,而不是负数
# 1+2j

# 四舍五入
print(round(3.4))
print(round(3.5))
print(round(3.6))

 

posted @ 2023-03-07 19:35  无敌大帅逼  阅读(54)  评论(0)    收藏  举报