Python解释器内置了许多函数,这意味着我们无需定义,始终可以它们。接下来和大家一起讨论一个常用的内建函数-input()和isinstance()。
input()
input()函数读取用户输入,并转换成字符串:
- >>> a = input() # 将input()返回的值赋值给a
- Python
- >>> a # 查看a的值(为字符串'Python')
- 'Python'
input()函数可以提供一个参数,用来提示用户:
- >>> b = input('请输入你最喜欢的水果: ') # 给用户必要的提示
- 请输入你最喜欢的水果: 香蕉
- >>> b
- '香蕉'
需要注意的是,input()函数返回的值总是字符串,当用户输入的是数字也是这样,所以当使用它时一定要注意:
- >>> num = input('请输入一个数字: ')
- 请输入一个数字: 10
- >>> num + 9 # 试图把num和数字相加
- Traceback (most recent call last):
- File "
" , line 1, in- TypeError: must be str, not int
- >>> num
- '10'
- >>> type(num) # 查看num的数字类型
- <class 'str'>
isinstance()
isinstance()函数用于检查对象是否为指定类(或者说数据类型)的实例。isintance()的第一个参数为一个对象,第二个参数为要检查的数据类型。
举个例子,比如有有一个变量,你想检查它是否为数字类型,可以使用isinstance()函数:
- score = 90
- >>> result = isinstance(score, int)
- >>> if result:
- ... print('score为int数据类型')
- ... else:
- ... print('score不为int数据类型')
- ...
- score为int数据类型
除了能检查是否为int类型外,isintance()还能检查其他数据类型(当然了),下面是一个综合示例:
- >>> pi = 3.14
- >>> name = 'Wang'
- >>> complex_num = 1 + 2j
- >>> isinstance(pi, float) # 3.14为浮点数类型
- True
- >>> isinstance(name, str) # 'Wang'为字符串类型
- True
- >>> isinstance(complex_num, complex) # 1 + 2j为复数
- True
isinstance()还可以验证某个对象是否为自定义的类型:
- >>> class Developer: # 定义一个叫做Developer的类
- ...
- ... def __init__(self, name): # __init__方法中,需要输入名字
- ... self.name = name
- ... def display(self): # 定义了display()方法
- ... print("Developer:", self.name, "-")
- ...
- >>> class PythonDeveloper(Developer): # PythonDeveloper类,继承了Developer类
- ...
- ... def __init__(self, name, language):
- ... self.name = name
- ... self.language = language
- ...
- ... def display(self): # 覆盖了父类的display方法
- ... print("Python Developer:", self.name, "language:", self.language, "-")
- ...
- >>> dev = Developer('Zhang') # 创建一个Developer对象
- >>> dev.display() # 调用display()方法,以查看该对象
- Developer: Zhang -
- >>> isinstance(dev, Developer) # 判断dev是否为Developer类,答案是肯定的
- True
- >>> isinstance(dev, PythonDeveloper) # 判断dev是否为PythonDeveloper类,当然不是
- False
- >>> python_dev = PythonDeveloper('Liu', 'Python') # 创建一个PythonDeveloper对象,注意PythonDeveloper是Developer的子类
- >>> python_dev.display() # 调用display方法
- Python Developer: Liu language: Python -
- >>> isinstance(python_dev, Developer) # 判断python_dev是否为Developer类,答案是肯定的
- True
- >>> isinstance(python_dev, PythonDeveloper) # 判断python是否为PythonDeveloper类,答案也是肯定的
- True