zoukankan      html  css  js  c++  java
  • 函数进阶

    1. 今日内容大纲

      1. 如何在工作中让别人看出你是自学的?

        • 第一天环境安装等等,小白各种问。

        • 项目需求不清晰,也不敢问。

      2. 形参角度:

        • 万能参数。

        • *的魔性用法。

        • 仅限关键字参数(了解)。

        • 形参的最终顺序。

      3. 名称空间。

        1. 全局名称空间,局部........

        2. 加载顺序,取值顺序。

        3. 作用域。

      4. 函数的嵌套(高阶函数)。

      5. 内置函数 globals locals

      6. 关键字:nonlocal global。

    2. 昨日内容回顾作业讲解

      • 函数是以功能为导向,减少重复代码,提高代码的可读性。

        1  def func():
        2      函数体
         
      • 函数的调用:func()

        1  func()
        2  func()
        3  func()
      • 函数的返回值 return

        • 终止函数。

        • return 单个值:

        • return 多个值:(1,2,3,'alex')

      • 函数的参数:

        • 实参角度:位置参数,关键字参数,混合参数。

        • 形参角度:位置参数,默认参数。

         

    3. 今日内容

      1. 如何在工作中不让别人看出你是培训出来的?

        • 第一天环境安装等等,小白各种问。

        • 项目需求不清晰,也不敢问。

        • 我们6个月一定要学会自主学习,自己解决问题的能力。

      2. 形参角度:

        • 万能参数。

        • *的魔性用法。

           1  # 万能参数。
           2  # def eat(a,b,c,d):
           3  #     print('我请你吃:%s,%s,%s,%s' %(a,b,c,d))
           4  #
           5  # eat('蒸羊羔', '蒸熊掌', '蒸鹿邑','烧花鸭')
           6  7  # def eat(a,b,c,d,e,f):
           8  #     print('我请你吃:%s,%s,%s,%s,%s,%s' %(a,b,c,d,e,f))
           9  #
          10  # eat('蒸羊羔', '蒸熊掌', '蒸鹿邑','烧花鸭','烧雏鸡','烧子鹅')
          11 12  # 急需要一种形参,可以接受所有的实参。#万能参数。
          13  # 万能参数: *args, 约定俗称:args,
          14  # 函数定义时,*代表聚合。 他将所有的位置参数聚合成一个元组,赋值给了 args。
          15 16  # def eat(*args):
          17  #     print(args)
          18  #     print('我请你吃:%s,%s,%s,%s,%s,%s' % args)
          19  #
          20  # eat('蒸羊羔', '蒸熊掌', '蒸鹿邑','烧花鸭','烧雏鸡','烧子鹅')
          21 22  # 写一个函数:计算你传入函数的所有的数字的和。
          23  # def func(*args):
          24  #     count = 0
          25  #     for i in args:
          26  #         count += i
          27  #     return count
          28  # print(func(1,2,3,4,5,6,7))
          29 30  # tu1 = (1, 2, 3, 4, 5, 6, 7)
          31  # count = 0
          32  # for i in tu1:
          33  #     count += i
          34  # print(count)
          35 36  # **kwargs
          37  # 函数的定义时: ** 将所有的关键字参数聚合到一个字典中,将这个字典赋值给了kwargs.
          38  # def func(**kwargs):
          39  #     print(kwargs)
          40  # func(name='alex',age=73,sex='laddyboy')
          41 42  # 万能参数:*args, **kwargs,
          43  # def func(*args,**kwargs):
          44  #     print(args)
          45  #     print(kwargs)
          46  # func()
          47  # print()
          48 49  # * **在函数的调用时,*代表打散。
          50  def func(*args,**kwargs):
          51      print(args) # (1,2,3,22,33)
          52      print(kwargs)
          53 54  # func(*[1,2,3],*[22,33])  # func(1,2,3,22,33)
          55  # func(*'fjskdfsa',*'fkjdsal')  # func(1,2,3,22,33)
          56  func(**{'name': '太白'},**{'age': 18})  #func(name='太白',age='18')
          57

           

        • 仅限关键字参数(了解)。

        • 形参的最终顺序。

           1  # 形参角度的参数的顺序
           2  # *args 的位置?
           3  # def func(*args,a,b,sex= ''):
           4  #     print(a,b)
           5  # func(1,2,3,4)
           6  # args得到实参的前提,sex必须被覆盖了。
           7  # def func(a,b,sex= '',*args,):
           8  #     print(a,b)
           9  #     print(sex)
          10  #     print(args)
          11  # func(1,2,3,4,5,6,7,)
          12 13  # def func(a,b,*args,sex= ''):
          14  #     print(a,b)
          15  #     print(sex)
          16  #     print(args)
          17  # func(1,2,3,4,5,6,7,sex='')
          18 19  # **kwargs 位置?
          20  def func(a,b,*args,sex= '',**kwargs,):
          21      print(a,b)
          22      print(sex)
          23      print(args)
          24      print(kwargs)
          25  # func(1,2,3,4,5,6,7,sex='',name='Alex',age=80)
          26 27  # 形参角度第四个参数:仅限关键字参数 (了解)
          28 29  def func(a,b,*args,sex= '',c,**kwargs,):
          30      print(a,b)
          31      print(sex)
          32      print(args)
          33      print(c)
          34      print(kwargs)
          35  # func(1,2,3,4,5,6,7,sex='',name='Alex',age=80,c='666')
          36 37  # 形参角度最终的顺序:位置参数,*args,默认参数,仅限关键字参数,**kwargs
          38  
      3. 名称空间。

        1. 全局名称空间,局部........

         

         

        局部名称空间(临时名称空间):

         

         

         

        1. 加载顺序,取值顺序。

           

           1  #名称空间;命名空间。
           2  3  # a = 1
           4  # b = 2
           5  # def func():
           6  #     f = 5
           7  #     print(f)
           8  # c = 3
           9  # func()
          10 11  # 内置名称空间:python源码给你提供的一些内置的函数,print input
          12  # print(666)
          13  # python分为三个空间:
          14      # 内置名称空间(builtins.py)
          15      # 全局名称空间(当前py文件)
          16      # 局部名称空间(函数,函数执行时才开辟)
          17 18  # 加载顺序:
          19  # 内置名称空间 ---> 全局名称空间  ----> 局部名称空间(函数执行时)
          20  # def func():
          21  #     pass
          22  # func()
          23  # a = 5
          24  # print(666)
          25  python
           
           1 # 加载顺序:
           2  # 内置名称空间 ---> 全局名称空间  ----> 局部名称空间(函数执行时)
           3  # def func():
           4  #     pass
           5  # func()
           6  # a = 5
           7  # print(666)
           8  9  # 取值顺序(就近原则) 单向不可逆
          10  # LEGB原则
          11  # input = '太白金星'
          12  def func():
          13      # input = 'alex'
          14      print(input)
          15  # func()
          16 17  # (从局部找时)局部名称空间  ---> 全局名称空间  --->  内置名称名称空间
          18 19 20  # input = '太白金星'
          21  # def func():
          22  #     input = 'alex'
          23  #
          24  # func()
          25  # print(input)

           

        2. 作用域。

           1  # 作用域:
           2  # 两个作用域:
           3      # 全局作用域 :内置名称空间 全局名称空间
           4      # 局部作用域:局部名称空间
           5  6  #  局部作用域可以引用全局作用域的变量
           7  # date = '周五'
           8  # def func():
           9  #     a = 666
          10  #     print(date)
          11  # print(a)
          12  # func()
          13  # print(a)
          14 15  # 局部作用域不能改变全局变量。
          16  # count = 1
          17  # # def func():
          18  # #     count += 2
          19  # #     print(count)
          20  # # func()  # local variable 'count' referenced before assignment
          21  # 局部作用域不能改变全局作用域的变量,当python解释器读取到局部作用域时,发现了你对一个变量进行修改的操作,
          22  # 解释器会认为你在局部已经定义过这个局部变量了,他就从局部找这个局部变量,报错了。
          23 24  # 使用可以,不能改变
          25  # def func():
          26  #     count = 1
          27  #     def inner():
          28  #         print(count)
          29  #     inner()
          30  # func()
          31 32  def func():
          33      count = 1
          34      def inner():
          35          count += 1
          36          print(count)
          37      inner()
          38  func()
          39

           

      4. 函数的嵌套(高阶函数)。

         
         1  # 例1:
         2  def func1():
         3      print('in func1')
         4      print(3)
         5  6  def func2():
         7      print('in func2')
         8      print(4)
         9 10  func1()
        11  print(1)
        12  func2()
        13  print(2)
        14  # in func1 3 1 in func2 4 2
        15 16 17 18  # 例2:
        19  def func1():
        20      print('in func1')
        21      print(3)
        22 23  def func2():
        24      print('in func2')
        25      func1()
        26      print(4)
        27 28  print(1)
        29  func2()
        30  print(2)
        31 32 33  # 例3:
        34  def fun2():
        35      print(2)
        36 37      def fun3():
        38          print(6)
        39 40      print(4)
        41      fun3()
        42      print(8)
        43 44  print(3)
        45  fun2()
        46  print(5)
        47 48 49  # glbals() locals()
         

         

      5. 内置函数 globals locals

         1 """
         2 本文件:研究内置函数:globals locals
         3 """
         4 a = 1
         5 b = 2
         6 def func():
         7     name = 'alex'
         8     age = 73
         9     print(globals())  # 返回的是字典:字典里面的键值对:全局作用域的所有内容。
        10     print(locals())  # 返回的是字典:字典里面的键值对:当前作用域的所有的内容。
        11 # print(globals())  # 返回的是字典:字典里面的键值对:全局作用域的所有内容。
        12 # print(locals())  # # 返回的是字典:字典里面的键值对:当前作用域的所有的内容。
        13 func()

         

      6. 关键字:nonlocal global。

         

    4. 今日总结

      1. 参数:万能参数,仅限关键字参数(了解),参数的顺序,*的魔性用法:聚合,打散。

      2. 名称空间,作用域,取值顺序,加载顺序。

      3. globals locals

      4. 高阶函数:执行顺序。

      5. 以上全部都是重点。  

  • 相关阅读:
    springboot:springboot初识(相关概念、新建项目)
    ssm项目无法加载静态资源
    js:初识(相关概念、js代码的书写位置、注释方式、输入输出语句)
    lucene:索引维护(删除、更新、查询)
    数据库连接池:Durid(执行流程、工具类)
    redis:HyperLogLog&发布订阅(HyperLogLog的概念和命令、redis的发布订阅)
    redis:zset(赋值、取值、删除、修改分数)
    css:css3新特性(过渡)
    css:css3新特性(盒子模型的box-sizing属性、图片模糊处理、calc函数)
    css:css3新特性(属性选择器、结构伪类选择器)
  • 原文地址:https://www.cnblogs.com/zhangxiangning/p/10215872.html
Copyright © 2011-2022 走看看