吉多•范罗苏姆(Guido van Rossum)是一个荷兰程序员,因为他名字的前三个字母是Gui,所以大家都叫他龟叔。
龟叔在1989年圣诞节的时候(当时33岁),因为在家里呆着无聊,为了打发时间于是开始了Python的开发,Python的第一个正式版本发布于1991年。1991年是一个神奇的年份,Python、万维网、Vim、Qt、第一台笔记本电脑,都诞生于1991年。
Python的使用场景非常广泛,常见的有如下几个:
Python的优点:
Python的缺点:
注意:Python采用的是动态类型系统,因此一个变量的类型在程序运行的时候是可以发生改变的。
print是Python中的一个内置函数,使用print函数可以将数据打印到控制台上。比如:
print(1 + 2 - 3) # 0
print(1 + 2 * 3) # 7
print(1 + 2 / 3) # 1.6666666666666665
其中,形如1+2-3这样的算式,在编程语言中称为表达式,表达式的运算结果称为表达式的返回值,而像1,2,3这样的数字称为字面值常量。
说明一下:
定义变量
创建变量的语句非常简单,比如:
a = 10
说明:
变量的命名规则
硬性规则(务必遵守):
软性规则(建议遵守):
说明一下:
使用变量
读取变量的值,常见的就是用print函数对变量进行打印。比如:
a = 10
print(a) # 10
修改变量的值,就是对以存在的变量进行重新赋值。比如:
a = 10
a = 20 # 重新赋值
print(a) # 20
当然,也可以将一个变量的值赋值给另一个变量。比如:
a = 10
b = 20
a = b
print(a) # 20
print(b) # 20
注意:
变量里面不仅能存储数字,还可以存储其他种类的数据,为了区分不同种类的数据,于是引入了“类型”的概念。
需要注意的是,与C/C++等其他语言不同的是,Python中变量的类型不需要在定义的时候显式声明,而是根据初始化的值的类型来进行确定的。
整数
整数的类型为int,比如:
a = 10
print(type(a)) #
注意:
浮点数(小数)
浮点数(小数)的类型为float,比如:
a = 0.5
print(type(a)) #
注意: 与C/C++等其他语言不同的是,Python中的浮点数只有float一种类型,没有double类型,实际上Python中的float就相当于C/C++等语言中的double类型,表示双精度浮点数。
Python开发者的哲学:用一种方法,最好只有一种方法来做一件事。
字符串
字符串的类型为str,比如:
a = 'dragon'
print(type(a)) #
字符串可以是用“单引号”、“双引号”、“三单引号”或者“三双引号”引起来的一串字符序列,比如:
a = "dragon"
b = 'dragon'
c = """dragon"""
d = '''dragon'''
print(a) # dragon
print(b) # dragon
print(c) # dragon
print(d) # dragon
此外,使用“三单引号”或“三双引号”可以将多行字符串赋值给变量。比如:
a = """
first line
second line
third line
"""
可以使用len函数来获取字符串的长度,比如:
a = 'dragon'
print(len(a)) # 6
可以使用+对两个字符串进行拼接,比如:
a = '2021'
b = 'dragon'
c = a + b
print(a + b) # 2021dragon
布尔
表示真假的类型为bool,比如:
a = True
print(type(a)) #
注意: 布尔类型的取值只有两种,True(真)和False(假)。
其他
除了上述类型之外,Python中还有list、dict、自定义类型等等,我们后续再做介绍。
动态类型与静态类型:
C/C++等大多数语言都是静态类型语言,在编写静态类型语言的代码时,必须声明变量的数据类型,而Python则是一种动态类型语言, 因此在编写Python代码时不用声明变量的数据类型。
由于动态类型语言中,变量的类型是取决于变量值的类型,因此Python中同一个变量在不同时刻的类型可能是不同的。比如:
a = 10
print(type(a)) #
a = 'hello'
print(type(a)) #
动态类型特性是一把双刃剑:
Python中有以下两种风格的注释:
注释行
使用#开头的行都是注释,注释可以单独的写在一行,也可以写在代码的右侧。比如:
# 这是一个注释
print('hello world') # 这是也是一个注释
文档字符串
使用三引号引起来的称为“文档字符串”,也可以视为是一种注释。比如:
"""
这是多行文本注释
第一行
第二行
第三行
...
"""
说明一下:
程序需要和用户进行交互。
输入输出的最基本的方法就是控制台,用户可以通过控制台输入一些字符串传递给程序,程序再通过控制台将其运行结果展示给用户。
使用print函数可以将任意类型的变量输出到控制台,比如:
a = 2021
print(a) # 2021
b = 'dragon'
print(b) # dragon
如果想要混合输出不同类型的变量,那么就需要对输出的字符串进行格式化。比如:
age = 22
print(f'{name} is {age} years old this year') # Bob is 22 years old this year
说明一下:
使用input函数可以从控制台读取用户输入的数据,比如:
num = input('请输入一个整数: ')
print(f'你输入的整数是{num}')
说明一下:
由于input函数的返回值是字符串类型,因此下面代码实际进行的是字符串的拼接操作。
a = input('请输入第一个整数: ') # 10
b = input('请输入第二个整数: ') # 20
print(f'{a} + {b} = {a + b}') # 1020
如果想要进行算术运算,那么需要在运算前对读取到的值进行类型转换。比如:
a = input('请输入第一个整数: ') # 10
b = input('请输入第二个整数: ') # 20
a = int(a)
b = int(b)
print(f'{a} + {b} = {a + b}') # 30
说明一下:
int()
的方式可以将一个变量转换成int类型。float()
、bool()
、str()
等将变量转换成对应的类型。Python中的算术运算符,包括+
、-
、*
、/
、%
、**
(幂)、//
(地板除)。
注意事项:
**
可以求一个数的整数次幂,也可以求一个数的小数次幂。//
是地板除,整数除以整数得到的结果还是整数(舍弃小数部分,向下取整)。Python中的关系运算符,包括<
、<=
、>
、>=
、==
、!=
。
判断两个字符串是否相等
与C/C++等其他语言不同的是,Python中使用==
或!=
即可判断两个字符串的内容是否相等。比如:
a = 'hello'
b = 'hello'
print(a == b) # True
判断两个浮点数是否相等
不能直接使用==
来判断两个浮点数是否相等,因为浮点数在计算机中的表示并不是精确的。比如:
a = 0.1 + 0.2
b = 0.3
print(a) # 0.30000000000000004
print(b) # 0.3
print(a == b) # False
这时正确的比较方式应该是,判定这两个浮点数的差值是否小于允许的误差范围。比如:
a = 0.1 + 0.2
b = 0.3
print(a) # 0.30000000000000004
print(b) # 0.3
print(-0.000001 < (a - b) < 0.000001) # True
Python中的逻辑运算符,包括and
、or
、not
。
注意事项:
a < b and b < c
等价于a < b < c
,这个设定与其他编程语言都不相同。Python中的赋值运算符,包括=
、+=
、-=
、*=
、/=
、%=
、**=
、//=
、&=
、|=
、^=
、<<=
、>>=
。
使用 = 同时对多个变量赋值
链式赋值是使用=
同时对多个变量进行赋值的常见方式,比如:
a = b = 10
print(a) # 10
print(b) # 10
此外,Python还支持多元赋值的方式对多个变量进行赋值。比如:
a, b = 10, 20
print(a) # 10
print(b) # 20
多元赋值能帮我们解决一些特殊问题,比如完成两个变量的交换:
a, b = 10, 20
a, b = b, a
print(a) # 20
print(b) # 10
复合赋值运算符
对于复合赋值运算符+=
来说,a += 1
等价于a = a + 1
,其他复合赋值运算符也是类似的道理。
注意事项:
++
和--
运算符,但Python中不支持这种运算符,如果需要对变量进行自增/自减,则直接进行对应的+= 1
/-= 1
操作。除了上述运算符外,Python中还有一些运算符,比如身份运算符(is
、is not
)、成员运算符(in
、in not
)、位运算符(&
、|
、^
、~
、<<
、>>
)等,本文先不做介绍。