Python按值传递所有参数,但有例外(对象的别名)(初步理解)

python按值传递所有参数,但有例外(对象的别名)(初步理解)

  • 按值传递的例子:按值传递
var = 1
def test(a):
    a = 3
test(var)
print(var)
# 运行结果入下
#1
#

传入函数后,函数改变的是变量值的副本,这个副本仅在函数内使用生效,即传入函数的参数是一个函数内部的局部变量,因此var值没有被改变



  • 例外:存在状态的对象
from graphics import *
win = GraphWin('test', 300, 300)

# 函数定义, 设置窗口背景色并且在窗口中画一条线段的函数
def setbgAndLine(graphics ,somewin, colour):
    somewin.setBackground(colour)
    somewin.setCoords(0,0,10,10)
    Line(Point(4,4), Point(6,6)).draw(somewin)
    input()  # 使窗口不自动关闭(因为ide里的窗口会闪现一下就消失)
    somewin.close()

# 函数调用
setbgAndLine( win, 'red')

运行结果

image-20210121113638363

(初步理解)这里传入函数的参数是类似是指向这个对象的指针的副本,是一种别名的情况,在函数中对该对象进行的改变,实际上也对函数外的实际对象做出了改变,可能类似于按引用传递

posted on 2021-01-21 12:18  摸鱼time  阅读(113)  评论(0编辑  收藏  举报