一、Python基本语法
1、Python注释
Python 支持两种类型的注释,分别是单行注释和多行注释。
(1)单行注释
单行注释指的是从井号#开始,直到这行结束为止的所有内容都是注释。
# 注释内容
(2)多行注释
Python 使用三个连续的单引号’''或者三个连续的双引号"""注释多行内容。
'''
注释内容1
注释内容2
'''
或者
"""
注释内容1
注释内容2
"""
注意:多行注释不支持嵌套。
2、Python缩进规则
在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。
注意:可以使用快捷键格式化代码:Ctrl + Alt + L
- Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。
- Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。
3、Python标识符命名规范
标识符可以理解为一个名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。
Python 中标识符的命名不是随意的,而是要遵守一定的命令规则:
- 在 Python 中,标识符中的字母是严格区分大小写的。
- 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
- 标识符不能和 Python 中的保留字相同。
- 标识符中不能包含空格、@、% 以及 $ 等特殊字符。
- Python 语言中,以下划线开头的标识符有特殊含义,例如:
- 以单下划线开头的标识符(如 _width),表示不能直接访问的类属性,其无法通过 from…import* 的方式导入;
- 以双下划线开头的标识符(如__add)表示类的私有成员;
- 以双下划线作为开头和结尾的标识符(如
__init__
),是专用标识符。 - 因此,除非特定场景需要,应避免使用以下划线开头的标识符。
- Python 允许使用汉字作为标识符,不推荐使用。
4、Python关键字(保留字)
保留字是 Python 语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。
Python中的所有的保留字,如图所示:
注意:由于 Python 是严格区分大小写的,保留字也不例外。
5、Python内置函数
Python 解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。
5.1 Python中的所有内置函数
Python中的所有内置函数如下图所示:
内置函数的具体使用,查看官方文档:https://docs.python.org/zh-cn/3/library/functions.html
注意:
不要使用内置函数的名字作为标识符使用,虽然这样做 Python 解释器不会报错,但这会导致同名的内置函数被覆盖,从而无法使用。
5.2 内置函数和标准库函数
内置函数和标准库函数是不一样的。
- Python 解释器也是一个程序,它给用户提供了一些常用功能,并给它们起了独一无二的名字,这些常用功能就是内置函数。Python 解释器启动以后,内置函数也生效了,可以直接拿来使用。
- Python 标准库相当于解释器的外部扩展,它并不会随着解释器的启动而启动,要想使用这些外部扩展,必须提前导入。Python 标准库非常庞大,包含了很多模块,要想使用某个函数,必须提前导入对应的模块,否则函数是无效的。
- 内置函数是解释器的一部分,它随着解释器的启动而生效;标准库函数是解释器的外部扩展,导入模块以后才能生效。一般来说,内置函数的执行效率要高于标准库函数。
- Python 解释器一旦启动,所有的内置函数都生效了;而导入标准库的某个模块,只是该模块下的函数生效,并不是所有的标准库函数都生效。
- 内置函数的数量必须被严格控制,否则 Python 解释器会变得庞大和臃肿。一般来说,只有那些使用频繁或者和语言本身绑定比较紧密的函数,才会被提升为内置函数。例如: print() 是 Python 的内置函数。
二、Python变量类型
变量在 Python 内部是有类型的,比如 int、float 等,但是我们在编程时无需关注变量类型,所有的变量都无需提前声明,赋值后就能使用。另外,可以将不同类型的数据赋值给同一个变量,所以变量的类型是可以改变的。
1、变量的定义和使用
Python 使用等号=作为赋值运算符,具体格式为:
name = value
- name 表示变量名;
- value 表示值,也就是要存储的数据。
使用 Python 变量时,只要知道变量的名字即可。几乎在 Python 代码的任何地方都能使用变量。
示例代码如下:
a = 10
b = 20
sum = a + b
print(a)
print(b)
print("a + b = ", sum)
1.1 Python是弱类型的编程语言
在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言、C++、Java 是强类型语言的代表。和强类型语言相对应的是弱类型语言,Python、JavaScript、PHP 等脚本语言一般都是弱类型的。
Python是弱类型的编程语言。弱类型语言有两个特点:
- 变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
- 变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。
注意:
- 弱类型并不等于没有类型!弱类型是说在书写代码时不用刻意关注类型,但是在编程语言的内部仍然是有类型的。
- 可以使用
type() 内置函数
类检测某个变量或者表达式的类型。
示例代码如下:
a = 10
print(type(a))
print(type("a"))
2、变量类型
2.1 整数类型(int)
有些强类型的编程语言会提供多种整数类型(short、int、 long 等类型的整数),而 Python是弱类型的语言,并且 Python 的整数是不区分类型的。
Python 中的整数包括正整数、0 和负整数。
Python 整数的取值范围是无限的,不管多大或者多小的数字,Python 都能轻松处理。当所用数值超过计算机自身的计算能力时,Python 会自动转用高精度计算(大数计算)。
示例代码如下:
a = 10
print(a)
print(type(a))
print("-------")
b = -88888888888
print(b)
print(type(b))
print("-------")
a = 8888888888888888_888_888
print(a)
print(type(a))
为了提高数字的的可读性,Python 3.x 允许使用下划线_作为数字(包括整数和小数)的分隔符
。通常每隔三个数字添加一个下划线,类似于英文数字中的逗号。下划线不会影响数字本身的值。
2.2 小数/浮点数(float)类型
Python 只有一种小数类型,就是 float。小数的计算结果一般都是不精确的。
Python 中的小数有两种书写形式:小数形式和指数形式。
(1)十进制形式
这种就是平时看到的小数形式,例如 3.14。
书写小数时必须包含一个小数点,否则会被 Python 当作整数处理。
a = 3.1415926
print(a)
print(type(a))
""" 执行结果
3.1415926
<class 'float'>
"""
(2)指数形式
Python 小数的指数形式的写法为:整个表达式等价于 a×10n。
aEn 或 aen
- a 为尾数部分,是一个十进制数;
- n 为指数部分,是一个十进制整数;
- E或e是固定的字符,用于分割尾数部分和指数部分。
a = 12e4
print("a = ", a)
print("a 类型为 ", type(a))
b = -3.14E-2
print("b = ", b)
print("b 类型为 ", type(b))
""" 执行结果
a = 120000.0
a 类型为 <class 'float'>
b = -0.0314
b 类型为 <class 'float'>
"""
注意:
只要写成指数形式就是小数。
2.3 字符串(String)
Python 中的字符串必须由双引号" "或者单引号’ '包围,具体格式为:
"字符串内容"
'字符串内容'
注意:
- Python 字符串中的双引号和单引号没有任何区别。
- 如果字符串中包含特殊字符输出,可以添加反斜杠\进行转义,让 Python 把它作为普通文本对待。
示例代码如下:
str1 = 'I\'m a great coder!'
str2 = "引文双引号是\",中文双引号是“"
print(str1)
print(str2)
(1)字符串的换行
Python 不是格式自由的语言,它对程序的换行、缩进都有严格的语法要求。
换行书写一个比较长的字符串,必须在行尾添加反斜杠\。
str1 = 'I\'m a great coder!. \
引文双引号是\",中文双引号是“。 \
abc123'
print(str1)
num = 1 + 3 / 4 + \
2 * 3
print(num)
print(type(num))
(2)Python原始字符串
字符串中包含特殊字符输出,可以添加反斜杠\进行转义。如果特殊字符比较多,稍有疏忽就会出错。
为了解决转义字符的问题,Python 支持原始字符串。在原始字符串中,\不会被当作转义字符,所有的内容都保持“原汁原味”的样子。
在普通字符串或者长字符串的开头加上r前缀
,就变成了原始字符串,具体格式为:
str1 = r'原始字符串内容'
str2 = r"""原始字符串内容"""
示例代码如下:
rstr = r'D:\Program Files\Python311\python.exe'
print(rstr)
2.4 布尔类型(bool)
Python 提供了 bool 类型来表示真(对)或假(错)。使用 True 来代表,使用 False 来代表。
示例代码如下:
print(5>3)
print(5<3)
""" 执行结果
True
False
"""
2.5 bytes类型
bytes 是 Python 3.x 新增的类型。
bytes 只负责以字节序列的形式(二进制形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。如果采用合适的字符编码方式(字符集),字节串可以恢复成字符串;反之亦然,字符串也可以转换成字节串。
bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件。
示例代码如下:
# 为 bytes() 方法指定字符集
str1 = bytes('bytes() 方法指定字符集', encoding='UTF-8')
print("str1 : ", str1)
# 通过 encode() 方法将字符串转换成 bytes
str2 = "通过 encode() 方法将字符串转换成 bytes".encode('UTF-8')
print("str2: ", str2)
# 通过 decode() 方法将 bytes 转换成字符串
str3 = str2.decode('UTF-8')
print("str3: ", str3)
2.6 input()函数
input() 函数:用于从控制台读取用户输入的内容。它是 Python 的内置函数。
input() 函数的用法为:
str = input(tipmsg)
- str:表示一个字符串类型的变量,input 会将读取到的字符串放入 str 中。
- tipmsg:表示提示信息,它会显示在控制台上,告诉用户应该输入什么样的内容;如果不写 tipmsg,就不会有任何提示信息。
input() 函数总是以字符串的形式来处理用户输入的内容,所以用户输入的内容可以包含任何字符。
示例代码如下:
user_str = input("请输入内容:")
print("打印用户内容:", user_str)
2.7 print()函数
print() 函数:将内容输出在控制台。它是 Python 的内置函数。支持输出一个变量,也可以同时输出多个变量。
print() 函数的详细语法格式如下:
print (value,…,sep=‘’,end=‘\n’,file=sys.stdout,flush=False)
说明:
- value 参数:可以接受任意多个变量或值。
- sep 参数:可以设置的分隔符,默认以空格隔开多个变量。
- end 参数:可以设置print() 函数输出之后操作符,默认值是换行“\n”。
- file 参数:可以指定 print() 函数的输出目标,默认值为系统标准输出 sys.stdout,也可以输出到特定文件中。
- flush 参数:用于控制输出缓存,该参数一般保持为 False 即可,这样可以获得较好的性能。
示例代码如下:
user_name = '赵子龙'
user_age = 18
# 同时输出多个变量和字符串,指定分隔符
print("用户名:", user_name, ",年龄:", user_age, sep='->')
## 结果:用户名:->赵子龙->,年龄:->18
(1)格式化字符串输出
print() 函数使用以%开头的转换说明符对各种类型的数据进行格式化输出。
示例代码如下:
name = "赵云"
age = 18
print("用户名:%s,年龄:%d" % (name, age))
## 结果:用户名:赵云,年龄:18
2.8 Python数据类型转换函数
虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。
Python 提供了多种可实现数据类型转换的常用函数。如图所示:
注意:
在使用类型转换函数时,提供给它的数据必须是有意义的,否则会报错。
示例代码如下:
height = 1.98
# 字符串和浮点类型变量不能直接相连,需要提前将浮点类型转换为字符串
print("身高" + str(height))
三、Python运算符
1、算术运算符
算术运算符也即数学运算符,用来对数字进行数学运算,比如加减乘除。
2、赋值运算符
赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等。
Python 中最基本的赋值运算符是等号=;结合其它运算符,=还能扩展出更强大的赋值运算符。
通常情况下,只要能使用扩展后的赋值运算符,都推荐使用这种赋值运算符。
3、位运算符
位运算按照数据在内存中的二进制位(Bit)进行操作。
4、比较运算符
比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。
4.1 ==
和 is的区别
is 与 ==
有本质上的区别,完全不是一码事儿。
- == 用来比较两个变量的值是否相等。
- is 则用来比对两个变量引用的是否是同一个对象。
示例代码如下:
import time #引入time模块
t1 = time.gmtime() # gmtime()用来获取当前时间
t2 = time.gmtime()
print(t1 == t2) #输出True
print(t1 is t2) #输出False
5、逻辑运算符
6、三目运算符
Python 使用 if else 实现三目运算符(条件运算符)的格式如下:
exp1 if condition else exp2
说明:condition 是判断条件,exp1 和 exp2 是两个表达式。
- 如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;
- 如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。
这是一种类似于其它编程语言中三目运算符 ? : 的写法。
Python 是一种极简主义的编程语言,它没有引入 ? : 这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能。
假设,获取两个数字中较大的一个数?
(1)使用 if else 语句
a = 3
b = 5
if a > b:
max = a;
else:
max = b;
print("max = ", max)
(2)使用三目运算符
max = a if a > b else b
print("max = ", max)
Python 三目运算符支持嵌套,
如此可以构成更加复杂的表达式。在嵌套时需要注意 if 和 else 的配对。
a if a>b else c if c>d else d
应该理解为:a if a>b else ( c if c>d else d )
虽然 Python 运算符存在优先级的关系,但是不推荐过度依赖运算符的优先级,这会导致程序的可读性降低。一般建议:
- 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,可以尝试把它拆分来书写。
- 应尽量使用 ( ) 来控制表达式的执行顺序。
– 求知若饥,虚心若愚。