2026/2/28 1:45:02
网站建设
项目流程
新网建站教程,科技部部长,wordpress柚子皮 zip,wordpress 插件太多Python中函数与全局对象间的关系
1、函数内调用全局对象
1.1 函数内部可不可以调用全局的函数对象
函数内部可以直接调用全局创建的函数。当函数内部创建与全局具有相同函数名的对象时#xff0c;函数内的函数将会取代全局的函数。以下是一个示例#xff1a;
# 全局函数
def …Python中函数与全局对象间的关系1、函数内调用全局对象1.1 函数内部可不可以调用全局的函数对象函数内部可以直接调用全局创建的函数。当函数内部创建与全局具有相同函数名的对象时函数内的函数将会取代全局的函数。以下是一个示例# 全局函数defadd(a,b):returnabdefmulti(a,b):# 调用全局的add函数cadd(a,b)careturnc# 测试resultmulti(2,3)print(result)# 输出: 7当函数内部有同名函数时# 全局函数defadd(a,b):returnabdefmulti(a,b):# 局部函数覆盖全局的add函数defadd(a,b):returna-b# 调用局部的add函数cadd(a,b)careturnc# 测试resultmulti(2,3)print(result)# 输出: 11.2 函数内部可不可以调用全局的变量全局变量可以分为可变变量和不可变变量不可变变量有字符串、整数、浮点数、元组等可变变量有列表、字典、数组等。在函数内部可以访问/查看函数外的可变或不可变变量。当在函数内部创建一个与全局相同名字的变量时局部变量会自动覆盖全局变量。# 全局变量global_var10deffunc():# 访问全局变量print(global_var)# 输出: 10# 创建局部变量覆盖全局变量global_var20print(global_var)# 输出: 20func()print(global_var)# 输出: 10全局变量未被修改1.3 函数内部可不可以修改全局的变量函数内部可以修改全局的可变变量例如字典、列表或者是tensor。如果是不可变对象那么首先需要在函数内部声明全局变量之后才可以对该变量进行修改。声明是全局变量的语法是global variance声明之后便可以修改。# 全局可变变量global_list[1,2,3]defmodify_list():# 修改全局可变变量global_list.append(4)modify_list()print(global_list)# 输出: [1, 2, 3, 4]对于不可变变量# 全局不可变变量global_var10defmodify_global():# 声明使用全局变量globalglobal_var global_var20modify_global()print(global_var)# 输出: 20在函数嵌套函数的场景中修改嵌套函数外的不可变变量需要使用nonlocal声明变量defouter():x10definner():nonlocalx x20inner()print(x)# 输出: 20outer()2、 全局调用函数内创建的对象2.1 调用函数内创建的变量全局不能直接调用函数内创建的变量但是在以下三种场景中可以进行调用场景1将希望调用的变量通过return导出到全局作用域中deffunc():local_var10returnlocal_var# 获取函数内的变量resultfunc()print(result)# 输出: 10场景2通过global 将局部变量声明为全局变量deffunc():globalglobal_var global_var10func()print(global_var)# 输出: 10场景3函数外有可变对象例如列表。将函数中创建的局部变量存入全局的可变对象中# 全局可变对象global_list[]deffunc():local_var10global_list.append(local_var)func()print(global_list)# 输出: [10]2.2 调用函数内创建的嵌套函数函数是一等对象它可以像变量一样赋值也可以作为参数传递给函数可以存储进可变对象中甚至可以作为函数的返回值。defouter():definner():print(这是内部函数)# 返回内部函数returninner# 获取内部函数inner_funcouter()inner_func()# 输出: 这是内部函数注意赋值时不要加括号加括号会进行调用函数的逻辑# 正确Function_copyouter# 错误会立即调用函数Function_copyouter()那么在函数外访问函数内创建的函数逻辑和访问函数内部创建的变量的逻辑一样。