Python学习第三天~迭代、函数、

迭代---迭代协议---__next__():能够获取下一个元素

迭代工具 for....、推导...、map...

迭代器对象已经内部实现了__next()__方法,也可以使用全局函数next()

可迭代对象中并没有自己实现迭代器,需要我们手动实现,手动实现的方法就是调用   iter(想要被迭代的对象)用于生成迭代器

__iter__()

内置可迭代对象

range()

map()

zip()

定义函数

def read_book():

    print('拿到一本书')

    print('看书')

调用函数

read_book()

函数作用:

  1. 最大化代码重用
  2. 最小化代码冗余
  3. 过程分解

定义: 

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)

猜你喜欢

转载自blog.csdn.net/crazyhulu/article/details/86620715
今日推荐