Python函数传参机制:列表与字典的引用传递及变量作用域解析

闻溪
闻溪
发布时间:2026-10-14 | 4人浏览过
原创

本文深入探讨Python中函数传参机制,重点分析列表作为参数传入时的引用传递特性,证明修改形参会影响原对象。同时解析字典作为参数的遍历方法,并详细阐述全局变量与局部变量的作用域规则及global关键字的使用场景,帮助开发者避免常见的变量修改陷阱。

Python函数传参机制:列表的引用传递特性

当把一个列表对象传入函数内部时,该列表本身会发生何种变化?

这正是本文旨在深入探讨的核心问题。


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中,默认情况下局部变量无法直接修改全局变量的值。

如果确实需要在局部函数中修改全局变量,必须先使用global关键字声明该变量为全局变量,随后才能对其进行修改操作。

以上关于Python将列表作为参数传入函数时的测试与理解即为全部内容,希望能对读者有所帮助,也欢迎大家继续支持本站获取更多技术分享。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表