基于python 将列表作为参数传入函数时的测试与理解


Posted in Python onJune 05, 2020

将一个列表传入函数后,会对这个列表本身产生什么改变?

这就是本文主要考察的内容。

list = [1,2,3,4,5,6,7]
word = list.pop(0)
print(word)
print(list)
# 输出结果理所当然地为:
# 1
# [2, 3, 4, 5, 6, 7]
#
def a(temp):
  b = temp.pop(0)
  print(b)
  print(temp)

a(list)
# 输出结果为:
# 2
# [3, 4, 5, 6, 7]
# 此处,传给temp时,list是[2,3,...7],但pop后,原list
# 有什么变化呢?试试下面的代码
print(list)
# 输出结果为:
# [3, 4, 5, 6, 7]
# 可见,执行temp.pop函数后,list原本的值也受到了改变。
# 所以,一个数组(或者叫列表)传给temp时,传入的是指针
# 地址,而不是副本。下面的例子更加说明了这个问题

print(list[0])

def b(temp2):
  temp2[0] = temp2[0] + 10
  # 将temp2这个列表的第一个元素,作+10的运算
b(list)
print(list[0])
# 最终输出:
# 3
# 13
# list在b函数内的经过temp2运作后,改变的是list本身的值
# 所以,将某个列表(比如这里的list)作为参数传入某个函数
# 其传递的是list所在的真实地址。所有修改也是对list直接
# 的修改。

补充知识:python 字典怎样当作参数传入函数里,以及在函数里的一些遍历。变量的作用域。

字典当作参数以后的一些用法:

dic={'abc':123,'aaa':333,'wer':334}
def text_dic(**dd):
  for a,b in dd.items():# a 代表键 ,b代表值
    print(a,b)
text_dic(**dic)

#输出字典中的键:
def text_dic(**dd):
   for key in text_dic:#key为键
 print(key)
text_dic(**dic)

#输出字典中键的值:
def text_dic(**dd):
   for value in text_dic.keys():#value为值
 print(value)
text_dic(**dic)

变量的作用域:

全局变量:

全局变量的作用域当然是全局的随时可调用,他要是和局部变量冲突时,局部变量优先

局部变量:

在python中局部变量不可以改变全局变量。

当然如果你想在局部改全局变量的话,你可以先声明这个变量是全局变量globle,然后在进行更改

以上这篇基于python 将列表作为参数传入函数时的测试与理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python mysqldb连接数据库
Mar 16 Python
python执行外部程序的常用方法小结
Mar 21 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
Python生成器常见问题及解决方案
Mar 21 Python
python exit出错原因整理
Aug 31 Python
python 写一个文件分发小程序
Dec 05 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 #Python
Python检测端口IP字符串是否合法
Jun 05 #Python
Python如何基于Tesseract实现识别文字功能
Jun 05 #Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 #Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 #Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 #Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 #Python
You might like
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
让table变成exls的示例代码
2014/03/24 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
js实现放大镜特效
2017/05/18 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python中用sleep()方法操作时间的教程
2015/05/22 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
JVM是一个编译程序还是解释程序
2012/09/11 面试题
应届生求职自荐信范文
2014/04/07 职场文书
企业人事任命书
2014/06/05 职场文书
体现团队精神的口号
2014/06/06 职场文书
委托书怎样写
2014/08/30 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
个人欠条范本
2015/07/03 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
浅谈Redis中的RDB快照
2021/06/29 Redis
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android