• 函数


    一.函数:对功能或者动作的封装

      语法:

        def  函数名(形参列表):

          函数名(代码块,return)

        函数名(实参列表)

      形参:在函数声明的位置是形参(变量)

      实参:在函数调到的时候给函数的形参传递的信息(值)

      传参:把实参的交给形参的过程

      返回值:

          return  可终止一个函数的运行

          1.什么都不写,不写return 返回None

          2.写了return 不写值返回None

          3.return有一个值返回一个值

          4.return有多个值返回多个值

      参数:

        形参:

          1.位置参数

          2.默认值参数

          3.动态传参

        实参:

          1.位置参数

          2.关键字参数

          3.混合参数:先位置后关键字

          

    #在Python函数中,传递的参数如果默认有一个为列表(list),那么就要注意了,此处有坑!!

    def
    f(x,li=[]): for i in range(x): li.append(i*i) print(li) print('---1---') f(4) print('---2---') f(5)

    预期结果
    ---1---
    [0, 1, 4, 9]
    ---2---
    [0, 1, 4, 9, 16]

    实际结果
    ---1---
    [0, 1, 4, 9]
    ---2---
    [0, 1, 4, 9, 0, 1, 4, 9, 16]

    当定义函数时,会保存函数中默认参数 list 的值,也就是列表 li=[],在每次调用的时候如果传递了新的列表,则使用传递的列表,但这里没有传递新列表,使用定义函数时保存的默认参数(li=[]),由于列表是可变的数据类型,所以列表在第一次append的时候会在 li=[] 原来的基础上append追加值,所以第二次执行的时候是带着追加的内容进去的,因此会产生以上结果.

        函数动态传参

          1.*args  位置参数动态传参(*args最终得到的结果是元组)

          2.**kwargs  关键字参数动态传参(**kwargs最终得到的结果是字典)

          顺序:位置参数,*args,默认值,**kwargs

          什么都参数都可以接

          

    def func(*args,**kwargs):
            pass

           形参的位置*,**:聚合

           实参的位置*,**:打散

       命名空间

          1.内置名称空间:存放python解释器为我们提供的名字

          2.局部命名空间:在函数中声明的变量会放在局部命名空间

          3.全局命名空间:在py文件中,函数外声明的变量属于全局命名空间

      

        作用域:

          1.全局作用域:内置+全局

          2.局部作用域:局部

         globals()  查看全局中的内容

         locals()  查看当前作用域中的内容

      

        global:在局部访问全局中的内容

        nonlocal:在局部寻找外层函数中离他最近的那个变量 

  • 相关阅读:
    java 分解质因数
    Unix 文件系统读写时权限校验
    find 命令实战巧用
    Linq分组功能
    三种查看SqlServer中数据物理pge页的方法
    一个高度压缩的bit位图字典的实现
    windbg 命令 gchandles
    ManualResetEvent和AutoResetEvent的区别实例
    一些汇编指令(基于8086)
    windbg sos版本不匹配问题解决
  • 原文地址:https://www.cnblogs.com/nianshaoyouwei/p/9489343.html
Copyright © 2020-2023  润新知