当您在函数定义中声明变量时,它们与函数外部使用的具有相同名称的其他变量没有任何关系,即,变量名称是函数本地的。这称为变量的范围。从名称的定义开始,所有变量都具有声明它们的块的范围。 示例(另存为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使用在函数定义上方的主块中声明的参数的值。 接下来,我们将值分配2 给x 。该名称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 用于按指定次数打印字符串。如果我们不提供值,则默认情况下,字符串仅打印一次。我们通过将默认参数值指定为1 parameter来实现此目的times 。 在的第一次使用中say ,我们仅提供字符串,并且仅打印一次字符串。在的第二种用法中say ,我们同时提供了字符串和参数5 ,表明我们要说
|