目录
从本期开始,将为大家讲解 Python 的基本语法。
常量、运算符、表达式
代码实例如下。
print(1 + 2 + 3)
print(1 + 2 * 3)
print(1 + 2 / 3)
如上图中的 1,2,3 称之为字符常量,+、-、*、/ 称之为运算符,或者操作符, 1+2+3、1+2*3、1+2/3,称之为表达式。通过代码可以看出 python 的一行代码不必以分号 ";" 作为一行代码结束的标志 。
上述代码的运行结果如下图。
如上图,对于第一行代码和第二行代码的运行结果没有疑问,这与之前学习 C/C++ 语言时的运行结果类似,但是对于第三行代码而言,按照以往 C/C++ 的语法,此时的结果应为 1,因为 整数除以整数 的结果理应为整数,但是对于 Python 而言,计算出来什么结果,就是什么结果,没有严格的限制,但是对于计算出来的小数可能会伴随着精度的丢失。
变量
变量想必大家都不陌生,变量本质上其实就是计算机中一小块内存的名称,变量的值就是小块内存中存储的数据。在计算机中,内存的最小单位我们称为页,一页的大小为 4KB。而创建的变量对应的空间就是这一页中的一小块空间,图示如下。
如上图,定义了一个 a 变量就相当于是在内存中开辟了一块空间,空间的名称是 a,a 的初始值是 10,意味着开辟的空间中存储的数据为 10。
变量的定义
区别于 C/C++ ,Python 在定义变量变量时不需要声明变量的类型,变量的类型会经过解释器之后自动推导出来。
代码如下,分别为 C/C++ 和 Python 定义一个整型变量。
int a = 10; //C/C++ 语法
a = 10 python 语法
变量的命名规范
在 Python 中,变量的命名也有着严格的规范。
1、 变量只能由字母,数字,下划线构成,不能包含特殊符号。
2、变量不能包含 Python 中的关键字。
3、变量的命名不能以数字开头
4、变量的命名区分大小写。
上图中的 B,b 是两个变量。
5、变量的命名,尽量见名生义。
NAME = 'zhangsan'
s = 'zhangsan'
如上代码,比如我们要创建一个表示人名的变量,就要设置变量的名称为 name,而不是 s ,因为 name 很清楚的表示了这个变量表示的含义。
5、Python 的两种命名格式,一种为驼峰命名,一种为蛇形命名。
studentName = 'lisi'
student_name = 'wangwu'
如上代码,第一行为驼峰命名,第二行为蛇形命名,在具体项目中编写代码时采用哪种命名格式,取决于具体的项目规范。
变量的修改
如下图,先创建变量然后修改变量。
看似相似的代码,但其实本质上有很大的差别,C/C++ 中变量的修改很好分辨,因为创建变量时会声明变量的类型,但是 Python 不会声明,所以要判断是创建还是修改,得根据前面的代码整体进行分析。
变量的类型
整数和浮点数类型
在 C++ 中,整数有很多类型,比如 int,short,long等,浮点数有两种类型,float 和 double,在 Python 中难道也有这么多类型吗?
实则不然,在 Python 中,整数只有 int(默认为4个字节) 类型,但是 int 类型会及时的根据变量的大小进行扩容,小数只有 float(默认为8个字节)— 类型,float 类型也会随着 变量的大小进行扩容。
所以在 C++ 中,整数只有 int 类型,浮点数数只有 float 类型。
type()函数用于打印变量的类型,上述代码的运行结果图示如下。
其中 b 位 int 类型,c 为 float 类型。
字符串
在 Python 中,字符串通常通过 单引号(') 或者 双引号(") 来表示,代码如下。
str1 = 'zhangsan'
print(type(str1))
str2 = "lisi"
print(type(str2))
上述代码的运行结果如下。
通过上图我们发现,无论是单引号还是双引号字符串,它们的类型都是相同的。既然都是相同的为什么要使用两种符号来表示字符串呢?
这是因为在字符串中可能同时存在单引号和双引号,比如有这样一个字符串,my name is "yjd",这个字符串如果使用双引号表示会出现问题,如下图。
此时相当于是前面的和后面的双引号组成了一个字符串,导致中间的 yjd 被单独孤立开来,此时会报语法错误,所以我们会用单引号表示字符串以应对这种特殊场景,图示如下。
当要表示的字符串中出现了单引号时也同理。
那么如果一个字符串中同时出现了单引号和双引号,此时应该怎样处理呢?
在 Python 语法中,提出了三引号的概念,当字符串中出现了单引号和双引号之后,我们就用三引号表示这个字符串,代码如下。
name='''my name 'is' "yjd"'''
print(type(name))
运行结果图示如下。
三引号的场景很少用到,这个作为了解即可。
如果我们要计算字符串的长度,可以使用 len() 这个函数计算,代码如下。
str1 = 'zhangsan'
print(len(str1))
运行结果如下。
运行结果符合预期。
同时,在 Python 中还支持 + 操作,表示将后面的字符串添加到前一个字符串的末尾,代码如下。
str3 = 'hello'
str4= 'world'
str5 = str3+str4
print(str5)
运行结果如下。
如上图,str5 的结果就是 str3 加上 str4 的结果。
布尔类型
与 C++ 一样,Python 中同样存在布尔类型(bool,默认一个字节),只不过与 C++ 中的布尔类型存在差异。
代码如下。
a1 = True
print(type(a1))
a2 = False
print(type(a2))
通过代码不难发现,Python 中的布尔类型与 C++ 中的布尔类型名称一致,True 表示真,False 表示假,但是在 Python 中的两个关键字都是大写,C++ 中两个关键字都是小写。
代码运行结果如下。
a1 和 a2 都是 bool 类型,符合预期。
变量的动态类型特性
对于 C++ 语言而言,变量一旦一创建,变量的类型就不再发生变化,所以我们称 C++ 是一个静态类型的编程语言,但是 Python 是一个动态类型的编程语言, 当我们在 Python 中创建了一个变量之后,变量的类型仍然是可以进行重定指定的。
参考代码如下。
b1 = 10
print(type(b1))
b1 = 10.11
print(type(b1))
b1 = "china"
print(type(b1))
运行结果如下。
通过上图我们发现,在 Python 中创建的变量可以随意的更改变量的类型。
Python 也可以在创建变量时(编译阶段),指定变量的类型,但是即使指定了变量的类型,后续也可以随时更改变量的类型,代码如下。
b1:int = 10
print(type(b1))
b1 = 10.11
print(type(b1))
b1 = "china"
print(type(b1))
代码运行结果如下。
如上述代码和代码运行结果可以获知,通过 变量:变量类型 在创建变量时(编译阶段) 即使指定了变量的类型,但是后续仍然可以进行对该变量类型的修改。
正是因为 Python 的动态类型的特性,Python 语言的开发相对比较灵活,开发周期快,但是灵活的特性又引入了维护较为困难的难题,所以一般在小型项目中使用动态类型语言 Python 进行开发,因为代码量少,即使 Python 代码灵活,维护也是相对简单的,但是在大型项目中,一般使用静态类型语言 C++/JAVA 进行开发,虽然开发周期比较长,但是因为代码并不灵活,相对稳定,所以维护起来比较简单。
注释
注释的功能
注释的功能主要有三种。
1、解释代码的含义。
2、禁用代码。
3、生成 api 文档。
解释代码的含义
在 C++ 中我们通常使用 // 或者 /**/ 符号去进行代码的注释,与 C++ 不同,在 Python 中的注释,通常使用井号(#) 进行代码的注释
使用 # 进行注释,代码如下。
#计算a的平方+b的三次方
a = 2
b = 4
c = a**2 + b**3
print(c)
禁用代码
# a = 2
# b = 4
# c = a**2 + b**3
# print(c)
在 Pycharm 中,使用 ctrl + / 键,可以快速禁用代码。
生成 api 文档
使用三引号进行注释,代码如下。
def add(a, b):
""" 这是一个计算两数相加的函数"""
'''这是一个计算两数相加的函数'''
return a + b
在 Python 中可以使用三引号(可以是三个双引号组成的三引号,也可以是三个单引号组成的三引号)进行文档注释,可以使用对应的工具生成 api 文档,这个了解即可。
用 # 和三引号虽然都可以进行代码的解释。区别是,使用三引号进行注释时,最终可以使用对应的工具对对应的注释进行识别,生成 api 文档。
注释规范
1、注释内容必须准确,不准确,容易误导读者。
2、注释的篇幅一定要合理,不能太过精简导致代码解释的不清楚,也不能太长显得太过啰嗦。
3、如果公司是中国的公司,注释尽量使用中文 ,注释本身就是要辅助读者读懂代码,如果因为注释是英文使得代码的理解更加困难,会显得得不偿失,外企除外。
4、代码注释要文明,不要附带个人情绪。
输出到控制台
控制台的概念
什么是控制台?
控制台就是用户和计算机进行交互的工具,比如 windows 的 cmd 命令控制台,VS 的控制台都可以叫做控制台,在控制台中输入指令,控制台就会返回计算机执行这个指令之后的结果。
在 Pycharm 中也有控制台,我们可以在控制台中看到 print 代码的输出结果,图示如下。
我们如何将 'a = 1' 这个字符串输出到控制台呢?
在 C++ 中可以使用标准输出将这个字符串输出到控制台,但是在 Python 中这种方式明显是不能使用的,在 Python 中定义了一个格式化字符串的概念,可以将字符串输出到控制台中。
格式化字符串
代码如下。
a = 1
print(f"a = {a}")
上述代码运行结果如下。
我们把通过 f "" 或者 f '' 将字符串与其他类型的变量进行拼接一起输出到控制台的操作就叫做格式化字符串,Python 中我们将格式化字符串简称为 f-string。
从控制台输入
如何从控制台输入数据呢?
在 C++ 中我们可以通过标准输入流 cin 从控制台输入数据,在 Python 中同样提供了一个 input 函数从控制台输入数据。
代码如下。
''' 这是一个求平均值的代码案例'''
num1 = input("请输入第1个数: ")
num2 = input("请输入第2个数: ")
num3 = input("请输入第3个数: ")
num4 = input("请输入第4个数: ")
num1 = int(num1)
num2 = int(num2)
num3 = int(num3)
num4 = int(num4)
avg = (num1 + num2 + num3 + num4)/4
print(f"4个数的平均数avg为:{avg}" )
在 Python 中,使用 input 函数进行变量的输入,input 函数会阻塞式等待用户的输入(通俗来说就是用户没有输入就会一直等待,直到用户输入)。input 函数的返回值是 str 字符串类型,所以要进行变量的计算时,要通过 变量类型() 的方法将变量转为要使用的类型,这样才能进行对应的计算,上述代码强转为了 int 类型,进行平均值的计算。
上述代码的运行结果如下。
如上图,成功计算了四个数的平均值,代码运行结果符合预期。
以上便是本期 Python 基本语法的所有内容。
本期内容到此结束^_^