深入理解Python变量与常量

深入理解Python变量与常量

变量是计算机内存的一个区域,可以存储指定范围内的值,并且这些值可以更改。根据变量的数据类型,解释器分配指定的内存,并确定哪些数据可以存储在内存中。常量是内存的只读区域,一旦初始化就不能更改。

[En]

A variable is an area of computer memory that can store values within a specified range, and the values can be changed. Based on the data type of the variable, the interpreter allocates the specified memory and determines what data can be stored in memory. A constant is a read-only area of memory that cannot be changed once initialized.

变量名由字母、数字和下划线组成,不能以数字开头。

[En]

Variable names are composed of letters, numbers and underscores, and cannot start with numbers.

变量赋值

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的内置函数。
如果变量没有赋值,Python将认为该变量不存在。

深入理解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”
变量作用域
局部变量是只能在函数或代码块中使用的变量。一旦函数或代码块结束,局部变量的生命周期也将结束。局部变量的作用域仅在创建局部变量的函数内有效。

[En]

A local variable is a variable that can only be used within a function or code block. once the function or code block ends, the life cycle of the local variable will end. The scope of a local variable is valid only within the function in which the local variable is created.

例如:在文件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

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

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

print(local_var)

NameError: name ‘local_var’ is not defined

深入理解Python变量与常量

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

全局变量是可以由不同函数、类或文件共享的变量。在函数外部定义的变量称为全局变量。全局变量可由文件中的任何函数或外部文件访问

[En]

Global variables are variables that can be shared by different functions, classes, or files. Variables defined outside the function are called global variables. Global variables can be accessed by any function or external file within the file

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)

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

[En]

You should avoid using global variables as much as possible. Different modules can freely access global variables, which may lead to the unpredictability of global variables.

全局变量降低了函数或模块之间的通用性,而不同的函数或模块依赖于全局变量。同样,全局变量会降低代码的可读性,并且读取器可能不知道调用的变量是全局变量。

[En]

Global variables reduce the versatility between functions or modules, and different functions or modules depend on global variables. Similarly, global variables reduce the readability of the code, and the reader may not know that a variable called is a global variable.

常量
常量是一旦初始化之后就不能修改的固定值。例如:数字”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

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保留字用于抛出异常。
以上这篇深入理解Python变量与常量就是小编分享给大家的全部内容了,希望能给大家一个参考

Original: https://www.cnblogs.com/amengduo/p/9586220.html
Author: 刘小子
Title: 深入理解Python变量与常量

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/9821/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总