面向过程编程及各种表达式
面向过程编程:
核心是'过程'二字,过程 指的是一种解决问题的步骤,即先干什么再敢什么
基于该编程思想编写程序,就好比在设计一条工厂流水线,一种机械式的思维方式
-优点:将复杂的问题流程化,进而简单化
-缺点:若修改当前程序设计的某一部分,会导致其他部分同时需要修改
牵一发而动全身,可扩展性差
三元表达式:可以将if...else...分支编成一行。
语法:
条件成立,返回左边的值 if 判断条件 else 条件不成立返回右边的值
#通过if...else语法
def max2(num1,num2):
if num1>num2:
return num1
else:
return num2
res = max2(10,20)
print(res)
#三元表达式
num1 = 10
num2 = 20
def max2(num1,num2):
res = num1 if num1 > num2 else num2
return res
res = max2(num1,num2)
print(res)
# 需求: 让用户输入用户名,输入的用户如果不是tank,为其后缀添加_DSB
username = input('请输入用户名:').strip()
new_username = username if username == 'tank' else username + '_DSB'
print(new_username)
列表生成式:可以一行实现生成列表
语法:
list = [取出的每一个值添加到当前列表中、任意值 for 可迭代对象中取出的每一个值 in 可迭代对象
# for的右边是循环次数,并且可以取出可迭代对象中每一个值
# for的左边可以为当前列表添加值
list = [值 for 可迭代对象中取出的每一个值 in 可迭代对象]
list = [值 for 可迭代对象中取出的每一个值 in 可迭代对象 if 判断]
# 需求:将list中的值,依次取出,添加到l1中
list = [1,2,3,4]
l1 = []
for i in list:
l1.append(i)
print(l1)
# 普通方式
new_list = []
for i in range (1,101):
new_list.append(i)
print(new_list)
#列表生成器
list = [ i for i in range(1,5)]
print(list)
>>>[1,2,3,4]
list = [ 1 for i in range(1,5)]
print(list)
>>>[1,1,1,1]
list = [ 'baohan' for i in range(1,5)]
print(list)
>>>['baohan','baohan','baohan','baohan']
#需求:将name_list列表中的每一个人后缀都添加_dsb
name_list = ['jason', '饼哥', 'sean', 'egon']
new_name_list = [name + '_dsb' for name in name_list]
print(new_name_list)
生成器表达式(生成器生成式):
- 列表生成式: 若数据量小时采用
[line for line in range(1, 6)] ---> [1, 2, 3, 4, 5]
优点:可以依赖于索引取值,取值方便
缺点:浪费资源
- 生成器生成式: 若数据量过大时采用
() ---> 返回生成器
(line for line in range(1, 6)) ---> g生成器(1, 2, 3, 4, 5)
优点:节省资源
缺点:取值不方便
# 生成一个有1000个值的生成器
g = (line for line in range(1, 1000001))
print(g) # <generator object <genexpr> at 0x00000203262318E0>
g1 = list(g)
print(g1)