基于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基础教程之lambda表达式使用方法
Feb 12 Python
python开发之tkinter实现图形随鼠标移动的方法
Nov 11 Python
python+opencv实现动态物体识别
Jan 09 Python
python 日志增量抓取实现方法
Apr 28 Python
python中scikit-learn机器代码实例
Aug 05 Python
python requests爬取高德地图数据的实例
Nov 10 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
Python短信轰炸的代码
Mar 25 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 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
利用PHP制作简单的内容采集器的原理分析
2008/10/01 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python面向对象之继承代码详解
2018/01/29 Python
Python3标准库总结
2019/02/19 Python
python SocketServer源码深入解读
2019/09/17 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
放飞理想演讲稿
2014/09/09 职场文书
干部个人考察材料
2014/12/24 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
golang中的空slice案例
2021/04/27 Golang
Python中re模块的元字符使用小结
2022/04/07 Python
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL