python_0基础开始_day11

第十一节

一,函数名的第一类对象

  1. 函数名当作值,赋值给变量

    • print(函数名) 查看看书的内存地址

  2. 函数名可以当作容器中的元素

    lis = []
    dic = {}
    def func():
       print(11)
    def foo():
       print(22)
    lst.append(func)
    lst.append(foo)
    print(lst)# 输出后的是内存地址

    msg = """
    1 登录
    2 注册
    3 主页
    """
    choose = input(msg)   # 1
    if choose.isdecimal():
       if dic.get(choose):
           dic[choose]()
       else:
           print("请正确输入!")
    # 用字典存储大量数据,通过字符串显示每个数字代表的功能,在字典中找到并读取该值
  3. 函数名可以当作函数的参数

    def func(a):
       print(111)
       a()

    def foo():
       print(222)
    func(foo)
  4. 函数名可以当作函数的返回值

    def func():
       def foo():
           print(111)
       return foo

    func()()  # foo()

二,f-strings字符串格式化

    • f"{变量名}"

    • F"{变量名}"

    • f"""{变量名}"""

    • f"{input()}"

    • f"{3 if 3 > 2 else 2}"

    • f"{list[索引]}"

    • f"{dict[keys]}"

三,迭代器

迭代器是基于上一次停留的位置,进行取值

  1. 可迭代对象

    • 具有iter()方法就是可迭代对象

    list,tuple,str,srt,dict # 取值方式直接看
    # 只有具有.__iter__()方法就是一个可迭代对象
  2. 迭代器

    • 具有.iter()和.next()两个方法才是迭代器

    • 迭代器的优点:

      • 惰性机制——节省空间。

    • 迭代器的缺点:

      • 不能直接查看值,迭代器看到的是一个迭代器的内存地址

      • 一次性,用完就没了

      • 不能逆行(后退)

    • 空间换时间:容器存储大量的元素,取值时间短,但是容器占用空间比较大

    • 时间换空间:迭代器就是节省了空间,但是取值时间较长。

    • Python2和3的区别:

      • Python3:

        • iter()和iter()都有;next()和next()都有

      • Python2:

        • 只有__iter__(),next()

    # python3:iter()和__iter__()都有;next()和__next__()都有
    # python2:只有iter(),next()

    # 具有.__iter__()和.__next__()两个方法才是迭代器
    lis = [1,2,3,4,5,6]
    l = lis.__iter__()# 将可迭代对象转换成迭代器
    l = iter(lis) # iter 和__iter__是一样的
    l.__iter__()#迭代器指定__iter__()还是原来的迭代器

    # for 循环的本质:
    while True
    try:
           print(l.__next__())
       except StopIteration:
           break

     

  3.  

你可能感兴趣的:(python_0基础开始_day11)