python基础之全局局部变量及函数参数

1.局部变量和全局变量

  1.1局部变量

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

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

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

  

  局部变量的生命周期:

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

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

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

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

    python基础之全局局部变量及函数参数

  1.2全局变量

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

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

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

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

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

  python基础之全局局部变量及函数参数

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

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

  python基础之全局局部变量及函数参数

  

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

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

   python基础之全局局部变量及函数参数

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 如果传递的参数是可变类型,在函数内部,通过方法修改了数据的内容,同样会影响到外部的数据

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

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

 def demo(num, num_list):
print("函数开始")
# num = num + num
num += num # 列表变量使用 += 不会像数字一样做相加再赋值操作
# 本质是在调用列表的 extend 方法
# num_list.extend(num_list)
num_list += num_list
print(num)
print(num_list)
print("函数结束") gl_num = 10
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)
--------------------------------------------------------------
函数开始
20
[1, 2, 3, 1, 2, 3]
函数结束
10
[1, 2, 3, 1, 2, 3]

  

上一篇:Charles 的界面详解


下一篇:OpenStack配置串口显示虚机界面