Python关键字之global与nonlocal

作者:笨鸟先fly 时间:2023-12-09 13:34:18 

Python关键字 global与nonlocal

global

def test():
 #1函数内如果没定义x,则x默认为全局变量
 print(x) # 输出 global v
 #2函数内如果定义x,则x为局部变量
 x = 'local v' # 局部变量
 print(x) # 输出 local v
x = "global v" # 全局变量

如何在函数内修改全局变量呢?[利用关键字global]

def test():
 #在函数内先声明全局变量,
 global x # 即x = "global v",注意global修饰变量时不能直接赋值,如 global x =‘abc' 报错!
 # 修改全局变量
 x = 'modified global v'
x = "global v" # 全局变量
print(x) # global v
test()
print(x) # modified global v

nonloacl

nonlocal只能在嵌套函数中使用,用于标识嵌套函数中的变量是包含该嵌套函数的函数中的同名变量,在嵌套函数中修改变量会影响函数中的变量。

def func(): # 函数
 x = 'loval v'
 def ifunc(): # 嵌套函数
   nonlocal x #  x = 'loval v'

如果在函数中使用global修饰了变量,那么在嵌套函数中用nonlocal修饰同名变量会发生报错,因为nonlocal表示该变量在函数中已经定义,但检查时因为同名变量被global修饰为全局变量,所以不存在同名的局部变量,从而导致错误

x = 'global v' # 全局变量
def func(): # 函数
 global x
 def ifunc(): # 嵌套函数
   nonlocal x # 报错!!

来源:https://blog.csdn.net/weixin_44139001/article/details/123295188

标签:Python,关键字,global,nonlocal
0
投稿

猜你喜欢

  • 详解Python下载图片并保存本地的两种方式

    2023-04-03 05:21:36
  • 实例解析:MySQL 实例管理器识别的命令

    2009-02-23 17:33:00
  • Javascript 文件夹选择框的两种解决方案

    2024-04-16 09:50:46
  • MSSQL存储过程学习笔记一 关于存储过程

    2024-01-17 18:59:43
  • 解析python调用函数加括号和不加括号的区别

    2023-11-30 17:29:50
  • Centos6.9安装Mysql5.7.18步骤记录

    2024-01-25 20:24:06
  • asp fckeditor自定义上传文件的文件名

    2011-03-30 11:03:00
  • Python实现仿射密码的思路详解

    2021-04-17 22:32:00
  • 人工智能学习Pytorch张量数据类型示例详解

    2021-09-13 01:33:08
  • ASP中如何判断字符串中是否包数字

    2008-07-21 12:04:00
  • PHP开发实现微信退款功能示例

    2023-06-30 09:10:25
  • AJAX打造博客无刷新搜索

    2007-08-23 08:48:00
  • Python通过DOM和SAX方式解析XML的应用实例分享

    2023-10-15 10:46:32
  • 教你用FrontPage2003轻松布局网页

    2008-02-24 17:05:00
  • XMLHTTP获取web造访头信息和网页代码

    2010-04-01 14:37:00
  • Python+OpenCV实战之利用 K-Means 聚类进行色彩量化

    2021-01-02 09:20:27
  • Python使用django获取用户IP地址的方法

    2021-07-22 04:01:05
  • 在IDEA的maven项目中连接并使用MySQL8.0的方法教程

    2024-01-13 09:33:37
  • python 正则表达式 概述及常用字符

    2023-03-03 07:16:15
  • 使用bandit对目标python代码进行安全函数扫描的案例分析

    2021-04-07 02:01:22
  • asp之家 网络编程 m.aspxhome.com