zoukankan      html  css  js  c++  java
  • 第十一章

    day11

    第十一章

    1、函数的第一类对象及使用

    1. 函数名可以当做值,赋值给变量:

      def func():
          print(1)
      print(func)  #函数的内存的地址
      a = (func)
      print(a)
      a()
      
    2. 函数名可以当做容器中的元素

      def login():
          print("这是登录")
      def register():
          print("这是注册")
      def index():
          print("这是主页")
          
      msg = """
      1 登录
      2 注册
      3 主页
      """
      choose = input(msg)   # 1
      if choose.isdecimal():   
          if choose == "1":    
              login()   
          elif choose == "2":      
              register()   
          elif choose == "3":   
              index()
      

      改良:

      def login(): 
          print("这是登录")
      def register():  
          print("这是注册")
      def index():  
          print("这是博客园的主页")
      dic = {"1":login,"2":register,"3":index}
      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
      a = func()
      a()
      func()()
      

      练习:

      def f1():
          def a():
              def f3():
                  print(333)
                  return [f3, a, f1]
              print(11)
              return f3()
          ret = a()
          return c(ret)
      def aa(b):
          print(111)
          return b
      print(f1(aa))
      

    2、格式化 f-string

    1. 任意表达式

      f"姓名:{name} 年龄: {}"
      f"姓名:{"cai"}"
      f"年龄:{34}"
      
    2. 可以插入表达式

      print(f"{3 if 3>2 else 2}")
      
    3. 多行f

      speaker = f'Hi {name}.'   
      		 f'You are {age} years old.'      
      		 f'You are a {ajd} guy!'
      
    4. 其他细节

      # ! , : { } ;这些标点不能出现在{} 这里面。
      # print(f'{;12}')  # 报错
      # 所以使用lambda 表达式会出现一些问题。
      # 解决方式:可将lambda嵌套在圆括号里面解决此问
      

    3、迭代器

    1. 可迭代对象:

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

        我们可以通过dir()方法去判断一个对象具有什么方法,dir()会返回一个列表,这个列表中含有该对象的以字符串的形式的所有方法名

        lst.__iter__()
        dict.__iter__()
        
    2. 迭代器:工具

      1. 具有_ iter _() 和 _ next _ () l两个方法的才是迭代器

        iter() 和 _ iter _ () 是一样的 推荐使用iter()

        lst = [1,2,3,4]
        l = lst.__iter__()  # 将可迭代对象转换成迭代
        
        l.__iter__() # 迭代器指定__iter__()还是原来的迭代
        print(l.__next__())
        print(l.__next__())
        
      2. 迭代器基于上一次停留的位置,进行取值

      3. 迭代器的优点:

        惰性机制:节省空间

      4. 迭代器的缺点:

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

        一次性,用完就没有了

        不能逆行(后退)

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

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

    5. for 循环的本质:(重点)

      while True:
          try:
              print(l.__next__())
          exxept StopIteration:
              break
              
      
    6. python2 和 python3 中的区别

      pyhton3:   
          iter()和 __iter__() 都有  
          next()和__next__()都有
      python2:  
          iter()   
          next()
      

      python 三大器

      迭代器

      生成器

      装饰器

  • 相关阅读:
    智慧光伏能源-园区光伏发电能源管控可视化
    无人值守,智能变电站可视化管控系统
    数字孪生,开启三维智慧园区管理新篇章
    智慧城市大数据运营中心 IOC 之 Web GIS 地图应用
    三维可视化数据中心机房监控管理系统
    打造绿色城市,数字孪生天然气站 3D 可视化
    绿色物流-智慧仓储监控管理 3D 可视化系统
    打造综合性智慧城市之朔州开发区 3D 可视化
    绿色城市之地下综合管廊3D可视化平台
    工业绿色环保发展:风力发电场管理监测可视化系统
  • 原文地址:https://www.cnblogs.com/yuancw/p/11503752.html
Copyright © 2011-2022 走看看