基于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错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
Python求两个list的差集、交集与并集的方法
Nov 01 Python
Python简单日志处理类分享
Feb 14 Python
在windows下Python打印彩色字体的方法
May 15 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
python基于SMTP协议发送邮件
May 31 Python
Python创建或生成列表的操作方法
Jun 19 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
python 字符串常用函数详解
Sep 11 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
Python如何操作docker redis过程解析
Aug 10 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 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
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
python查看FTP是否能连接成功的方法
2015/07/30 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
Python定义函数实现累计求和操作
2020/05/03 Python
详解Flask前后端分离项目案例
2020/07/24 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL