全局与局部变量

  • 在子程序(函数)中定义的变量称为局部变量, 在程序的一开始定义的变量称为全局变量
  • 全局变量作用于整个程序, 局部变量作用域是定义该变量的子程序
  • 当全局变量与局部变量重名时:
    • 在定义局部变量的子程序内, 局部变量起作用,在其它地方全局变量起作用
 # 字符串, 整数不能在函数里面直接改全局变量;  类,集合,列表,字典是可以在函数中直接改全局变量的(元组不可以,因为元组是不可以修改的).
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. 关于通过ruby互联网同步时间的几个思路

    我开始的思路是通过ruby的网络抓包能力,直接从时间同步网页抓取时间.但实际操作中发现很多时间网页都用的是js脚本计算的时间,直接抓成html文件,本地打开后会发现时间显示处都是空白. 比如网上朋友帮 ...

  2. jQuery结合lhgdialog弹出窗口,关闭时出现没有权限错误

    背景: 最近的项目,使用JQuery+lhgdialog窗口组件方式模拟弹窗,在关闭lhgdialog窗口时,出现以下错误: >jQuery没有权限 >调试时 w.readyState没有 ...

  3. Day12 CSS简单用法

    当我想要将html中的部分属性修改的时候,如果单个改的话,费时费力,这时候我就需要利用css和html结合起来了. <head> <meta charset="UTF-8& ...

  4. ffmpeg 在windows 上编译

    我在网上看到了一些资料,但是很多都不怎么全,而且 总会碰到这样或那样的问题,下面是我的一些经验,分享一下,当然也参考了大侠们的东西呵呵! 环境: OS:windows mingw +yasm+fmpe ...

  5. Search in rotated array two

    description: Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed ...

  6. 如何避免 await/async 地狱

    原文地址:How to escape async/await hell 译文出自:夜色镇歌的个人博客 async/await 把我们从回调地狱中解救了出来,但是如果滥用就会掉进 async/await ...

  7. 分布式任务调度——quartz + spring + 数据库

        项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻 ...

  8. js中几种实用的跨域方法原理详解【转】

    源地址:http://www.cnblogs.com/2050/p/3191744.html 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通 ...

  9. SpringBoot自定义拦截器实现IP白名单功能

    SpringBoot自定义拦截器实现IP白名单功能 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8993331.html 首先,相关功能已经上线了,且先让我先 ...

  10. Flask构建微电影(一)

    第一章.项目介绍  1.1.前言    本教程我将带领大家如何使用flask框架开发微电影网站.Flask是python中最受欢迎的轻量级web框架,flask扩展丰富,冗余度小,可自由选择组合各种插 ...