当前位置: 首页 > news >正文

python中局部变量和全局变量的区别_如何理解Python中的全局变量和局部变量呢

全局变量是在函数外部定义和声明的变量,我们需要在函数内部使用它们。

# This function uses global variable s

def f():

print s

# Global scope

s = "I love Geeksforgeeks"

f()

输出:我喜欢Geeksforgeeks

如果在函数范围内定义了具有相同名称的变量,那么它将仅打印函数内给出的值而不是全局值。

# This function has a variable with

# name same as s.

def f():

s = "Me too."

print s

# Global scope

s = "I love Geeksforgeeks"

f()

print s复制代码在IDE上运行

输出:我也是。

我喜欢Geeksforgeeks。

在我们调用函数f()之前,变量s被定义为字符串“I love Geeksforgeeks”。f()中唯一的语句是“print s”语句。由于没有本地s,将使用全局s的值。

问题是,如果我们改变函数f()中s的值,会发生什么?它也会影响全球吗?我们在下面的代码中测试它:

def f():

print s

# This program will NOT show error

# if we comment below line.

s = "Me too."

print s

# Global scope

s = "I love Geeksforgeeks"

f()

print s

输出:第2行:undefined:错误:赋值前引用的局部变量's'

为了使上述程序有效,我们需要使用“global”关键字。如果我们想要分配/更改它们,我们只需要在函数中使用全局关键字。打印和访问不需要全局。为什么?Python“假设”我们想要一个局部变量,因为在f()内部赋值,所以第一个print语句抛出此错误消息。在函数内部更改或创建的任何变量都是本地的,如果它尚未声明为全局变量。要告诉Python,我们要使用全局变量,我们必须使用关键字“global”,如以下示例所示:

# This function modifies global variable 's'

def f():

global s

print s

s = "Look for Geeksforgeeks Python Section"

print s

# Global Scope

s = "Python is great!"

f()

print s

现在没有歧义。

输出:Python太棒了!

寻找Geeksforgeeks Python部分。

寻找Geeksforgeeks Python部分。

一个很好的例子

a = 1

# Uses global because there is no local 'a'

def f():

print 'Inside f() : ', a

# Variable 'a' is redefined as a local

def g():

a = 2

print 'Inside g() : ',a

# Uses global keyword to modify global 'a'

def h():

global a

a = 3

print 'Inside h() : ',a

# Global scope

print 'global : ',a

f()

print 'global : ',a

g()

print 'global : ',a

h()

print 'global : ',a

输出:global:1

inside f():1

global:1

inside g():2

global:1

inside h():3

global:3

相关文章:

  • 南邮mysql_南京邮电大学网络攻防平台WEB题
  • mysql 唯一更新_MySQL 唯一索引和插入重复自动更新
  • linux mysql apache php 安装_Linux下Apache+MySQL+PHP的安装与配置
  • mysql自动判断索引机制_关于mysql 索引自动优化机制: 索引选择性(Cardinality:索引基数)...
  • mysql左表有右表没有_查询左表存在而右表不存在的记录
  • python编程语言轻松入门_Python快速入门
  • c#打开mysql表格_使用C#更新mySQL表
  • arcgis python add in崩溃_arcgis python 异常处理
  • mysql5.7.17 win10_MySQL数据库之mysql 5.7.17 安装配置方法图文教程(windows10)
  • 多态 java_Java的多态(深入版)
  • java循环三角形_java用循环画三角形思路
  • 面试题java的泛型_Java高级面试 —— Java的泛型实现机制是怎么样的?
  • java 内存 新生代_JVM源码分析之堆内存的初始化
  • wsdl soap java_[Java] webservice soap,wsdl 例子
  • 人人网java面试题_人人网Java开发工程师笔试题
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Brief introduction of how to 'Call, Apply and Bind'
  • Django 博客开发教程 8 - 博客文章详情页
  • dva中组件的懒加载
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • java8 Stream Pipelines 浅析
  • maven工程打包jar以及java jar命令的classpath使用
  • PHP 小技巧
  • Redis 懒删除(lazy free)简史
  • spring-boot List转Page
  • SQLServer之创建数据库快照
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 对象引论
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 基于组件的设计工作流与界面抽象
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 如何使用 JavaScript 解析 URL
  • Spring第一个helloWorld
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (4)Elastix图像配准:3D图像
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (六)软件测试分工
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • .CSS-hover 的解释
  • .form文件_SSM框架文件上传篇
  • .net wcf memory gates checking failed
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net 验证控件和javaScript的冲突问题
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET4.0并行计算技术基础(1)
  • .NetCore部署微服务(二)
  • /3GB和/USERVA开关
  • [ C++ ] 继承
  • [ 转载 ] SharePoint 资料