• python基础语法_学习笔记(四) _函数


    接着上次得笔记,今天还是继续函数的相关学习,局部变量、全局变量、默认值参数、参数组

    关键字、 深拷贝、浅拷贝、内置函数等

    一、局部变量和全局变量

      全局变量与局部变量两者的本质区别就是在于作用域

      1.局部变量: 只在函数内部生效,这个函数就是这个变量的作用域,

      2.全局变量:作用域是整个程序

           

      上图中的num是全部变量,num1 是局部变量

      3.关键字 global

        如果真想要在函数体内修改全局变量的值,就是要使用global关键字

          

        运行结果是:

          

       注:如果全局标量没有定义,而只是在函数内部用global 关键字定义变量,在函数外部调用,会报错,提示该函数没有定义

          

          运行结果如下:

            

    二、函数参数

        参数能让你的函数更灵活,还可以根据调用时传参的不同来决定函数内部的执行流程,函数的参数是分形参实参

        1.形参变量:

          只有在被调用时,才分配内存单元,在调用结束时,即可释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调函数后,则不能再使用该形参变量

        2.实参:

          可以时常量、变量、表达式、函数等,无论实参是何种类型的量,再进行函数调用时,他们必须有确定的值,以便把这些值传送给形参,因此应先预先用赋值、输入等办法使参数获得确定的值

        

        3.函数形参中* 号的作用

          可变参数,一个* 号传参,返回的是一个元组

         

        运行结果:

         

        4.函数形参中** 号的作用

          可变参数,函数的形参中有两个** 号,函数返回的是一个字典

         

        运行结果:

           

        5.参数* 和** 联合用法,*是不需要关键字传参的,所以* 参数必须再 ** 参数前面,而且只有用关键字传参数了,就不能用没有关键字的参数传参。如下图:

          

        6.调用的时候用*号,代表的是解包(解的是字符串、元组、列表等有序的数据类型)

           

         运行结果:

           

        7.指定传参的类型,格式如下:

          

          :str 是指定要传参数的类型,但是如果不按照指定的类型传参数,也是可以的,不会报错

     三、递归

        递归 ,函数自己调用自己 最深999次,y也是循环的一种,但是能用循环,别用递归

        

        运行结果:

        

    四、python 中的复制,深拷贝和浅拷贝

        在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用

        深拷贝和浅拷贝的区别: 浅拷贝不会开辟新的内存地址,深拷贝会新开劈新的内存地址

        1.浅拷贝:浅拷贝是在另一块地址中创建一个新的变量或容器,但是容器内的元素的地址均是源对象的元素的地址的拷贝。也就是说新的容器中指向了旧的元素

        2.深拷贝:深拷贝是在另一块地址中创建一个新的变量或容器,同时容器内的元素的地址也是新开辟的,仅仅是值相同而已,是完全的副本(另开辟内存)

          下图中有两中浅拷贝和深拷贝的方式:

           

          

          l5 = copy.copy(li) # 如果是一层的话,算深拷贝,但是数据中又加一层,就不行,所以也算浅拷贝

       3.globals()  打印该模块中所有的变量

       4. locals()  打印该方法中所有的变量

          

          

  • 相关阅读:
    [对android程序作代码混淆]
    用smali实现Android apk的简单汉化
    防止java反编译的一些常用方法
    http抓包工具推荐WSockExpert/httpwatch/HttpAnalyzer/DebugBar
    JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apache/IIS的整合)
    22、Secondary Tiles
    21、磁贴和磁贴通知(tile)(下)
    19、Context Menu
    代码管理工具
    20、磁贴和磁贴通知(tile)(上)
  • 原文地址:https://www.cnblogs.com/coldMoon0915/p/10763870.html
Copyright © 2020-2023  润新知