zoukankan      html  css  js  c++  java
  • python基础之全局局部变量及函数参数

    1.局部变量和全局变量

      1.1局部变量

      局部变量是在函数内部定义的变量,只能在定义函数的内部使用

      函数执行结束后,函数内部的局部变量会被系统收回

      不同函数可以定义相同名字的局部变量,但是各用个的互不影响

      

      局部变量的生命周期:

          1.所谓生命周期就是变量从被创建到被系统回收的过程

           2.局部变量在函数被调用时才会被创建

           3.函数执行结束后局部变量被系统回收

           4.局部变量在生命周期内,可以用来存储函数内部临时使用到的数据

        

      1.2全局变量

      全局变量是在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量

      注意:函数执行时,在需要处理变量时会:

      1.首先查找 函数内部 是否存在 指定名称的局部变量,如果有,直接使用

      2.如果没有,查找 函数外部 是否存在 指定名称的全局变量,如果有,直接使用

      3.如果还有没, 程序报错!

      

      2)函数不能直接修改全局变量的引用

      在函数内部可以通过全局变量的引用获取对应的数据,但是不允许直接修改全局变量的引用 

      

      

       3)在函数内部修改全局变量的值

       如果在函数内部需要修改全局变量的值,需要使用关键字 global 进行声明

       

    2.函数的参数

    2.1 在函数内部,针对形参使用赋值语句,并不会影响到调用函数时传递的实参变量的值

    无论传递的参数是可变还是不可变,只要针对参数使用赋值语句,只会在函数内部修改局部变量的引用,不会影响到外部变量的引用

    >>> def demo(num, list):
    ...     print('函数内部代码')
            #在函数内部,针对参数使用赋值语句,不会修改到外部的实参变量
    ...     num = 100
    ...     list = [1,2,3]
    ...     print(num)
    ...     print(list)
    ...     print('函数代码完成')
    ...
    >>> gl_num = 99
    >>> gl_list = [4,5,6]
    >>> demo(gl_num,gl_list)
    函数内部代码
    100
    [1, 2, 3]
    函数代码完成
    >>> print(gl_num)
    99
    >>> print(gl_list)
    [4, 5, 6]

    2.2 如果传递的参数是可变类型,在函数内部,通过方法修改了数据的内容,同样会影响到外部的数据

     1 def demo(num_list):
     2     # 使用方法修改列表的内容
     3     num_list.append(9)
     4     print('函数内部结果:', num_list)
     5 
     6 
     7 gl_list = [1, 2, 3]
     8 demo(gl_list)
     9 print('函数外部结果:', gl_list)
    10 ----------------------------------------------
    11 函数内部结果: [1, 2, 3, 9]
    12 函数外部结果: [1, 2, 3, 9]

    3.扩展  列表使用 += 运算符

     1 def demo(num, num_list):
     2     print("函数开始")
     3     # num = num + num
     4     num += num
     5 
     6     # 列表变量使用 += 不会像数字一样做相加再赋值操作
     7     # 本质是在调用列表的 extend 方法
     8     # num_list.extend(num_list)
     9     num_list += num_list
    10     print(num)
    11     print(num_list)
    12     print("函数结束")
    13 
    14 
    15 gl_num = 10
    16 gl_list = [1, 2, 3]
    17 demo(gl_num, gl_list)
    18 print(gl_num)
    19 print(gl_list)
    20 --------------------------------------------------------------
    21 函数开始
    22 20
    23 [1, 2, 3, 1, 2, 3]
    24 函数结束
    25 10
    26 [1, 2, 3, 1, 2, 3]

       

      

  • 相关阅读:
    【2020NOI.AC省选模拟#5】C. 光滑序列
    【2020NOI.AC省选模拟#2】A. 旋转
    【2020NOI.AC省选模拟#1】B. Trie
    Redis 配置
    Redis 删除策略
    Redis 事务
    Redis 持久化
    Redis 通用指令
    Redis 数据类型实战案例
    Redis sorted_set
  • 原文地址:https://www.cnblogs.com/HJkoma/p/10348913.html
Copyright © 2011-2022 走看看