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. nginx/apache连接数梳理

    统计连接数,使用netstat命令或ss命令都可以1)统计连接数(80端口) [root@wang ~]# netstat -nat|grep -i "|wc -l 或者:netstat - ...

  2. 对于dequeueReusableCellWithIdentifier:的理解

      Table Data Source Methods中的一个必要实现的方法tableView: cellForRowAtIndexPath: 中经常会包含一段代码: static NSString  ...

  3. Linux 文件压缩与解压相关

    tar [-cxtzjvfpPN] 文件与目录 .... 参数:-c :建立一个压缩文件的参数指令-x :解开一个压缩文件的参数指令 -t :查看压缩文件里面的文件 特别注意: c/x/t 同时只能存 ...

  4. 【Linux资源管理】使用sar进行性能分析

    sar可用于监控Linux系统性能,帮助我们分析性能瓶颈.sar工具的使用方式为”sar [选项] intervar [count]”,其中interval为统计信息采样时间,count为采样次数. ...

  5. mysql的InnoDB 数据库引擎TableSpace Exists 问题

    Mysql数据库报错: ERROR 1813 (HY000): Tablespace '`coll`.`t1`' exists. 原因:在使用InnoDB引擎的数据库中,所有已经存在的表都使在使用In ...

  6. IF()判断变量是否为空

    一 变量是字符串,判断为空 第一种:strs == null string strs = "test"; if (strs == null) { //这里是为空的字符串,返回你指定 ...

  7. iOS视频倒放

    iOS视频倒放 视频的倒放就是视频从后往前播放,这个只适应于视频图像,对声音来说倒放只是噪音,没什么意义,所以倒放的时候声音都是去除的. 倒放实现 一般对H264编码的视频进行解码,都是从头至尾进行的 ...

  8. Jquery与js简单对比

    //Javascript window.onload=function () { var oBtn=document.getElementById('btn1'); oBtn.onclick=func ...

  9. vector,set常见方法

    vector push_back() 压入元素 size()返回元素个数 swap()交换两个向量的位置 erase()任意位置删除元素 reverse(a.begin(),a.end())翻转 se ...

  10. Mybartis逆向工程

    Mybartis逆向工程 0.创建工程项目,切记莫用中文,亲测在运行时报错 1.Pom文件,使用mybatis-generator插件 <?xml version="1.0" ...