局部变量

局部变量是指在函数内部定义并使用的变量,他只在函数内部有效。即函数内部的名字只在函数运行时才会创建,在函数运行之前或者运行完毕之后,所有的名字就都不存在了。所以,如果在函数外部使用函数内部定义变量,就会出现NameError异常。

错误示例:

def demo():
message = '唯有在被追赶的时候, 你才能真正地奔跑'
print('输出局部变量message:' + message) demo()
print(message) # 这里已经不能访问到函数内部的变量了 执行结果:
Traceback (most recent call last):
输出局部变量message:唯有在被追赶的时候, 你才能真正地奔跑
File "D:/xuexi/python/Demo.py", line 8, in <module>
print(message)
NameError: name 'message' is not defined

全局变量

与局部变量对应,全局变量为能够作用于函数内外的变量,全局变量主要有以下两种情况:

  1. 如果一个变量,在函数外定义,那么不仅在函数外可以访问到,在函数内也可以访问到。在函数体以外定义的变量是全局变量。

示例代码:

message = '唯有在被追赶的时候, 你才能真正地奔跑'

def demo():
print('输出局部变量message:' + message) demo()
print('函数外部访问message:' + message) 执行结果:
输出局部变量message:唯有在被追赶的时候, 你才能真正地奔跑
函数外部访问message:唯有在被追赶的时候, 你才能真正地奔跑
  1. 使用global关键字定义变量,该变量在全局都能访问了。
global variable
variable = 1
  • global variable:申明variable为全局变量
  • variable = 1:给variable赋值为1

示例代码:

def demo():
global message
message = '唯有在被追赶的时候, 你才能真正地奔跑'
print('输出局部变量message:' + message) demo()
print('函数外部访问message:' + message) 执行结果:
输出局部变量message:唯有在被追赶的时候, 你才能真正地奔跑
函数外部访问message:唯有在被追赶的时候, 你才能真正地奔跑

Python变量的作用域的更多相关文章

  1. Python变量的作用域在编译过程中确定

    为了节省读友的时间,先上结论(对于过程和细节感兴趣的读友可以继续往下阅读,一探究竟): [结论] 1)Python并不是传统意义上的逐行解释型的脚本语言 2)Python变量的作用域在编译过程就已经确 ...

  2. Python——变量的作用域

    原创声明:本文系博主原创文章,转载及引用请注明出处. 1. 在编程语言中,变量都有一定的作用域,用来限定其生命周期,且不同类型的变量作用域不同. 在Python中解释器引用变量的顺序(优先级)为:当前 ...

  3. Python - 变量的作用域

    变量作用域 Python能够改变变量作用域的代码段是 def . class . lamda. if/elif/else.try/except/finally.for/while 并不能涉及变量作用域 ...

  4. 『无为则无心』Python函数 — 30、Python变量的作用域

    目录 1.作用于的概念 2.局部变量 3.全局变量 4.变量的查找 5.作用域中可变数据类型变量 6.多函数程序执行流程 1.作用于的概念 变量作用域指的是变量生效的范围,在Python中一共有两种作 ...

  5. python中对变量的作用域LEGB、闭包、装饰器基本理解

    一.作用域 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域.python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量 ...

  6. Python学习之变量的作用域

    学习地址:http://www.jianshu.com/p/17a9d8584530 1.变量作用域LEGB 1.1变量的作用域 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空 ...

  7. python命名空间、作用域、闭包与传值传引用

    (以下内容,均基于python3) 最近在看python函数部分,讲到了python的作用域问题,然后又讲了Python的闭包问题. 在做作业的时候,我遇到了几个问题,下面先来看作业. 一. 作业1: ...

  8. Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  9. python学习笔记11(函数二): 参数的传递、变量的作用域

    一.函数形参和实参的区别 形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数. 实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数. >>> ...

随机推荐

  1. gradle文件中自定义字段值在java代码中使用

    1. 在build.gradle 中  buildConfigField  的参数有3个 第一个类型 第二个为名称 第三个是值 如果是字符串类型 请不要忘记 双引号! buildTypes {     ...

  2. 《SSH网上商城》-视频目录--代码可以跑起来

    本课程是2015年2月份的,就是14年底的. 课程第一天的代码-添加 jsp-api.jar   servlet-api.jar就可以跑起来,环境 JDK1.7 和tomcat8, SSH网上商城\S ...

  3. nginx 目录讲解

  4. sqoop导数据

    1.添加oracle  jdbc驱动 https://blog.csdn.net/eason_oracle/article/details/76836758 2.

  5. P4070 [SDOI2016]生成魔咒

    题目地址:P4070 [SDOI2016]生成魔咒 相信看到题目之后很多人跟我的思路是一样的-- 肯定要用 SA(P3809 [模板]后缀排序) 肯定要会求本质不同的子串个数(P2408 不同子串个数 ...

  6. 【转】python之模块array

    [转]python之模块array >>> import array#定义了一种序列数据结构 >>> help(array) #创建数组,相当于初始化一个数组,如: ...

  7. 【Android休眠】之PowerKey唤醒源实现【转】

    转自:https://blog.csdn.net/u013686019/article/details/53677531 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  8. vc++高级班之多线程篇[7]---线程间的同步机制②

    //示例代码: CStringArray g_ArrString; UINT __cdecl ThreadProc(LPVOID lpParameter) {  int startIdx = (int ...

  9. MinGW GCC 7.3.0 2018年1月25日 出炉啦

    GCC_7.3.0._for_MSYS2.7z for x86 x64 63.68 MB发布日期: 2018-01-26 下载地址: https://forum.videohelp.com/attac ...

  10. 010_mac常用docker维护命令

    一. ➜ ~ docker search rabbitmq #搜索 NAME DESCRIPTION STARS OFFICIAL AUTOMATED rabbitmq RabbitMQ is an ...