变量Variables

基础Basics

定义

在 python 中,变量不需要定义,就可直接使用

1 2
value = 1print(value)

大小写敏感

1 2 <
value = 1print(Value)NameError: name 'Value' is not defined
广告

数据类型Data Types

常用数据类型表格

分类描述类型
数值整数int
数值小数float
数值复数complex
数值分数Fraction
逻辑布尔bool
文字字符串str
集合元祖tuple
集合区间range
集合列表list
集合集合set
集合字典dict

除此之外,支持 以 class 形式,自定义数据类型

数据类型检测

使用 type 函数 可以检测数据类型

1 2 <
a = '3'print(type(a))class 'str'
广告

作用域Scopes

在 Python 中,文件、函数、会保留一份 局部变量 表,所有的局部变量都会开在这些地方。

变量的作用域,是离它最近的 函数,文件 的内部范围

文件级别变量

1 2 3 4 5 6 <
score = 78if score > 60: grade = '合格'else: grade = '不合格'print(grade)合格

第 3 行的 grade 变量 会直接开在 当前文件里,作用域是 整文件

函数级别变量

1 2 3 4 5 6 7 8 9 < <
def func(): score = 78 if score > 60: grade = '合格' else: grade = '不合格' print(grade)func()print(grade)合格name 'grade' is not defined

第 4 行的 grade 变量 会直接开在 func 函数里,作用域是 整个 func 函数

运行在 第 9 行时,python 会在文件级别上寻找 grade 变量,但是没有找到

临近赋值

赋值时,会找到最近的 函数 或者 文件,将变量开在最近的 变量表里

1 2 3 4 5 6 < <
a = 1def func(): a = 3 print(a)func()print(a)31

第 1 行的 a 的赋值 会将 一个 a 变量 开在 整个文件里

第 3 行的 a 的赋值 会将 另外一个 a 变量 开在 func 函数里

所以 第 3 行的 赋值 并没有更改 在文件级别的 a 变量

因此 在 第 6 行,我们会看到 没有被修改的 a 还是 1

global 使用全局

使用 global 可声明,在局部范围内,将赋值操作 改为赋值到 文件范围内的 变量

1 2 3 4 5 6 < <
def func(): global a a = 3 print(a)func()print(a)33

因为 第 2 行 对 a 进行了 global 声明

第 3 行 对 a 进行赋值时,不会在 func 函数内开变量,而会在 文件级别上开 一个变量 a

因此,我们在 第 6 行,会看到 在 函数里 声明的 文件级别的 变量 a 是 3

逐级查找

在 读取 变量时,会从 函数 向 文件,逐层寻找 是否有 变量

函数里有,就用函数的
1 2 3 4 5 6 < <
a = 1def func(): a = 3 print(a)func()print(a)31
函数里没有,就用文件的
1 2 3 4 5 < <
a = 1def func(): print(a)func()print(a)11
广告

ZZAX 微信公众

文档一更新,立刻告诉你