Python变量与常量

变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。常量是一块只读的内存区域,常量一旦被初始化就不能被改变。

变量命名字母、数字、下划线组成,不能以数字开头,前文有说不在赘述。

变量赋值

Python中的变量不需要声明,变量的赋值操作即是变量的声明和定义的过程。每个变量在内存中创建都包括变量的标识、名称、和数据这些信息。

Python中一次新的赋值,将创建一个新的变量。即使变量的名称相同,变量的标识并不同。

x = 1 #变量赋值定义一个变量x
print(id(x)) #打印变量x的标识
print(x+5) #使用变量
print("=========华丽的分割线=========")
x = 2 #量赋值定义一个变量x
print(id(x)) #此时的变量x已经是一个新的变量
print(x+5) #名称相同,但是使用的是新的变量x

继续赋值

x = ‘hello python‘
print(id(x))
print(x)

此时x又将成为一个新的变量,而且变量类型也由于所赋值的数据类型改变而改变。

此处,id()为Python的内置函数。参见:https://docs.python.org/3/library/functions.html#id

如果变量没有赋值,Python将认为该变量不存在。

Python支持多个变量同时赋值。

例如:

a = (1,2,3) #定义一个序列
x,y,z = a    #把序列的值分别赋x、y、z
print("a : %d, b: %d, z:%d"%(x,y,z)) #打印结果
a, b, c = 1, 2, "john"

变量作用域

局部变量是只能在函数或者代码块内使用的变量,函数或者代码块一旦结束,局部变量的生命周期也将结束。局部变量的作用范围只有在局部变量被创建的函数内有效。

例如:在文件1中的fun()中定义了一个局部变量,则该局部变量只能被fun()访问,文件1中定义的fun2()不能访问,也不能被文件2访问。

#fileName:file1
def fun():
    local_var = 100 #定义一个局部变量
    print(local_var)
def fun2():
    zero = local_var - 100 #fun2中使用局部变量(不可以)
    print("get zero : %d"%zero)
fun()
#fun2()
print("local_var -1 = %d"%(local_var - 1)) #文件1中使用局部变量(不可以)
################################
#Traceback (most recent call last):
#  File "E:/python/file1.py", line 10, in <module>
#    print("local_var -1 = %d"%(local_var - 1))
#NameError: name ‘local_var‘ is not defined
################################
#Traceback (most recent call last):
# File "E:/python/file1.py", line 9, in <module>
#    fun2()
#  File "E:/lichenli/python/file1.py", line 6, in fun2
#    zero = local_var - 100
#NameError: name ‘local_var‘ is not defined
################################
#fileName:file2
import file1
file1.fun()
print(local_var)
########################
#运行结果
#100
#Traceback (most recent call last):
# File "E:\python\file2.py", line 4, in <module>
#   print(local_var)
#NameError: name ‘local_var‘ is not defined
########################

fun()中定义的局部变量就只有fun能够访问。

全局变量是能够被不同函数、类或文件共享的变量,在函数之外定义的变量都叫做全局变量。全局变量可以被文件内任何函数和外部文件访问。

#fileName:file1
g_num1 = 1 #定义全局变量
g_num2 = 2 #定义全局变量
def add_num():
    global g_num1 #引用全局变量
    g_num1 = 3 #修改全局变量的值
    result = g_num1 + 1
    print("result : %d"%result)
def sub_num():
    global g_num2
    g_num2 = 5
    result = g_num2 - 3
    print("result : %d"%result)
add_num()
sub_num()
print("g_num1:%d "%g_num1)
print("g_num2:%d "%g_num2)
#result : 4  result为局部变量
#result : 2
#g_num1:3  全局变量g_num1在执行add_num()函数时被改变
#g_num2:5  全局变量g_num2在执行sub_num()函数时被改变

global保留字用于引用全局变量,如果不适用global关键字,在函数中再为g_num1赋值时将被解释为定义了一个局部变量g_num1。

#添加到sub_num()函数定义之后,add_num()函数调用之前
def other():
    result = g_num1 + 2 #直接适用全局变量不改变全局变量的值OK
    print("result : %d"%result)
other()

#######################
#result : 3
#result : 4
#result : 2
#g_num1:3
#g_num2:5
#######################
#添加到sub_num()函数定义之后,add_num()函数调用之前
def other():
    g_num1 = 10
    result = g_num1 + 2
    print("result : %d"%result)
other()
####################
#result : 12
#result : 4
#result : 2
#g_num1:3
#g_num2:5
####################

在文件2中访问全局变量。

#fileName:file2
import file1
file1.add_num() #g_num1被改变
test = file1.g_num1 + 1
print("test :%d"%test)

应该尽量避免使用全局变量。不同的模块可以自由的访问全局变量,可能会导致全局变量的不可预知性。

全局变量降低了函数或者模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能不知道调用的某个变量是全局变量。

常量

常量是一旦初始化之后就不能修改的固定值。例如:数字"5",字符串"abc"都是常量。

Python中并没有提供定义常量的保留字。Python是一门功能强大的语言,可以自己定义一个常量类来实现常量的功能。

#fileName:const.py
class _const:
    class ConstError(TypeError):pass
    def __setattr__(self,name,value):
        #if self.__dict__.has_key(name): 3.x之后has_key被废弃
        if name in self.__dict__:
            raise self.ConstError("Can‘t rebind const(%s)"%name)
        self.__dict__[name] = value
import sys
sys.modules[__name__] = _const()
#fileName:const_2.py
import const
const.name=‘zhangsan‘
const.name=‘lisi‘

##################################
#Traceback (most recent call last):
#  File "E:/python/const_2.py", line 4, in <module>
#    const.name=‘lisi‘
#  File "E:/python\const.py", line 7, in __setattr__
#    raise self.ConstError("Can‘t rebind const(%s)"%name)
#const._const.ConstError: Can‘t rebind const(name)
##################################

name这个变量已经被赋值"zhangsan"不能继续被赋值,所以抛出异常。raise保留字用于抛出异常。

时间: 2024-09-29 07:10:37

Python变量与常量的相关文章

三.Python变量,常量,注释

1. 运行python代码. 在d盘下创建一个t1.py文件内容是: print('hello world') 打开windows命令行输入cmd,确定后 写入代码python d:t1.py 您已经运行了第一个python程序, 即:终端---->cmd-----> python  文件路径. 回车搞定~ 2. 解释器. 上一步中执行 python d:t1.py 时,明确的指出 t1.py 脚本由 python 解释器来执行. 如果想要类似于执行shell脚本一样执行python脚本,例:

Python 变量和常量及数据类型

一.变量的命名 变量由字母.数字和下划线组成.变量的第1个字符必须是字母或下划线. 二.变量的赋值 例: x = 1 三.局部变量 局部变量只能在函数或者代码段内使用. 四.全局变量 在函数之外定义的变量,可以被不同的函数.类或文件共享的变量. 在引用全局变量时,采用关键字global 例:_a=1 _b=2 def add(): global _a _a=3 五.常量 常量的值不能被修改. 数据类型包括数字和字符串 一.数字 i = 1 print(type(i)) 复数书写: c = 7 +

python变量和常量

#变量 常量 #变量命名建议使用_ (下划线),不建议用驼峰 #常量命名建议使用全大写,不建议改变值 name = 'jack' print(name) name = 'jack adam' print(name) PIE = 3.1415926 print(PIE)

Python学习(2)变量、常量、注释

1.变量 变量的概念 :变量 是 为了存储 程序运算过程中的一些中间 结果,为了方便日后调用 变量的命名规则: 1. 要具有描述性 2. 变量名只能_,数字,字母组成,不可以是空格或特殊字符(#?<.,¥$*!~) 3. 不能以中文为变量名 4. 不能以数字开头 5. 保留字符是不能被使用 x=1 y=2 z=x*y print("x乘y等于:",z) 输出结果: x乘y等于: 2   2.常量 常量的概念:不变的量 pie = 3.141592653.... 在Python里面

python基础(2):python的变量和常量

今天看看python的变量和常量:python3 C:\test.py 首先先说一下解释器执行Python的过程: 1. 启动python解释器(内存中) 2. 将C:\test.py内容从硬盘读入内存(这一步与文本编辑器是一样的) 3. 执行读入内存的代码 如果想要永久保存代码,就要用文件的方式如果想要调试代码,就要用交互式的方式 变量是什么? 变:变化,核心在与变化    量:衡量,计量,表达是一种状态 变量的定义 ps: level = 1 level:变量名  =:赋值运算符  1:值

Python的变量和常量

解释器执行Python的过程:   (python3,c:/test.py) 1:启动python解释器(内存中). 2:将c:/test.py内容从硬盘读到内存中(这一步和文本编辑器是一样的). 3:执行读入内存的代码. 变量是什么? 变:变化 量:一种状态            level = 1    level:变量名  1:值 PS:  定义一个变量,存储的数据是变量值. 变量名与变量值只是一种绑定功能. 变量名本身并无储存值得功能. 变量定义的3个重要的组成部分: id      

Python基础-03.数据类型-02.变量和常量

本文主要介绍Python中的变量和常量,包括变量的命名规范,使用注意事项 1.变量 1.1.变量理解 何时需要用到变量?一段程序或者数值需要在后面经常用到就可以用变量变量包括:变量名,变量值对于计算机,变量可以看做是一种存放信息的容器,用于存储在计算机程序中需要引用和操作的信息.对于人,提供一种用描述性的名称对数据进行标记的方法,这样我们写的程序就可以更清楚地被读者和我们自己理解. 概念区分:变量的声明.定义.赋值和初始化有什么区别?变量声明或定义:在环境中指定一个变量的名字.代表在内存中开辟一

编程语言类别;运行Python程序的方式;变量和常量;Python程序的垃圾回收机制;

---恢复内容开始--- 一.编程语言分类: 1.机器语言:直接用二进制的0和1和计算机(CPU)直接沟通交流,直接操作硬件. 优点:不需转换,计算机能直接读懂,执行速度快. 缺点:二进制代码复杂多样,理解甚难,开发效率低. ps:站在奴隶的角度说奴隶能够听得懂的话 0000 代表  加载 (LOAD) 0001代表 存储(STORE) 暂存器部分事例 0000  代表暂存器 A 0001  代表暂存器  B 存储器部分事例 000000000000  代表地址为 0的存储器 000000000

python基础(变量,常量,python变量内存管理,变量的三个特征,花式赋值,注释 )

python基础 变量 定义:变量用来描述世间万物变化的状态 组成: 变量名:接收变量值 赋值符号:把变量值赋值给变量名 变量值:就是一个数值 注意: 变量名由数字/字母/下划线组成,不能以数字开头 变量名不能以下关键字命名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global',