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

 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]

  

python基础之全局局部变量及函数参数的更多相关文章

  1. Python 基础之返回值与函数使用与局部变量和全局变量locals() 和 globals()

    一.函数的返回值 return return: 自定义返回值,返回到哪里? 返回到函数的[调用处]1.return 后面可以跟上六个标准数据类型,除此之外,可以跟上 类对象,函数,如果不写return ...

  2. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  3. Day3 Python基础学习——文件操作、函数

    一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...

  4. 第四章:Python基础の快速认识內置函数和操作实战

    本課主題 內置函数介紹和操作实战 装饰器介紹和操作实战 本周作业 內置函数介紹和操作实战 返回Boolean值的內置函数 all( ): 接受一個可以被迭代的對象,如果函数裡所有為真,才會真:有一個是 ...

  5. Python基础学习——文件操作、函数

    一.文件操作 文件操作链接:http://www.cnblogs.com/linhaifeng/articles/5984922.html(更多内容见此链接) 一.对文件操作流程 打开文件,得到文件句 ...

  6. Python基础入门(5)- 函数的定义与使用

    定义函数 函数的定义 函数的分类 函数的创建方法 函数的返回return 函数的定义 将一件事情的步骤封装在一起并得到最终结果 函数名代表了这个函数要做的事情 函数体是实现函数功能的流程 函数可以帮助 ...

  7. python基础学习(十三)函数进阶

    目录 1. 函数参数和返回值的作用 1.1 无参数,无返回值 1.2 无参数,有返回值 1.3 有参数,无返回值 1.4 有参数,有返回值 2. 函数的返回值进阶 例子:显示当前的湿度和温度 例子:交 ...

  8. python基础之常用内置函数

    前言 python有许多内置的函数,它们定义在python的builtins模块,在python的代码中可以直接使用它们. 常用的内置函数 类型转换 int python的整数类型都是int类型的实例 ...

  9. Py修行路 python基础 (十三)匿名函数 与 内置函数

    一.匿名函数  1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号前是 ...

随机推荐

  1. Selenium应用代码(常见封装的方法二)

    滚动窗口: //将滚动条滚到适合的位置 , 方法一 public static void setScroll(WebDriver driver,int height){ try { // String ...

  2. Linux关于压缩和解压缩实例

    在谈到压缩和解压缩,我想说说它们的应用场景,其实它们主要的应用场景是有这么几个方面? (1)备份(几十个数据库每天进行备份,即包含数据又包含脚本,还有其他十分重要的日志文件等等); (2)降低服务器存 ...

  3. Semi-Supervised Dimensionality Reduction

    今天阅读了一篇关于半监督降维的论文,做个总结.这篇论文的全名叫<Semi-Supervised Dimensionality Reduction>(2006),是南大周志华老师的大作. 本 ...

  4. OC报错,after command failed: Directory not empty

    Directory not empty这个错误经常出现,出现的原因也很多,今天主要记录一下楼主自己碰到的这种情况. 全部错误提示: error: couldn't remove ‘路径/app-fzy ...

  5. update会锁表吗?

    update会锁表吗? 两种情况: 1.带索引 2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开启了自动提交事务. ...

  6. OSD仿真_MFC程序01

    Windows系统具有强大的绘图功能,可以用来模拟OSD显示.接下来将设计一个简单的模拟显示终端的程序,用于后续显示功能和菜单系统的开发.说明一下,对于Windows下的MFC编程我不怎么了解,只知道 ...

  7. springboot自定义异常页面

    废话不多,直接开始. 项目目录: 说明:springboot 静态文件放在static目录中,如images中放的图片:templates目录下error中存放的是错误页面,如500.html代表50 ...

  8. Grub4dos boot

    Grub4dos 0.4.6a http://grub4dos.chenall.net/ Ghost11.5 bcdedit bcdedit /create /d "Grub4dos&quo ...

  9. 阿里云centOS7.4上MySql5.6安装

    最近一个项目要部署在阿里云上,为了开发团队方便,我自费买了个ECS,先装个数据库给开发用. 因为之前都是在真机安装,与这次阿里云上的部署比起来,还是有点区别的. Mysql 1 安装mysql版本包 ...

  10. js中定时器使用方法经验总结

    前言,最近在做一个音频播放项目的时候,碰到播放时间精度的问题,捣鼓了几天,最终巧妙的运用定时器去降低了错误发生频率 正题,下面是对定时器的使用总结,如有错误之处,请读者加以纠正. 延迟执行(1次) s ...