python中的全大发彩局票网站开发变量与局部变量的区别

全局变量与大发彩局票网站开发haozbbs.comQ1446595067局部变量的本质区别在于作用域:

全局变量是在整个py文件中声明的,全局范围内都能访问;

局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就会崩掉。

如果在函数内部定义某个与全局变量一样名称的局部变量,就可能导致意外的效果,不建议这样使用,这样会使程序不健全。
例1:

def fun(x):
y=2
print("乘法的运行结果:",x*y)

num1=1
print("初始num1=",num1)

fun(num1)

print("y的值是:",y)

运行结果:

初始num1= 1
乘法的运行结果: 2
Traceback (most recent call last):
File "/home/python/Desktop/MX_Dynamic_Query_RTree2/test.py", line 18, in <module>
print("y的值是:",y)
NameError: name ‘y‘ is not defined

原因是:试图访问局部变量,但是访问的地方不在该变量y的作用域中,变量y是在函数内部定义的一个局部变量,所以该变量的作用域为该函数内部,在函数外部访问该局部变量y会报错!
例2:

def fun():
num1 = 2
print("函数内修改后num1=", num1)
num1 = 1
print("初始num1=", num1)
fun()

print("运行完函数后num1=", num1)

运行结果:

初始num1= 1
函数内修改后num1= 2

运行完函数后num1= 1

可以看到在函数内部对全局变量修改后,在函数执行完毕,修改的结果是无效的,全局变量并不会受到影响。
例3:

def fun():
num1 *= 2
print("函数内修改后num1=", num1)
num1 = 1
print("初始num1=", num1)
fun()

print("运行完函数后num1=", num1)

运行结果:

初始num1= 1
Traceback (most recent call last):
File "/home/python/Desktop/MX_Dynamic_Query_RTree2/test.py", line 15, in <module>
fun()
File "/home/python/Desktop/MX_Dynamic_Query_RTree2/test.py", line 11, in fun
num1 *= 2

UnboundLocalError: local variable ‘num1‘ referenced before assignment

报错,这是因为在函数中使用了局部变量num1,它只是个跟全局变量同名的局部变量,使用前还是要赋值。
例4:如果真的想在函数体内修改全局变量的值,可以使用global关键字
def fun():
global num1
num1=2
print("函数内修改后num1=",num1)
num1=1
print("初始num1=",num1)
fun()

print("运行完函数后num1=",num1)

运行结果:

初始num1= 1
函数内修改后num1= 2
运行完函数后num1= 2

使用global关键字就是告诉python编辑器,这个变量不是局部变量而是全局变量,其实有点像"引用"的意思。

例5:关键字nonlocal,字面意思是当前这个变量不是局部变量,它是python3.0中新增的关键字,python2.x中不支持。

def fun():
num2 = 3
def fun2():
num2 *= 2
print("num2=", num2)
return fun2()

fun()

报错!!错误的原因跟前面的差不多,就是使用了未定义的局部变量,然而num2也不是全局变量,只是fun2函数的外层变量,强行使用global定义num2的话同样会报错。

加上nonlocal关键字:

def fun():
num2 = 3
def fun2():
nonlocal num2
num2 *= 2
print("num2=", num2)
return fun2()
fun()

运行结果:num2= 6

原文地址:http://blog.51cto.com/13860239/2139404

时间: 2024-07-30 13:15:35

python中的全大发彩局票网站开发变量与局部变量的区别的相关文章

C++-类和动态内存分配 大发彩_票平台开发

大发彩_票平台开发 地址一:[hubawl.com]狐霸源码论坛地址二:[bbscherry.com] 类和动态内存分配 动态内存和类 C++在分配内存时是让程序在运行时决定内存分配,而不是在编译时决定. 这样,可根据程序的需要,而不是根据一系列严格的存储类型规则来使用内存.C++使用new和delete运算符来动态控制内存. 1.1. 复习示例和静态类成员 这个程序使用了一个新的存储类型:静态类成员. //strngbad.h#include<iostream>#ifndef STRNGBA

超详细java中 大发彩_票平台搭建 的ClassLoader详解

ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassLoader的加载机制,也有利于我们编写出更高效的代码.ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了.但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载.想想也是的,一次性加载那么多jar包那么多class,那内存不崩溃.本文的目的也是学习ClassLoader这种加载机制. 大发彩

Python的time库和文本进度条 大发彩_票平台搭建

大发彩_票平台搭建 地址一:[hubawl.com]狐霸源码论坛地址二:[bbscherry.com] 是Python中处理时间的标准库1.time库包括三类函数 时间获取:time() ctime() gmtime()时间格式化:strftime() strptime()程序计时:sleep(), perf_counter()2.时间获取 3.时间格式化 4.程序计时 5.进度条实例 #textProBarV1.pyimport timescale = 50print("执行开始".

分享一篇耗子源码论坛大发彩_票平台搭建教程

大发彩_票平台搭建 Q1446595067在之前的工作,一直是以Android为主,前端为辅.经过了几个项目,也基本了解了前后端数据交互到底是怎么回事儿.但是在做项目的过程中经常有这个问题,项目初期需求定稿开始开发工作期间,服务端的同事需要搭建数据库,搭框架之类的工作,而同样的移动端或前端也开始撘架构或写页面,在写页面的时候不免要用到数据.此时,服务端的同事很可能因为工作进度还没有完成接口的开发.这个时候,如果不会服务端开发的话,我们一般只能在本地模拟一些假数据来使用,或者等着后台提供接口-.但

下载大发彩_票平台

下载大发彩_票平台地址一:[hubawl.com]狐霸源码论坛地址二:[bbscherry.com] 项目开发完毕后,需要将代码放到服务器上,这样用户才能访问.接下来我们一步一步来进行一波部署操作 打包上传代码 项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前服务器IP或*,如: ALLOWED_HOSTS = ["",]这个配置就是允许别人通过哪个ip访问你,表示所有ip 上线时还要将配置中的DEBUG改为False 不同系统如何传代码 wind

Effective Java-创建 大发彩_票平台出租 和销毁对象

一.考虑用静态方法代替构造器 ? 类可以通过静态工厂方法来提供它的客户端,而不是通过构造器. 优势: ? 1.它们有名称,可以根据名称将创建对象的行为表达的更清楚. ? 2.可以不必在每次调用它们的时候都返回一个新对象.这使得不可变类可以使用预先构建好的实例,或者将构建好的实例缓存起来,进行重复利用. ? 3.它们可以返回原返回类型的任何子类型的对象.API可以返回对象,同时又不会使对象的类变成公有的.以这种方式隐藏实现细节. ? 4.在创建参数化实例的时候,它们使代码变得简洁. 缺点: ? 1

Java中成员变量和局部变量的区别

java面向对象过程中,最基本的两类变量就是成员变量和局部变量 成员变量是写在类中并且写在方法外部,一般写在每个类的头部,用于初始化或者方法操作,作用域是整个类被实例化到被销毁,中间变量都可以被外部方法(权限为public时)或者内部方法所共享使用,并且可以保持变量的值,就是多个方法可以复用该变量,成员变量一般要加权限修饰符,并且定义成员变量的时候系统会给初始值0 而局部变量作用域只在方法内部,当方法调用完毕,该变量也自动消失,并且只有方法本身可以使用,其他方法或类都不能使用该变量,也就是方法本

在python中一对单引号,一对双引号,三个单双引号的区别和用法

首先说明,在python中三个单双引号并不是真正的注释 >>> type("""abcde""") <class 'str'> >>> type('''abcd''') <class 'str'> 这样可以看出三对单,双引号是有数据类型的 三对单,双引号的用法是定义的时候可以定义多行字符串 >>> a = """ ... a ... b .

python中的作用域以及内置函数globals()-全局变量、locals()-局部变量

在python中,函数会创建一个自己的作用域,也称为为命名空间.这意味着在函数内部访问某个变量时,函数会优先在自己的命名空间中寻找. 通过内置函数globals()返回的是python解释器能知道的变量名称的字典(变量名:值): 而locals()函数返回的是函数内部本地作用域中的变量名称字典.由此可以看出,函数都是由自己独立的命名空间的. 查看全局变量和局部变量: #coding=utf-8 outerVar="this is a global variable"def test()