小白教程

 找回密码
 立即注册

函数的变量

发布者: 小白教程

当您在函数定义中声明变量时,它们与函数外部使用的具有相同名称的其他变量没有任何关系,即,变量名称是函数本地的。这称为变量范围从名称的定义开始,所有变量都具有声明它们的块的范围。

示例(另存为function_local.py):

x = 50


def func(x):
    print('x is', x)
    x = 2
    print('Changed local x to', x)


func(x)
print('x is still', x)

输出:

$ python function_local.py
x is 50
Changed local x to 2
x is still 50

这个怎么运作

第一次使用函数主体的第一行打印名称x,Python使用在函数定义上方的主块中声明的参数的值。

接下来,我们将值分配2x该名称x是我们功能的本地名称因此,当我们更改x函数中的值时x主块中定义保持不变。

使用最后一条print语句,我们显示x在主块中定义as的值,从而确认它实际上不受先前调用的函数内的本地赋值的影响。

global声明

如果要为在程序顶层定义的名称分配一个值(即不在任何类型的范围内,例如函数或类),则必须告诉Python该名称不是本地的,但它是全局的我们使用global语句执行此操作如果没有该global语句,就无法为在函数外部定义的变量赋值

您可以使用在函数外部定义的此类变量的值(假设函数内不存在名称相同的变量)。但是,不鼓励这样做,应该避免这样做,因为程序的读者不清楚该变量的定义在哪里。使用该global语句可以很清楚地知道该变量是在最外层的块中定义的。

示例(另存为function_global.py):

x = 50


def func():
    global x

    print('x is', x)
    x = 2
    print('Changed global x to', x)


func()
print('Value of x is', x)

输出:

$ python function_global.py
x is 50
Changed global x to 2
Value of x is 2

这个怎么运作

global语句用于声明它x是一个全局变量-因此,当我们x在函数内部分配一个值时,当我们x在主块中使用value时,该更改将得到反映

您可以使用同一条global语句指定多个全局变量,例如global x, y, z

默认参数值

对于某些功能,如果用户不想为其提供值,则可能需要使某些参数成为可选参数并使用默认值。这是在默认参数值的帮助下完成的。您可以通过在函数定义中的参数名称后附加赋值运算符(=)和默认值,来为参数指定默认参数值

请注意,默认参数值应为常数。更确切地说,默认参数值应该是不可变的-这将在后面的章节中详细说明。现在,请记住这一点。

示例(另存为function_default.py):

def say(message, times=1):
    print(message * times)

say('Hello')
say('World', 5)

输出:

$ python function_default.py
Hello
WorldWorldWorldWorldWorld

这个怎么运作

命名的函数say用于按指定次数打印字符串。如果我们不提供值,则默认情况下,字符串仅打印一次。我们通过将默认参数值指定为1parameter来实现此目的times

在的第一次使用中say,我们仅提供字符串,并且仅打印一次字符串。在的第二种用法中say,我们同时提供了字符串和参数5,表明我们要说

上一篇:函数下一篇:return语句

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-9-20 06:42 , Processed in 0.040283 second(s), 18 queries .