python开发学习day17 (生成器;面向过程;三元表达式;生成式,内置函数)

2020-06-23                           目录:

一、生成器

1.1  什么是生成器

1.2  如何得到生成器

二、面向过程的编程思想

2.1  编程思想

2.2  面向过程

三、三元表达式

四、生成式

4.1  列表生成式

4.2  字典生成式

4.3  集合生成式

4.4  生成器表达式

五、内置函数

一、生成器

1.1  什么是生成器

生成器就是一种自定义的迭代器,用来返回多次值
好处:节省内存
return只能返回一次值,然后函数立马结束
yield:可以挂起函数,保留函数的运行状态
可以返回多次值

1.2  如何得到生成器

函数内但凡存在yield关键字,调用函数不会执行函数体代码,会得到一个返回值,这个返回值就是自定义的迭代器
def diy_range(start_num, end_num, step=1):
    while start_num < end_num:
        yield start_num
        start_num += step


g = diy_range(1, 5, 2)
print(g)  # >>> <generator object diy_range at 0x000001A1F484C9E0>
for i in g:
    print(i)  

二、面向过程的编程思想

2.1  编程思想

编程思想就是编写程序的套路,与具体的技术点无关

2.2  面向过程

面向过程的核心就是过程,过程就是解决问题的步骤
基于过程编程就类似于设计一条条环环相扣的流水线

优点:将复杂的问题流程化,进而简单化
缺点:所有环节耦合到一起,环环相扣,如果要修改某个环境,有可能会牵一发而动全身,扩展性差

三、三元表达式

def max2(x,y):
    if x > y:
        return x
    else:
        return y

  上面为一段选出两个值中最大值的代码,用三元表达式就可以一行代码解决:

res = x if x>y else y

  即 res = 条件成立时返回的值 if 条件 else 条件不成立时的返回值

四、生成式

4.1  列表生成式

l1 = [i for i in range(1,11)]  # 代替for循环将1-10存进列表

num = [1, 2, 3, 4, 5] l2 = [i for i in num if i > 3] # 取num中大于3的值存进l2

4.2  字典生成式

dic = {"name": "jason", "age": 18, "gender": "male", "level": 10}
new_dic = {k + '_': str(v) for k, v in dic.items() if k != 'level'}  # 除了‘level’,将dic中所有的key加上'_'。并将所有的value转换成字符串

4.3  集合生成式

s = {i for i in "hello" if i != "l"}
print(s)

4.4  生成器表达式

p = (i for i in range(5))
print(p)  # >>> 得到一个生成器<generator object <genexpr> at 0x000001A6C637C9E0>
for i in p:
    print(i)

五、内置函数

5.1  abs()

取绝对值

print(abs(-5))  # >>>5

5.2  all()

① 传入可迭代对象中取出来的值,全真才为真,一假则为假

② 如果从传入的可迭代对象中取不出任何值,则默认返回 True

print(all([1,True,"abc"]))  #>>>True
print(all([1,True,"abc",None]))  #>>>False
print(all([]))  # >>>True

5.3  any()

① 传入可迭代对象中取出来的值,全假才为假,一真则为真

② 如果从传入的可迭代对象中取不出任何值,则默认返回 False

print(any([0,None,False,"",1]))  # >>> True 

5.4  callable()

判断函数是否可以被调用,返回bool值

5.5  bin()、 oct()、 hex()

 bin()  将十进制数转化成二进制数
 oct()  将十进制数转换成八进制数
 hex()  将十进制数转换成十六进制数

5.6  chr() 与 ord()

ord()将字符转换成对应的ASCII十进制数
chr()将十进制数转换成对应的ASCII字符

5.7  divmod()

print(divmod(10,3))  # >>>(3,1)  以元组的形式返回商和余数

5.8 enumerate

l=[111,222,333]
for i,item in enumerate(l): 
    print(i,item)  # 取索引值和索引对应的值
原文地址:https://www.cnblogs.com/cui-cheng/p/13183220.html