LEMON

记录站

0%

Python 常量 标识符 变量(二)

常量 & 标识符 & 变量

常量

1、常量的定义:常量即指不变的量,如 P 3.141592653…, 或在程序运行过程中不会改变的量

2、在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量,比如:NAME = “cc”

标识符

  • 标识符

image-20200606191747602

  • 如下

image-20200606191210148

  • 下面所列举的标识符是合法的:
1
2
3
4
UserID
name
mode12
user_age
  • 以下命名的标识符不合法:
1
2
3
4word     #不能以数字开头
try #try是保留字,不能作为标识符
$money #不能包含特殊字符

变量

作用:将不同类型的数据存储到内存

  1. 程序可操作的储存空间的名称

  2. 程序运行期间能改变数据

  3. 每个变量都有特定的数据类型

  • 定义变量格式

    • 变量名 = 初始值
    • 可以使用 print 函数来打印输出变量的初始值
  • 初始值是什么?

    • 为了确定变量的类型
    • Python 中定义变量是不需要指定类型的
      • Python 可以根据 = 等号右侧的值,自动推导出变量中存储数据的类型
      • 可以使用 type 函数可以查看一个变量的数据类型
  • 例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a1 = "lemon"
print(type(a1),a1)
<class 'str'> lemon

a2,a3 = "very","good"
print(type(a2),type(a3),a2, a3)
<class 'str'> <class 'str'> very good

a4 = a1 + a2 + a3
print(type(a4),a4)
<class 'str'> lemonverygood

a5 = input('输入:')
print(type(a5),a5)
输入:hello world
<class 'str'> hello world

变量的作用域(重点)

  • 作用域的概念:

    • 变量可以使用的范围,程序的变量并不是在所有位置都能使用的,访问的权限决定于变量在哪里定义的
  • 作用域的分类:

    • 局部变量
    • 全局变量

1. 局部变量概念

  • 概述:
    • 是在函数内部定义的变量,只能在函数内部使用;不同的函数可以定义相同名字的局部变量,各用各的,彼此不会产生影响。
  • 局部变量的作用:
    • 在函数内部使用,临时保存函数内部需要使用的数据
  • 局部变量的生命周期如下四点:局部变量的生命周期就是从定义开始到函数执行结束
    • 所谓生命周期就是变量从创建到被系统回收的过程;出生—>死亡
    • 局部变量在函数执行是才会被创建
    • 函数执行结束后,局部变量被系统回收
    • 局部变量只能在生命周期内来存储函数内部临时使用到的数据
  • 示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def demo1():

# 定义一个变量
# 1>出生:执行了下方{num = 10}代码之后,才会被创建
# 2>死亡:函数执行完成之后这个变量就死亡了
num = 10
print("这是一个局部变量%d" % (num))

def demo2():

# print(num) # 不是自身函数内部定义的变量,不能为己使用
pass

# print(num) # 在函数内部定义的变量,不能在其他位置使用
demo1()
demo2()

2. 全局变量概念

  • 全局变量:

    • 是在函数外部定义的变量(而不是定义在某一个函数内),所有函数内部都可以使用这个变量
  • python全局变量引用的要求:

    • 在函数内部可以通过全局变量的引用获取对应的数据值,但是,不允许直接修改全局变量的数据值。
  • 全局变量的位置:

    • 注意–> 在开发时,应该把所有的全局变量定义到函数上方,这样就可以保证所有函数都能够正常的访问到每一个全局变量
  • 全局变量命名建议:

    • 为了避免局部变量和全局变量出现混淆,在定义全局变量时,全局变量名前应该增加g_gl_ 的前缀
  • 示例

1
2
3
4
5
6
7
8
9
10
num = 10
def demo1():
# {num = 100}希望修改全局变量的值
# 但是,在python中是不允许在函数内部直接修改全局变量值的
# 如果直接使用赋值语句,仅会在函数内部定义一个和全局变量相同名字的局部变量
num = 100
print("demo1 == %d" % (num), id(num))

demo1()
print(f"num = {num}", id(num))
  • 那怎么才能在函数内部修改全局变量的值呢?
  • 示例
1
2
3
4
5
6
7
8
9
10
num = 10
def demo2():
#{num = 100}希望修改全局变量的值 -> 使用global声明一下变量即可
#global关键字会告诉解释器后面的变量是一个全局变量,随后再使用赋值语句是,就不会创建局部变量,而是修改全局变量的值
global num
num = 100
print("demo2 == %d" % (num),id(num))

demo2()
print(f"num = {num}", id(num))
-------------本文结束感谢您的阅读-------------