学习 Python 内容! 官网学习链接
文章目录- 前言
- 一、简介
- Python 语言的特点
- 二、Python 解释器
- 文件模式
- 交互模式
- 三、运算
- 四、列表
- 五、if 语句
- 六、for 语句
- 七、函数
- 八、数据结构
- 九、模块
- 十、输入和输出
- 十一、异常
- 十二、类
- python 中的一个语句可以进行很多复杂操作(语法糖)
- 使用缩进来区分代码块的。C++ 和 java 是通过 {} 来区分
- 变量无需声明,可以直接用
- 容易扩展
版本为 Python3.10
文件模式- 执行 python 文件(.py结尾)
输入 python3 会直接进入到一个 python 解释器中,python 解释器可以用来直接执行一个 python 文件(python 可以像其它语言一样,放到一个文件里来写),类似于写 shell 脚本。
运行 python 代码文件有两种方式:- python3 文件名.py
- ./文件名.py,文件需要有可执行权限,如果没有执行:chmod +x 文件名.py
- 交互式执行(ipython3 支持高亮)
- 注释用 #, 注释语句在单独一行,或者是一个语句后面两个空格
- 单独一句一句的执行,支持自动补全(按两下 tab 键)
- 上下键可以切换之前执行的语句
- 退出,通过输入 exit() 或者快捷键 ctrl+d
-
数字
- / :默认是浮点数除法,//:整除,是向下取整(-1 // 3 (是负三分之一),向下取整结果为 -1)。C++ 的整除是向零取整(-1 / 3 是负三分之一,向零取整为零)
- **:乘方运算
- 变量不用定义类型,直接用即可。n = 20,注意变量未赋值的话不能直接用
- 交换两个变量:a, b = b, a
- 交互模式下 _ 表示上一个表达式的值
-
字符串
-
字符串:python 里的字符串和 C++ 中一样的,区别在于 python 中单引号和双引号都可以表示字符串,没有区别。python 中的字符串是不能修改的
-
下标:
- python 中的字符串和列表都是既可以从前往后访问,也可以从后往前访问。
- 下标加上 - 表示从右往左数,从右往左数的时候下标从 1 开始。不加 -,表示从左往右数,下标从 0 开始
-
切片
- 区间是一个左闭右开的区间,word[0:2]
- 省略前面的时候,前面默认是 0,省略后面的时候,后面默认是字符串长度。word[:2] word[4:]
- 支持负数。word[-2:] word[-5,4]
- 支持相加。word[:2] + word[2:]
- 直接操作下标不能越界,但是切片是可以越界的
-
len:可以求所有类型的长度
-
-
类比 C++ 中的数组。用中括号([])表示,里面每一项元素用逗号(,)隔开,数组里每一项元素类型可以不一样
a = [1, 4, 9] b = [1, 2.0, 'yjx', [2,3]] x, y, z = a
-
可以通过下标来访问元素,支持切片操作。元素支持修改,与字符串不同。x[0] = 4,x[1:3] = ['a', 'b']
-
浅拷贝
-
支持相加操作,效果是将两个数组拼接到一起
-
添加元素:a.append(6) 或者 a += [7],在列表末尾添加元素
-
len(a):求列表 a 的长度,sroted(a):对列表进行排序
-
x[:] = [],[]:空。清空一个数组
-
二维数组:列表是支持嵌套的,就是一个二维数组,x = [[1,2], [3,4]]
-
a, b = 0, 1 python支持复合赋值方式:第一项赋值给第一个变量,第二项赋值给第二个变量,以此类推…
>>> x = int(input("Please enter an integer: ")) # 读入一个整数,通过 int 函数将字符串转化成整数
Please enter an integer: 42
>>> if x < 0:
... x = 0
... print('Negative changed to zero')
... elif x == 0:
... print('Zero')
... elif x == 1:
... print('Single')
... else:
... print('More')
...
六、for 语句
python 中的 for 循环:有一堆东西,通过 for 循环进行一个一个枚举,不支持算术运算符,不能直接实现像 C++ 中的 for (Int i = 0; i < 10; i ++) 这种操作
-
循环遍历一个列表
words = ['cat', 'window', 'defenestrate'] for w in words: print(w, len(w))
-
循环遍历一个字典
-
用 range 来实现一个通常的 for 循环
range():会返回一个左闭右开的区间for i in range(0, 10) print(i)
range 可以实现倒序:range(9, -1, -1),第三个参数为公差
只有一个参数时:range(10):默认是等价于 range(0, 10)
- python 不写返回值的话,默认返回一个 None(类似于 C++ 中的 NULL)
- python 中是可以定义重名函数的,重名的函数下一个会将上一个覆盖掉
- 函数参数可以不用写变量类型,python 会自动判断变量类型
- 设置默认值的变量一定是要连续的
- 函数可直接赋值:f = g,其中 g 和 f 都是函数
- 解包:*,将列表中的元素展开成几个用逗号隔开的变量,赋值给函数的参数,当作函数的参数来调用。解包一个列表是用 *,解包一个字典是用 **
-
列表
- 列表推导式:像倒装句:
b = [i *i for i in range(10)] # b里面的每个元素是 i*i,i 是枚举[0,9]
- 列表推导式:像倒装句:
-
元组
- a(1, 2, 3),注意是用小括号,列表是用中括号。和列表操作类似,唯一区别为列表里的元素是可以修改的,元组里的元素是不可以进行修改的
- 可以将一个元组赋给一个变量:b = (1, 2, 3),括号可以省略:b = 1, 2, 3。也可以将一个元组反过来赋给若干个变量:x, y, z = b,其中 x = 1 y = 2 z = 3 (解包操作)
- 交换:y, x = x, y
-
集合(set)
类比于 C++ 的 set- 定义: a = se(), a = {1, 2, 3},{}既可以表示集合也可以表示字典,区分主要看其里面存的是 key-value 对还是单独的值,如果是 key-val 对那么就是字典,如果是单独的值那么就是 集合
- 添加元素:a.add(1)。相同元素只保留一个,如果新插入的元素在集合中出现过,那么新元素不会插入到集合中
- 作用:一般是用来对列表进行判重‘
a = {1,2,2,3,5} set(a) # 结果为去重后的集合 a = list(set(a)) # 去重后的结果还是列表类型
-
字典(dict)
- 定义 tel = {'jack':4096,'sape':4139}
- 修改:tel['jack'] = 8888
-
为什么需要模块?答:一个庞大项目如果将所有的内容写到一个文件里那么是很难调试的,需要将一个庞大的项目拆分成若干个模块。在项目开发中采用树型结构,每一个文件夹代表一个模块。
-
引入一个自己定义的模块,在其它文件中引用
from 文件路径(.隔开的) import 文件/函数/类,引入多个时,每一个用 , 隔开 -
引入一个函数时并重命名
- 为什么需要重名:不同的文件里的同名函数引入到一个文件里会发生冲突
- from 文件路径 import 函数1 as 别名,函数2 as 别名
-
python 中已经实现好了大量模块,安装后直接 import 进来即可
- 可以用 print 格式化字符串,% ():传入对应的参数,就可以像 C++ 一样格式化输出了
- 读写文件
- 写内容进文件
- 从文件中读内容
-
fin.read() 读取文件所有内容
-
fin.readlines() 读取所有行,会返回一个列表
-
逐行读入
-
- 写内容进文件
作用:当打开一个网站出现 502 错误时,502 错误就是程序发生了异常,会将异常捕获,用户就不会看到 502 了会跳到一个 404 页面
def divide(x, y):
try: # 尝试执行这一个代码块的内容
res = x/y
except Exception as e: # 如果出现异常,执行下面的内容
print(str(e)) ## 直接输出异常,程序不报错,程序仍然正常执行,如果不采用异常处理,操作之后后面的程序就不会执行了
else: # 如果没有发生异常,不会执行异常处理的内容,会执行 else 里的内容
print("result is", res)
finally: # 无论是否发生异常都会执行下面的内容,一般用来关闭数据库
print("executing finally clause")
十二、类
- 定义
__self__init(self): 固有函数,类似于 C++ 中构造函数,注意 self 一定要写,构造函数中也可以传入参数。python 中的成员变量是写在函数内的,C++ 中的成员变量是写在函数外的。python 类和函数的用法一样
a = Car():实例化一个对象,update:成员函数,a:成员变量
2. 继承(用括号)



