迭代---迭代协议---__next__():能够获取下一个元素
迭代工具 for....、推导...、map...
迭代器对象已经内部实现了__next()__方法,也可以使用全局函数next()
可迭代对象中并没有自己实现迭代器,需要我们手动实现,手动实现的方法就是调用 iter(想要被迭代的对象)用于生成迭代器
__iter__()
内置可迭代对象
range()
map()
zip()
定义函数
def read_book():
print('拿到一本书')
print('看书')
调用函数
read_book()
函数作用:
- 最大化代码重用
- 最小化代码冗余
- 过程分解
定义:
def 方法名(参数1....):函数体
调用:
函数名(实际参数)
变量作用域:
- Built-in 内置
- Global 全局
- Encliusure 封装
- Local 本地
这四个的顺序是:local --->enclousure---->global----->built-in 从最低层到最高层的一个顺序
参数传递
- 不可变类型:传递副本给函数,函数内操作不影响原始值
- 可变类型:传递地址引用,函数内部操作可能会影响原始值
不可变类型:int型、浮点型、字符串型、tuple型、都是不可变型,都是传递副本,
可变类型:都是传递的地址引用,函数类操作会影响该原始值
def avg(*scores):
return sum(sorces)/len(scores)
求scorces平均数,*代表若干个参数,一个*代表以一个元祖形式传递数据
def display(**employee)
print(employee)
d={'name':}
display{name='Tom',age=22,job='dev'}
**代表字典表键值对,使用字典表传值
Lambda表达式
定义匿名函数
基本格式:lambda 参数1,.... : 函数
f = lambda name: print(name)
f('tom')
f1 = lambda x,y: x+y
print(f1(5,3))
f 是定一个无返回值的, f1是定义一个有返回值的,f1中不需要写return就能返回
函数与lambda结合使用
def hello_chinese(name):
print("你好:",name)
def hello_english(name):
print("hello:",name)
while True:
name = input('请输入您的姓名:\n')
if name == 'stop':
break
language =input('请选择语言:\n c = > 中文版\n e => 英文版\n j => 日文版\n')
if language =='c':
hello_chinese(name)
elif language =='e':
hello_english(name)
elif language =='j':
(lambda name: print('么西么西',name))(name)