Python基础知识点大全(cover:B站求知讲堂)
python介绍
- python是面向对象的解释性计算机程序设计语言,胶水语言
- 需要解释器(翻译)成机器语言
- 1991年公开发行第一版,1989年由guido van rossum开发,作为ABC语言的继承
- guido是monty python喜剧团体的爱好者,所以将这个语言命名python
- 2000年发布2.0,2008发布3.0,2020年开始不再更新2.0
python特点
1、运行速度较慢(编译型语言-解释性语言),差别在毫秒级
2、代码不能加密,已源码发布
3、强制缩进
4、GIL全局解释器锁:在任意时刻,只有一个运行在解释器中运行,对python虚拟机的访问由全局解释器锁GIL来控制,这个锁保证同一时刻只有一个线程在运行。python多线程不是真正多线程。但因为CPU效率较高,人感受不到区别。
python可以做什么
1、WEB:Flask、django、tornado
2、爬虫开发:scrapy、urllib、requests、beautifulsoup、selenium
3、数据分析BI:pandas、numpy、matplotlib、pyplot、scipy、seaborn
4、机器学习:scikit-learn、tensorflow、keras、opencv
5、运维开发:
6、人工智能
-
python开发IDE
1、notepad++ 、sublime、pycharm
python变量和常量
-
取名规则,大小驼峰法、见名知意
-
import keyword
-
keyword.keywordlist # 查看系统的关键字不能作为变量名
数据类型、数据结构
基本数据类型:int、float、bool
高级数据类型,数据结构:字符串、列表、元组、字典、集合
- 序列是一组按顺序排列的数据集合
- python内置序列类型:字符串、列表、元组
- 序列支持索引和切片操作
- abs()函数,求绝对值;ord()函数,返回ASCII码值;chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象),ASCII码转字符;id()函数,查看内存地址;join()函数,字符串函数,用字符连接字符串的每个元素;swapcase()字符串函数,转换所有字母的大小写;
- 公用方法:in + * not in 通用方法len()、shuffle()、del()、sorted
- a.isdigt() 判断a是否是整数
list列表:
-
是有序的数据集合,支持增删改查,数据可变,内存地址不变。数据项可以是任何类型的数据,比如:列表、元组、字典、字符、数字、字符串等。
-
常用方法:append、count、extend、index、insert、pop、remove、reverse、sort、keys、values
-
列表推导式
# 列表推导式 lst = [x**2 for x in range(1,5) if x%2==0] # [4,9] lst = [x**2 if x%2==0 else 0 for x in range(1,5)] # 有else,if放的位置不一样 # [0, 4, 0, 16]
tuple元组
- 是不可变的序列,不能做任何修改,只有一个元素要加逗号,不能对元组元素进行赋值操作,可以对元组中的列表元素进行修改。创建元组可以不加括号 a = 10,20,30。
- zip()函数合并多个列表,元祖,返回一个zip对象,zip对象可以转换成字典、列表。
- 列表推导式同样适用于元组,生成一个生成器,可以转换成元组、列表。
- 生成器只能访问一次。
dict字典
- 键值对,通过键访问效率高(类似索引),支持增删改查,没有下标概念(不是序列类型),键不可变不重复,值可以重复可以是任意类型。
- dict.keys() dict.items() dict.values() dict.update()修改添加键值对 dict.add()。可以嵌套
- dict.sort_values()按值排序 dict.sort_keys() 按键排序
- sorted(dcit.items() , key=‘a’) 按键a排序。
- sorted()函数也可以对元祖进行排序,排序后返回的是列表
- a = dict.fromkeys([‘name’,‘age’,‘gender’]),通过fromkeys创建一个空字典
- popitem() 随机移除一个键值对
set集合
- set集合是无序不重复元素序列
- set.add() 添加元素
- set.clear()清空集合
- set1.defference(set2)求差集 同 set1-set2
- set1.intersection(set2)求交集 ,取相同元素,同set1&set2
- set1.union(set2)求并集 ,同set1 | set2
- set1.pop()删除元素 ,返回删除的元素
- set1.discard(3) 指定移除3
- set1.update(4) 插入4,set1.update(set2)
- 集合不支持索引和切片,类似字典,只有key没有value
格式化输出
-
格式化输出,%占位符,后面跟变量类型,%s %d %f %i %c:
print(‘我的名字是%s’ % ( name ))
-
format方式:
print(‘我的名字是{1}年龄是{0}’.format(age, name )) 前面可以设定变量值提取的顺序
-
格式化字符串
u:表示unicode,以unicode编码chucun,能够储存中文。python3中默认以unicode编码储存字符串
b:以Ascll码形式储存字符串,无法储存中文
r:表示raw string,不识别转义
f:表示format,用来格式化字符串
流程控制
1、顺序流程:默认从上到下执行代码
2、选择流程 判断语句:if … elif … else
3、循环流程、循环语句:for、while、continue、break,一定要有结束条件,不然会陷入死循环
4、流程控制:pass、函数中return的使用
运算符
-
:+ - * / // ** % = : -= += /= **= *= & | or and not ~ == != > < <= >= >> <<
-
三目运算符
#三目运算 #格式是 : 表达式?真:假 ''' 不存在这种 result = (8>10) ? '正确' : '错误' print(result) ''' # 真的结果 if 表达式 else 假的结果 a=5 b=6 print = (a+b) if a>b else (a-b) # 结果为后面那个,假的结果-1
-
运算符重载: + 实际上是类方法
__add__
() 可以在类里面重新定义__add__
()
函数基础
1、函数的定义,命名规则
2、函数的参数:传参、调用、缺省参数(参数默认值)、*args 、kwargs、函数中所有的参数,不管是字典型还是字符串型等可变与不可变型的数据结构,都是属于*args;但是如果是这种key=value键值对的形式传入的参数,那么这种参数就属于kwargs。
3、参数arg、*args可变参数(元组、列表)、**kwargs(课表关键字参数字典)三个参数的位置必须是一定的
4、*kwargs在调用的时候,参数前面要加 *
def stuinfo(**kwargs):
print(kwargs) # 打印字典
print(*kwargs) # 打印key
for i,v in kwargs.items(): # 遍历键值
print(i,v)
dictA= {
'name':'marvin','age':30}
if __name__ == '__main__':
stuinfo(**dictA) # 传参
5、列表推导式
list1 = [1,2,3,4,5,6,7,8,9]
list2 = [ list1[i] for i in range(len(list1)) if i%2==0] # 返回list1偶数位的元素
list2 = list1[0::2]
6、函数返回值return,执行了return函数体就执行完毕退出
7、变量作用域:全局变量、局部变量、global
8、python中万物皆对象
匿名函数lambda
1、(lambda x,y : x if x>y else y)(12 ,2 ) # 后面跟参数可以直接调用
2、g = lambda x,y : x*y # 一般定义方式
g(12,2) # 调用方式
生成器
# 生成器
def func():
n = 0
while True:
n += 1
yield n # return n 并 暂停
g = func()
print(next(g)) # print(g.__next__()) #1
print(next(g)) # print(g.__next__()) #2
print(next(g)) # print(g.__next__()) #3
# 练习,打印斐波拉契数列
def fib(length):
n = 0
a, b = 0, 1
print(0)
while n < length - 1: # 第一个元素0已经打印
print(b)
a, b = b, a + b
n +=