# 失踪人口
Python系列已经很久不更新啦,其实主要是不知道写些什么
。今天就简单讲下Python3的类型
相关的知识吧。
# 类型
我们都知道,在Python中有很多数据类型
,耳熟能详的有:
整形 | 浮点型 | 集合 | 字典 | 列表 | 字符串 |
---|---|---|---|---|---|
int | float | set | dict | list | str |
但其实我们写Python代码,一般不太去定义
参数的类型。
举个例子:
def hello(name):
print(name)
1
2
2
这个代码很简单,大家都知道hello
方法是要打印name,也都默许
了name是一个字符串(str)类型。
# ⚠危险⚠
我们可以想想一下不指定类型
的缺点:
假设我们有个新的需求: 要把name变为小写后打印
那代码改动如下:
def hello(name):
print(name.lower())
1
2
2
此时如果我的name传入一个int
类型的数字,那程序就会抛异常了。
# 指定变量类型
那么如何指定变量类型呢?我们在变量名name后面加:类型
即可:
# 变量类型声明的好处
我知道大家可能都不是太习惯去声明一个变量的类型,但是这确实是有好处的。
- 就好比上面的例子,如果我们定义了str类型的参数而传入int,那Pycharm会提示我们,不能这样做。
Pycharm会给我们更多提示
我们知道,str类型的数据会有许多方法,比如上面提到的lower(),我们先看看不指定类型时的情况:
再来看看指定了变量类型的时候,会出现什么情况:
不仅仅是str,其他类型也能给出更智能的提示,容错率大大提高。
阅读代码方便
可以很快就知道方法需要什么参数,返回什么类型。
# 变量声明的坏处
坏处也有,就是比较麻烦,代码看起来没有以前那么流畅
。而且没有规定死变量的类型,就好像我刚才的例子,虽然我指定了str类型,但是传入int,依然可以运行代码,没有在运行层面
做这样的检查。
# 返回值的类型
我们知道,方法是有返回值的,我们也可以定义方法的返回值,在方法末尾(冒号前面)加一个->类型
即可。
def get_name() -> str:
return "胡汉三"
1
2
2
好处和上面一样,你可以更智能编写代码,防止出错。
# 常见类型
类型 | 名称 |
---|---|
int | int |
str | str |
List | 列表,也可以用list |
List[类型] | 可以指定列表中存放的类型 |
Any | 任意类型 |
Dict | 字典 同dict |
Dict[类型A, 类型B] | key为类型A,value为类型B的字典 |
Set | 同set |
Union[类型A, 类型B] | 联合类型 接受A或者B类型 |
常用的差不多就这些,但List,Set,Dict这样的变量需要import:
# 从typing中获取Dict,List等数据类型
from typing import Dict
1
2
2
指定类型并不会影响编译结果,但可以帮助我们提高开发效率
,降低出错率
,阅读代码更友好
。但随之而来开发写的代码也变多了~