python迭代公式_Python函数,迭代

一、 函数

1. 函数的嵌套

1 def huangwei(): #函数不能里面执行不执行外面

2 name = 'huang'

3 print(name)4

5 defliuyang():6 name = 'liuyang'

7 print(name)8

9 defnulige():10 name = 'fahsfha'

11 print(name)12

13 print(name)14 nulige()15 returnnulige16

17 liuyang()18 print(name)19 return liuyang

(1) 仅仅是 huangwei()   顺序为1-2-3-17-5-6-7-13-14-9-10-11-15-18-19

(2) huangwei() = liuyang    所以要运行liuyang    应为  huangwei()()

(3)huangwei()() = nulige    所以要运行努力哥应为  huangwei()()()

2. 函数的自循环

1 person_list = ['a', 'b', 'v', 'd', 'vd']2

3 defask_way(person_list):4 print('-' * 60)5 if person_list ==0:6 return '根本没人知道'

7 person =person_list.pop(0)8 if person == 'd':9 return '那条路是。。。。。'

10 print('hi %s ,你知道xx 路吗' %person)11 print('%s 我不知道 我帮你问问 %s' %(person, person_list))12 importtime13 time.sleep(0) #time 要先import

14 res =ask_way(person_list)15 returnres16 """------------------------------------------------------------17 hi a ,你知道xx 路吗18 a 我不知道 我帮你问问 ['b', 'v', 'd', 'vd']19 ------------------------------------------------------------20 hi b ,你知道xx 路吗21 b 我不知道 我帮你问问 ['v', 'd', 'vd']22 ------------------------------------------------------------23 hi v ,你知道xx 路吗24 v 我不知道 我帮你问问 ['d', 'vd']25 ------------------------------------------------------------26 那条路是。。。。。27 """

3. lambda 函数

(1)匿名函数 一般和其他函数联合使用lambda x:x+1:         x 为形参,x+1是返回值

(2)函数式编程,函数体内不应该有任何的赋值操作 ,没有变量的定义

4. 参数

*args: 数组形式

**kvArgs:字典形式

def printInfo(name, *args):#打印任何传入的字符串

print("name is:", name)for arg inargs:print(arg)#没有返回值

return

#正确调用

printInfo("KEN", 20, "男", 178, "70KG", 'abc')#name is: KEN 20 男 178 70KG abc

#可变长参数的函数--kv方式

def printInfo(name, **kvArgs):#打印任何传入的字符串

print("name is:", name)for k inkvArgs:print(k, "is:", kvArgs[k])#没有返回值

return

#正确调用

printInfo("KEN", age=20, sex="男", height="178", weight="70KG")"""name is: KEN

age is: 20

sex is: 男

height is: 178

weight is: 70KG"""

二、迭代

y = x.__iter__()  将x 转换为可迭代对象,可以转换为迭代器

y.__next__()/ next(y)  进行迭代每一项元素的输出  ,一行代码输出一个,  如果太多了超出范围 会报错

yield    函数的yield 相当于return  但是return 只能执行一次, yield 可以执行多次

deftest():yield S #yield 相当于return

yield 1

yield 2

yield 3 #yield 可以执行多次 ,但是return 只能执行一次

g =test()print(g)print((g.__next__()))print((g.__next__()))print((g.__next__()))print((g.__next__()))#结果##{1, 2, 3}#1#2#3

yield 可以保留函数的运行状态

defproduct_baozi():for i in range(100):print('正在生产包子')yield '一屉包子%s' %iprint('正在卖包子')

pro_b=product_baozi()print('-----')

chibz= pro_b.__next__() #正在生产包子

print('来了一个人吃包子',chibz) #来了一个人吃包子 一屉包子0

chibz = pro_b.__next__() #正在卖包子 正在生产包子 yield值已经产生了

print('来了一个人吃包子',chibz) #来了一个人吃包子 一屉包子1 输出yield 值

chibz = pro_b.__next__() #正在卖包子 正在生产包子

print('----')

chibz= pro_b.__next__() #yield 可以保留函数的运行状态

三元表达式生成迭代器:

laobuji = ('鸡蛋%s' %i for i in range(10)) #该成括号可以一个一个迭代#这是一个生成器表达式,直接形成了迭代器协议

print(laobuji.__next__())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值