变量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
广告