python-tutorials/docs/course/foundation/language_fundamentals/variables.md

132 lines
4.9 KiB
Markdown
Raw Normal View History

# 变量和常量
变量和常量的定义如字面上的表示。
变量:在程序执行的过程中,定义的存储空间存储的内容**会**被改变。
常量:在程序执行的过程中,定义的存储空间存储的内容**不会**被改变。
不是所有的语言都会有变量和常量的,有些语言不能定义常量。
![images|387x130](https://cdn.ossez.com/discourse-uploads/original/2X/e/e9b6f7dbaf6e6157b36e61cce79aec73a7c44065.png)
比如说:**Python 没有常量**。
对于 Java我们可以使用关键字来定义一个常量。例如我们可以使用下面的语句在 Java 程序中定义个一常量 DAYS_IN_WEEK这个常量在程序的过程中是不能够被改变的。
```
static final int DAYS_IN_WEEK = 7;
```
Python 没有这个常量的定义。
![python-variables3|555x203](https://cdn.ossez.com/discourse-uploads/original/2X/8/84dfd55cd3230addeac1acddc5fcc88574b979db.png)
## 指定类型
Python 在定义变量的时候是不需要强制指定类型的。
我们都知道在计算机存储的时候都会定义一些基础的数据类型,比如说整型,字符串类型等。
Python 在定义变量的时候是不需要指定的类型的有关变量的类型是是什么Python 将会在定义变量并且初始化的时候进行指定。
这个与 Java 是相对的Java 语言在定义变量或者常量的时候,必须要指定变量类型,这就导致了在 Java 语言中存在有大量的数据类型转换方法,并且在运行的时候也会经常出现类型错误或者 Null 对象异常。
当然Python 也提供了类型转换的函数供你使用,只是这些类型转换的函数远没有 Java 那么多。
## 初始化
Python 在定义变量后,需要马上初始化。
换句话说说Python 不能定义空对象,这个与 Python 的变量类型是相同的,因为不对 Python 的变量初始化的话Python 没有办法知道你定义的变量类型是什么。
与 Java 相对Java 就可以定义空对象,然后在运行的时候进行初始化。
## 本地变量和全局变量
这个定义比较简单,就是定义在函数内的变量为本地变量。
如果变量定义在函数外,那么这个变量就是全局变量。
2021-03-07 12:21:48 -05:00
## 变量实例
针对上面有关变量的定义,我们将会在下面对变量的定义进行一些实际上的应用。
### 定义变量和使用变量
下面的代码显示了对变量的定义和使用。
```python
# 创建变量和指定变量类型
x = 1 # 变量赋值定义一个变量x
print(id(x)) # 打印变量x的标识
print(x + 1) # 使用变量
x = 2 # 量赋值定义一个变量x
print(id(x)) # 此时的变量x已经是一个新的变量
print(x + 1) # 名称相同但是使用的是新的变量x
x = 4 # x 是整数类型的
x = "OSSEZ" # x 类型将会修改为字符串
print(x)
```
当你运行上面的程序后,程序将会输出为:
```text
2131838986544
2
2131838986576
3
OSSEZ
```
![python-v-01|674x500](https://cdn.ossez.com/discourse-uploads/original/2X/2/2671ed853eed10737b2e9a680778ffc5b1c1e30b.png)
从上面的代码,你可以看到 Python 是如何定义变量的,并且 Python 的变量是如何被修改的。
id 是一个获得 Python 对象 ID 的函数。
在 Python 中是使用对象的,因此你定义的变量是一个对象,使用 id 这个函数可以找到你定义对象的引用。
### 变量类型转换
和所有的程序语言都一样,如果使用了变量,但是变量是不同的数据类型,那么就会涉及到类型的转换。
Python 也提供了一些类型转换的函数,能够用于帮你将 Python 的变量类型完成转换。
考察下面的代码:
```python
# 类型转换
x = str(3) # x will be '3'
y = int(3) # y will be 3
z = float(3) # z will be 3.0
```
经过上面的函数进行转换后,不同的变量将会被使用不同的变量类型。
![python-v-02|690x238](https://cdn.ossez.com/discourse-uploads/optimized/2X/f/f43e23132355e6c301b071a5994d11676373f503_2_690x238.png)
通过 IDE 的调试窗口,我们就可以看到变量被定义的类型和使用。
### 获得变量类型
如果你对你 Python 使用的变量类型不是非常清楚的话,你可以使用函数 type 来获得变量的类型。
通常如果使用 IDE 的话IDE 会告诉你的变量类型是什么。
考察下面的代码:
```python
x = 5
y = "John"
print(type(x))
print(type(y))
```
上面的代码将会输出
```text
<class 'int'>
<class 'str'>
```
通过上面的输出内容,我们就非常容易明白在 Python 中你定义的变量使用的数据类型是什么。
![python-v-03|690x364](https://cdn.ossez.com/discourse-uploads/original/2X/7/7b226789e2bd294f0474cbf91ce85a68f776f214.png)
如果我们使用 IDE 的调试模式的话,我们可以非常容易的在 IDE 中设置断点。
然后通过断点的查看数据类型来查看你定义的数据类型是什么。