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 如果传递的参数是可变类型,在函数内部,通过方法修改了数据的内容,同样会影响到外部的数据
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基础之全局局部变量及函数参数的更多相关文章
- Python 基础之返回值与函数使用与局部变量和全局变量locals() 和 globals()
一.函数的返回值 return return: 自定义返回值,返回到哪里? 返回到函数的[调用处]1.return 后面可以跟上六个标准数据类型,除此之外,可以跟上 类对象,函数,如果不写return ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
- Day3 Python基础学习——文件操作、函数
一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...
- 第四章:Python基础の快速认识內置函数和操作实战
本課主題 內置函数介紹和操作实战 装饰器介紹和操作实战 本周作业 內置函数介紹和操作实战 返回Boolean值的內置函数 all( ): 接受一個可以被迭代的對象,如果函数裡所有為真,才會真:有一個是 ...
- Python基础学习——文件操作、函数
一.文件操作 文件操作链接:http://www.cnblogs.com/linhaifeng/articles/5984922.html(更多内容见此链接) 一.对文件操作流程 打开文件,得到文件句 ...
- Python基础入门(5)- 函数的定义与使用
定义函数 函数的定义 函数的分类 函数的创建方法 函数的返回return 函数的定义 将一件事情的步骤封装在一起并得到最终结果 函数名代表了这个函数要做的事情 函数体是实现函数功能的流程 函数可以帮助 ...
- python基础学习(十三)函数进阶
目录 1. 函数参数和返回值的作用 1.1 无参数,无返回值 1.2 无参数,有返回值 1.3 有参数,无返回值 1.4 有参数,有返回值 2. 函数的返回值进阶 例子:显示当前的湿度和温度 例子:交 ...
- python基础之常用内置函数
前言 python有许多内置的函数,它们定义在python的builtins模块,在python的代码中可以直接使用它们. 常用的内置函数 类型转换 int python的整数类型都是int类型的实例 ...
- Py修行路 python基础 (十三)匿名函数 与 内置函数
一.匿名函数 1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号前是 ...
随机推荐
- ASP.NET Web API编程——构建api帮助文档
1 概要 创建ASP.NET Web Api 时模板自带Help Pages框架. 2 问题 1)使用VS创建Web Api项目时,模板将Help Pages框架自动集成到其中,使得Web Api项目 ...
- 以EF形式操作mysql数据库
1.引入Nuget包: 2.书写EF操作上下文 public class MySqlContext:DbContext { protected override void OnConfiguring( ...
- django, CentOS7+nginx(apache)+mod_wsgi+Python+Django
Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS ...
- 插入排序_c++
插入排序_c++ GitHub 文解 插入排序的核心思想是针对于 N 个元素进行排序时,共进行 K = (N-1) 次排序,第 M 次排序时将第 M + 1 个元素插入前 M 个元素中进行排序. 图解 ...
- C++读取字符串数据的两种方式
C++读取字符串数据的两种方式 对于同样的样例输入: ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Ride ...
- shell习题第2题:统计ip访问量
[题目要求] 有日志1.log,部分内容如下: 112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com “/seccode. ...
- 10.安装使用jenkins及其插件
持续集成 1.安装jenkins 安装依赖 [root@git ~]# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel rpm包下载: ...
- 02JavaScript用法
前言: 介绍一下javascript的最基础语法规范和用法. HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 ...
- npm安装包时 --save 和 --save-dev 的区别
以npm 安装 vue为例 1.npm install vue: 会把vue包安装到node_modules目录中: 不会修改package.json文件: 之后运行npm install命令时,不会 ...
- 利用clear清除浮动的一些问题
下面这段代码是用来清除浮动带来的高度塌陷问题 .clearfix:before { content: "."; display: block; height: 0; clear: ...