全局与局部变量

  • 在子程序(函数)中定义的变量称为局部变量, 在程序的一开始定义的变量称为全局变量
  • 全局变量作用于整个程序, 局部变量作用域是定义该变量的子程序
  • 当全局变量与局部变量重名时:
    • 在定义局部变量的子程序内, 局部变量起作用,在其它地方全局变量起作用
 # 字符串, 整数不能在函数里面直接改全局变量;  类,集合,列表,字典是可以在函数中直接改全局变量的(元组不可以,因为元组是不可以修改的).
school = 'oldboy'
term = 3
ages = ('','','')
names=['lucy','ada','Rain'] def change():
school = 'edu'
term = 4
ages('','') #元组本来就是不可修改的
names[0] = 'alex'
print('inside func',names) change()
print(school)
print(term)
print(ages)
print(names)

全局变量如果是字符串 / 整数, 若想在函数中修改, 需要在函数中变量前面加上global,然后再修改.

 # 不允许的做法
def change_name():
global name # global把name变成了一个全局变量, 如果有这个全局变量就把那个全局变量拿过来,没有就添加(但最好不要这么做.全局变量还是要在文件前面定义,方便调试)
name = 'alex'
print(name) change_name()
print(name) print('\r\n') # 允许的做法
name = 'alex' def change_name2():
global name # 在函数中修改全局变量
name = 'lucy'
print(name) change_name2()
print(name)

Python 作用域, 局部与全局变量的更多相关文章

  1. python作用域和多继承

    python作用域 python无块级作用域 看c语言代码: #include<stdio.h> int main() { > ) { ; } printf("i = %d ...

  2. python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域

    上节课总结 1 运算符 in 字符串 判断  : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...

  3. python 作用域与命名空间

    作用域 作用域分为: 全局作用域 局部作用域 在函数内部的作用域叫做局部作用域,局部作用域中的变量叫做局部变量 非函数内部的作用域叫做全局作用域,全局作用域中的变量叫做全局变量 局部作用域可以使用全局 ...

  4. 学习记录-Python的局部变量和全局变量

    目录 1 定义 2 作用域的重要性 2.1 全局作用域中的代码不能使用任何局部变量 2.2 局部作用域中的代码可以访问全局变量 2.3 不同局部作用域中的变量不能相互调用 2.4 在不同的作用域中,可 ...

  5. js 函数 作用域 全局作用域 局部作用域 闭包

    一个变量没有声明但调用 直接报错,声明没有赋值会显示未定义. 作用域 作用域(scope):一条数据可以在哪个范围中使用. 通常来说,一段程序代码中所用到的数据并不总是有效/可用的,而限定这个数据的可 ...

  6. Python作用域详述

    作用域是指变量的生效范围,例如本地变量.全局变量描述的就是不同的生效范围. python的变量作用域的规则非常简单,可以说是所有语言中最直观.最容易理解的作用域. 在开始介绍作用域之前,先抛一个问题: ...

  7. Python3基础-Python作用域详述(转载)

    转载文章 转载文章 作者:骏马金龙 出处:http://www.cnblogs.com/f-ck-need-u/p/9925021.html Python作用域详述 作用域是指变量的生效范围,例如本地 ...

  8. python作用域和JavaScript作用域

    JavaScript 一.JavaScript中无块级作用域 一个大括号一个作用域,就属于块级作用域,在Java和c#才存在块级作用域 function Main(){ if(1==1){ var n ...

  9. python开发--列表当全局变量来使用

    python中,申明全局变量的时候,一般该变量类型基本上是:字符串或数字: 比较少用“列表”当做变量, 当有作用域限制的情况下,想要外部调用内部作用域的“列表”变量时,可以用这种方式,外部申明一个空列 ...

随机推荐

  1. Android的启动过程分析(从进程和Framework的角度)-android学习之旅(98)

    Android的启动过程包含从Linux加载到home程序运行的过程,如下图所示: 1.linux内核: Android是基于Linux内核的系统平台.启动时,首先通过bootloader加载LInu ...

  2. OpenCV混合高斯模型函数注释说明

    OpenCV混合高斯模型函数注释说明 一.cvaux.h #define CV_BGFG_MOG_MAX_NGAUSSIANS 500 //高斯背景检测算法的默认参数设置 #define CV_BGF ...

  3. IT轮子系列(七)——winform 版本更新组件

    前言 最近做了一个winform客户端的项目,里面有一个功能是版本更新.以前也有写过,可忘了具体的逻辑.网上也有介绍用发布模式进行更新的,自己尝试后没有成功,提示“vba证书无效”.于是,费了些时间搜 ...

  4. MySQL 中索引的限制

    MySQL 中索引的限制在使用索引的同时,我们还应该了解在MySQL 中索引存在的限制,以便在索引应用中尽可能的避开限制所带来的问题.下面列出了目前MySQL 中索引使用相关的限制.1. MyISAM ...

  5. 为何90%的IT技术人员不适合做老大

    老男孩老师终于写了一篇让我觉得不错的文章,哈哈,转一下. 什么是格局? 格局就是能够很好的平衡短期利益和长期利益. 过分注重短期利益的人必然会失去长期利益,到头来一定会很普通. 例如:跳槽不断,可能短 ...

  6. 手机号 验证函数 C++

    直接上代码 #include <regex> bool IsValidPhoneNumber(const std::string& strPhone) { std::regex  ...

  7. SEO优化:浅析关键词出现在网站哪些地方更有利?

    关键词出现在网站哪些地方符合SEO?进行网站的SEO时,关键词需要出现在整个网站的适当地方.下面列出几个重要的关键词摆放的地方.以下列出的10个地方希望能够帮助到大家. 1.网站Title部分. 2. ...

  8. builder设计模式(摘录ITeye文章lintomny)

    对于Builder模式很简单,但是一直想不明白为什么要这么设计,为什么要向builder要Product而不是向知道建造过程的Director要.刚才google到一篇文章,总算清楚了.在这里转贴一下 ...

  9. (汇总)os模块以及shutil模块对文件的操作

    ''' # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux ...

  10. android sqlite android.database.CursorIndexOutOfBoundsException: Index 5 requested, with a size of 5

    Cursor c = db.query("user",null,null,null,null,null,null);//查询并获得游标 if(c.moveToFirst()){// ...