一、 函数
1. 函数的嵌套
1 def huangwei(): # 函数不能里面执行不执行外面 2 name = 'huang' 3 print(name) 4 5 def liuyang(): 6 name = 'liuyang' 7 print(name) 8 9 def nulige(): 10 name = 'fahsfha' 11 print(name) 12 13 print(name) 14 nulige() 15 return nulige 16 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 def ask_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 import time 13 time.sleep(0) # time 要先import 14 res = ask_way(person_list) 15 return res 16 """------------------------------------------------------------ 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)函数式编程,函数体内不应该有任何的赋值操作 ,没有变量的定义
二、迭代
y = x.__iter__() 将x 转换为可迭代对象,可以转换为迭代器
y.__next__()/ next(y) 进行迭代每一项元素的输出 ,一行代码输出一个, 如果太多了超出范围 会报错
yield 函数的yield 相当于return 但是return 只能执行一次, yield 可以执行多次
def test(): 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__())) # 结果 # <generator object test at 0x10e240f20> #{1, 2, 3} #1 #2 #3