一、python入门
1.1Python环境搭建
1.2 注释
- Python 单行注释
Python 使用井号#作为单行注释的符号 - Python 多行注释
Python 使用三个连续的单引号’''或者三个连续的双引号"""注释多行内容
1.3 python标识符命名规范
简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。
-
命令规则
- 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
- 标识符不能和 Python 中的保留字相同
- Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符
- 除非特定场景需要,应避免使用以下划线开头的标识符。
- 以单下划线开头的标识符(如 _width),表示不能直接访问的类属性,其无法通过 from…import* 的方式导入;
- 以双下划线开头的标识符(如__add)表示类的私有成员;
- 以双下划线作为开头和结尾的标识符(如 __ini__),是专用标识符
- 应尽量避免使用汉字作为标识符
-
标识符的命名,除了要遵守以上这几条规则外,不同场景中的标识符,其名称也有一定的规范可循
- 当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母,例如 game_mian、game_register 等。
- 当标识符用作包的名称时,应尽量短小,也全部使用小写字母,不推荐使用下划线,例如 com.mr、com.mr.book 等。
- 当标识符用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为 Book。
- 模块内部的类名,可以采用 “下划线+首字母大写” 的形式,如 _Book;
- 函数名、类中的属性名和方法名,应全部使用小写字母,多个单词之间可以用下划线分割;
- 常量命名应全部使用大写字母,单词之间可以用下划线分割;
1.4 Python关键字(保留字)
保留字是 Python 语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
1.5 Python内置函数
Python 解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。
>>> dir(__builtins__)
二、python变量类型和运算符
2.1 变量的定义和使用
a,b=1,2
2.1.1 Python是弱类型的语言
弱类型语言有两个特点:
- 变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
- 变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。
2.2数值类型
Python中数有四种数值类型:整数、长整数、浮点数和复数。
-
整型, 如 1, -1, 0
-
长整型,是比较大的整数,如 234234243324
-
浮点型,如 1.23、3E-2
-
复数,如 1 + 2j、 1.1 + 2.2j
在 Python 中查看类型,使用 type() 内置函数。
>>> type(2)
int
>>> type("2")
str
2.2.1十六进制、八进制和二进制
-
十六进制:在 Pthon 中使用 0x 开头的“数字”表示十六进制的数。对于 9 以后的数字,没有对应的阿拉伯数字。则使用 a 表示 10 , b 表示 11 ,依次类推,最后 f 表示 15。 在十六进制表达中不区分“字母”的大小写
-
八进制:在 Python 中使用 0o 开头的数字表示八进制, 注意 0 后面是英文字母 o
-
二进制:0b 开关的表达式表示二进制。在二进制表达式中,只能使用数字 0 与 1
hex1 = 0x45
hex2 = 0x4Af
print("hex1Value: ", hex1)
print("hex2Value: ", hex2)
hex1Value: 69
hex2Value: 1199
2.2.2Python 数值类型转换
-
int(x) 将 x 转换为一个整数。
-
float(x) 将 x 转换到一个浮点数。
-
complex(x) 将 x 转换到一个复数,实数部分为 x ,虚数部分为 0 。
>>> a = 3.1415926
>>> int(a)
3
##转换为复数表达式。
>>> complex(a)
(3.1415926+0j)
2.2.3数值和表达式
‘/’除法运算的结果为小数,即浮点数
#无论操作数是整数还是浮点数,结果总都是浮点数
>>> 4.0 / 2
2.0
>>> 1 / 1
1.0
如果你想丢弃小数部分,即执行整除运算,可使用双斜杠 // 。
#无论操作数是整数还是浮点数,得到的商不保留浮点数的尾数
>>>4//2
2
>>>5.0//2
2.0
求余(求模)运算符,x % y的结果为x除以y的余数
>>> 10 % 3
1
>>> 2.75 % 0.5
0.25
>>> 10 % -3
-2
>>> 10 // -3
-4
乘方(求幂)运算符。 请注意,乘方运算符的优先级比求负(单目减)高,因此 -32 等价于 -(32) 。如果你要计算的是 (-3)**2 ,必须使用括号进行明确。
>>> -3 ** 2
-9
>>> (-3) ** 2
9
2.3Python字符串
2.3.1字符串连接和复制
#在操作两 个整型或浮点型值时, + 是相加操作符。但是,在用于两个字符串时,它将字符串 连接起来,成为“字符串连接”操作符。
>>> 'Alice' + 'Bob'
'AliceBob'
#如果你对一个字符串和一个整型值使用加操作符,Python就不知道如何处理
>>> 'Alice' + 42
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-4e9a9e71481a> in <module>
----> 1 'Alice' + 42
TypeError: can only concatenate str (not "int") to str
##在用于两个整型或浮点型值时,* 操作符表示乘法。 但* 操作符用于一个字符串 值和一个整型值时, 它变成了“字符串复制”操作符。
>>> 'Alice' * 5
'AliceAliceAliceAliceAlice'
2.3.2Python 访问字符串中的值
>>> var2 = "Runoob"
>>> print ("var2[1:5]: ", var2[1:5])
var2[1:5]: unoo
#in 关键字的用法类似于操作系统,用于判断一个某个元素是否在一个列表或字符串中。
>>> if( "H" in a) :
>>> print("H 在变量 a 中")
>>> else :
>>> print("H 不在变量 a 中")
H 在变量 a 中
#not 关键字用于取反
>>> if( "M" not in a) :
>>> print("M 不在变量 a 中")
>>> else :
>>> print("M 在变量 a 中")
M 不在变量 a 中
2.3.3Python字符串格式化
用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
>>> "我叫%s,今年%d岁!" % ('小明', 10)
'我叫小明,今年10岁!'
Python 字符串格式化符号:
-
%s : 格式化字符串 ;
-
%d : 格式化整数 ;
-
%f : 格式化浮点数字,可指定小数点后的精度 ;
指定小数精度
%m.nf
%.nf
m 表示最小宽度,n 表示输出精度,.是必须存在的。
f = 3.141592653
# 最小宽度为8,小数点后保留3位
print("%8.3f" % f)
# 最小宽度为8,小数点后保留3位,左边补0
print("%08.3f" % f)
# 最小宽度为8,小数点后保留3位,左边补0,带符号
print("%+08.3f" % f)
2.3.4单引号字符串以及对引号转义
单引号和双引号,大多数情况完全相同
'Let's go!'
报错
#反斜杠( \ )对引号进行转义
'Let\'s go!'
2.3.5 Python原始字符串
转义字符有时候会带来一些麻烦,例如我要表示一个包含 Windows 路径D:\Program Files\Python 3.8\python.exe这样的字符串,在 Python 程序中直接这样写肯定是不行的,不管是普通字符串还是长字符串。因为\的特殊性,我们需要对字符串中的每个\都进行转义,也就是写成D:\Program Files\Python 3.8\python.exe这种形式才行。
在普通字符串或者长字符串的开头加上r前缀,就变成了原始字符串,具体格式为:
str1 = r'原始字符串内容'
str2 = r"""原始字符串内容""
rstr = r'D:\Program Files\Python 3.8\python.exe'
print(rstr)
2.3.6 Unicode 字符串
https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896
Python 程序代码中可能存在若干种语言文字的标识符和字符串用于显示、输出或注释。为了存储和显示这些不同的语言文字,不同的国家和组织制定了若干种字符集标准。常见的字符集有 ASCII 字符集、简体中文 GB2312 字符集、繁体中文 Big5 字符集、简体中文 GB18030 字符集、Unicode 字符集等。
- ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是由美国国家标准学会(American National Standard Institute,ANSI)制定的基于拉丁字母的一套电脑编码系统,ASCII 字符集是现今最通用的单字节编码系统,等同于国际标准 ISO/IEC 646。
- GB2312和GB18030字符集是由中国制定的汉字编码字符集
- Big5字符集是繁体中文社区中最常用的电脑汉字字符集标准
- Unicode 是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
在Python3中,所有的字符串都是Unicode字符串,在 Unicode 中有很多方式将数字 23383 表示成程序中的数据,包括 UTF-8、UTF-16、UTF-32
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D05wg0Cx-1656062146825)(https://boostnote.io/api/teams/dlm1ZMj21/files/0971c779c2cf97bc40e136e29a66b04b029eb5ef84f40cae80904530464c4d1c-image.png)]
2.3.7 Python三引号
Python 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
>>> para_str = """这是一个多行字符串的实例
>>> 多行字符串可以使用制表符
>>> TAB ( \t )。
>>> 也可以使用换行符 [ \n ]。
>>> """
>>> print (para_str)
2.4 Python bytes类型及用法
bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的。
如果采用合适的字符集,字符串可以转换成字节串;反过来,字节串也可以恢复成对应的字符串。
#利用字符串的encode()方法编码成bytes,默认使用utf-8字符集
a= “学习”.encode(‘utf-8’)
#调用 bytes 对象的 decode() 方法将其解码成字符串
st= a.decode(‘utf-8’)
2.5 Python bool布尔类型
- True 和 False 是 Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的大小写,否则解释器会报错。
- bool 类型就是用于代表某个事情的真(对)或假(错),如果这个事情是正确的,用 True(或 1)代表;如果这个事情是错误的,用 False(或 0)代表。
2.6 运算符
2.6.1 Python赋值运算符
#连续赋值
A=B=C=100
#扩展后的赋值运算符
x += y #类似于x = x + y
x -= y #类似于x = x - y
= 和 == 是两个不同的运算符,= 用来赋值,而 == 用来判断两边的值是否相等
2.6.2 Python三目运算符(三元运算符)
exp1 if contion else exp2
condition 是判断条件,exp1 和 exp2 是两个表达式。如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。
2.6.3Python 运算符优先级
运算符说明 | Python运算符 | 优先级 | 结合性 |
---|---|---|---|
小括号 | ( ) | 19 | 无 |
索引运算符 | x[i] 或 x[i1: i2 [:i3]] | 18 | 左 |
属性访问 | x.attribute | 17 | 左 |
乘方 | ** | 16 | 右 |
按位取反 | ~ | 15 | 右 |
符号运算符 | +(正号)、-(负号) | 14 | 右 |
乘除 | *、/、//、% | 13 | 左 |
加减 | +、- | 12 | 左 |
位移 | >>、<< | 11 | 左 |
按位与 | & | 10 | 右 |
按位异或 | ^ | 9 | 左 |
按位或 | | | 8 | 左 |
比较运算符 | ==、!=、>、>=、<、<= | 7 | 左 |
is 运算符 | is、is not | 6 | 左 |
in 运算符 | in、not in | 5 | 左 |
逻辑非 | not | 4 | 右 |
逻辑与 | and | 3 | 左 |
逻辑或 | or | 2 | 左 |
逗号运算符 | exp1, exp2 | 1 | 左 |
4+4<<2
#类似于(4+4) << 2
- Python 运算符结合性
100 / 25 * 16,/和*的优先级相同,应该先执行哪一个呢?
所谓结合性,就是当一个表达式中出现多个优先级相同的运算符时,先执行哪个运算符:先执行左边的叫左结合性,先执行右边的叫右结合性。