python函数中的全局和局部

我无法理解 python 中的全局和局部变量,尤其是函数。我看了很多例子,但都没有在函数调用中清楚地解释。我的示例代码如下:


def called(d):

    del d[0]

    b=[1]

    return b


def main():

    a=[0,1,2,3]

    print("first ", a)

    c=called(a)

    print("second ", a)


main()

输出:


first  [0, 1, 2, 3]

second  [1, 2, 3]

我希望“a”是主要的局部变量。当我调用“被调用”函数时,a 被复制到 d。并且 d 在“被调用”处是本地的。但现实是不同的。我用“称为(a.copy)”解决了这个问题。但我想了解其中的逻辑。


慕码人8056858
浏览 155回答 2
2回答

一只名叫tom的猫

Python 永远不会隐式复制任何东西,当你将一个对象(Python 中的一切都是一个对象)传递给一个函数时,你在函数中拥有的是你传入的对象,所以如果你改变它,变化将在函数之外看到。OTHO,参数名称是函数的局部名称,因此在函数内重新绑定参数只会更改该名称在函数内指向的对象,它对传递的对象没有影响。

扬帆大鱼

基本上,全局变量是一个可以在任何地方访问的变量,无论它是否在函数(或其他任何东西)中。局部变量是仅存在于相关函数中的变量。您不能在其他任何地方声明或访问它。但是,您可以通过将其显式包含在函数中来使其成为全局变量。就我所见,'d' 并未真正定义为变量,而是定义为函数参数,如called(d). 这可能已经改变called(blabla),你的功能会表现得完全相同的方式,如果你的函数中,也发生了变化d[0],以blabla[0]。这意味着当您调用该函数时,其中包含 'd' 的任何内容都将被您调用的内容替换。在这种情况下,参数已更改为变量 a,然后按照您的说明执行函数。为了定义一个变量,你必须使用'='。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python