Bootstrap

python期末知识点总结_Python知识点整理大总结

b0e4420cc1bfe247f970ec06bcdd8884.png

Python知识点整理

了解背景

历史

1989年,Guido,维护系统

1991年,V1发布

2000年,V2发布

2008年,V3发布,不兼容V2

特点

简单,易上手

功能丰富

开源

跨平台

应用领域

运维

桌面

爬虫

游戏

Web开发

科学计算

人工智能

搭建环境

官网下载Python解释器

安装时注意:勾选Add Python to PATH

默认路径:C:甥敳獲webAppDataLocalProgramsPython

两种运行方式

交互式执行: python

脚本式执行: python xx.py

变量和常量

说明:Python中没有常量声明

变量的使用

创建变量

age = 20

n1 = n2 = n3 = 10

uname, age = 'tom', 20

输出变量

print( age )

print('年龄为:'+str( age ) )

print('年龄为:', age )

print('年龄为:%d'%age )

查看类型

type( age )

查看识别符/内存地址

id( age )

数据类型

不可变类型

数字

int

无限精度

bool: True/False

float

相当于其他语言中的double

complex

复数

字符串

str

单引号/双引号/三引号

长度:len( )

取成员: [ i ]、 [ start : end ]

API

startswith()

endswith()

uppercase()

lowercase()

.....

元组:不可修改的有序数组 ( )

myTuple= (10, 20, 30)

myTuple= tuple( [10, 20, 30] )

长度:len( )

取成员: [ i ] 、 [ start : end ]

不可修改的数组不能添加/删除元素

范围:不可修改的数字序列

range(10)

range(0, 100, 5)

range(10, 0, -1)

可变类型

列表:可修改的有序数组 [ ]

myList = [10, 20, 30]

长度:len( )

取成员: [ i ] 、 [ start : end ]

添加元素

myList.apend( e )

myList.insert( i, e )

删除元素

del myList[ i ]

myList.pop( )

myList.pop( i )

集合:可修改的无序无重复值的数组 { }

集合是无序的没有重复值的数组——元素没有下标

mySet = { 10, 20, 30 }

添加元素: mySet.add( 新值 )

删除元素: mySet.remove( 值 )

字典:可修改的有键的数组 { }

保存若干键值对的数组

myDict = { 'uname': 'ding', 'age': 20 }

KEY的引号不能省略

添加元素: myDict[ 'phone' ] = '1345023439'

删除元素: del myDict[ 'phone' ]

获取元素

myDict['age']

如果字典中没有age则抛出KeyError

myDict.get('age', 18)

如果字典中没有age不抛出异常,且可以使用指定的默认值

运算符

算术

+

-

*

/

%

求余

//

取商

**

求幂

注意:没有++和--

比较

>

>=

<

<=

==

会进行隐式类型转换

!=

注意:没有===和!==,可使用 is 和 is not 代替

逻辑

and

or

not

&

|

^

~

<<

>>

赋值

=

+=

-=

*=

/=

%=

//=

**=

特殊

身份运算符

is

is not

成员运算符

in

not in

逻辑结构

顺序执行

选择执行

if 判定条件 : 执行主体

if 判定条件 : 执行主体 else : 执行主体

if 判定条件 : 执行主体 elif 判定条件 : 执行主体 else : 执行主体

循环执行

while 循环条件 : 循环主体

for 变量名 in range/list/tuple/set/dict/str : 循环主体

通用小程序

九九乘法表

闰年问题

质数问题

.....

函数和对象

函数

声明函数

def add(n1, n2) : sum = n1 + n2 return sum

调用函数

result = add(10, 20)

带默认值的形参

def connect(host, port=3306): pass

connect('127.0.0.1', 3308)

connect('127.0.0.1')

注意:带默认值的形参必须在形参列表的尾部

关键字实参

def connect(host, port): pass

connect( '127.0.0.1', 3306 )

错误:connect( 3306, '127.0.0.1')

connect( port=3306, host='127.0.0.1')

可变长度的形参

def add( *args ): pass

add() add(10) add(10, 20, 30)

def add( **args ): pass

add() add(n1=10) add(price=10, count=20, age=30)

变量/函数的作用域

L:Local

def inner(): age = 10

E:Enclosing

def outer(): age = 20 def inner(): nonlocal age age = age +1 print(age) return inner

G:Global

age = 30 def inner(): global age age = age+1 print(age)

B:Built-in

Python解释器提供的内置函数:len()/id()/type()/int()/str()/tuple()....

对象

封装

class Emp: nation = '中国' #类属性,使用类型名访问Emp.nation def __init__(self, ename, age): self.ename = ename #实例属性 self.age = age def printInfo(self): print(self.ename, self.age)

e1 = Emp('ding', 20)

继承(支持多继承)

class Emp: nation = '中国' #类属性,使用类型名访问Emp.nation def __init__(self, ename, age): self.ename = ename #实例属性 self.age = age def printInfo(self): print(self.ename, self.age)

class Coder( Emp ): def __init__(self, ename, age, lang): super().__init__(ename, age) self.lang = lang

多态

class Emp: def printInfo(self): print(self.ename, self.age)

class Coder( Emp ): def printInfo(self): print(self.ename, self.age, self.lang)

异常处理

try: n1 = int( input('请输入被除数:') ) n2 = int( input('请输入除数') ) n3 = n1 / n2 print('除法结果为:', n3) except TypeError as err: print(err) except Exception as err: print(err) finally: print('除法结束') print('-----end-----')

官方函数和对象

包和模块

模块

一个文件就是一个模块,不需要导出内部成员,但可以导入其它模块的内部成员

import user user.login()

from user import login login()

一个目录就是一个包,其中可以包容若干模块文件,以及一个包对象初始化文件:__init__.py

import controller.user as cu cn.login()

from controller import user user.login()

from controller.user import login login()

官方常用模块

import math math.pi/ceil()/floor/sin()/fabs()....

import random random.randrange(start,end) / choice() / shuffle()

import time time.time() time.localtime() time.strftime('%Y-%m-%d %H:%M:%S', t) time.strptime() time.mktime()

import json json.dumps() #序列化(Obj=>String) json.loads()#反序列化(String=>Obj)

import os.path os.abspath( './' )

第三方函数/对象/库/框架

pip

PIP是随同Python一同安装的第三方模块维护工具,作用类似于NPM

与NPM不同点:pip下载的第三方模块不放在当前项目中,而放在Python安装目录下

pip list #列出已安装的所有模块

pip show 模块名 #显示指定模块的详细信息

pip install 模块名 #下载并安装指定模块

pip install 模块名 -i 仓库地址

pip install --upgrade 模块名 #升级指定的模块

pip uninstall 模块名

演示:使用pip下载第三方模块: ①mysql-connector-python(SQL方式) ②pymysql(ORM方式)

① pip install mysql-connector-python

② 启动MySQL数据库服务器

③ import mysql.connector conn = mysql.connector.connect(host='', port='', user='', password='', database='')

django

概述:是一个基于Python的Web应用开发框架,功能强大(必须在特定的目录下放置特定功能模块文件)

路由系统

①安装Django包 pip install django

②创建Django项目 django-admin startproject 项目名

③进入项目主目录 cd 项目名

④启动项目提供的Web服务器 python manage.py runserver

⑤在项目中创建App python manage.py startapp product

⑥在项目主App中注册新App:主App/settings.py/INSTALLED_APPS

⑦在App下views.py中创建路由处理函数 def doProductList(req):

⑧在项目主App中urls.py声明新的路由 urlpatterns = [ path('product/list', product.views.doProductList) ]

读取请求/发送响应

读取请求数据有三种形式

客户端: GET /user/login?uname=tom&age=20 服务器: req.GET['uname']、 req.GET.get('uname', 'x')

客户端: POST /user/register BODY: uname=tom&age=20 服务器: req.POST['uname']、 req.POST.get('uname', 'x')

客户端: GET /user/login/tom/20 服务器: path('user/login//') def userLogin(req, uname, age):

ORM映射

理论:操作数据库使用SQL语句的话,相当于Object打散为SQL字符串,破坏了对象的封装;

解决方案:使用ORM映射代替提交SQL,例如: u2 = User('','',') u2.save() / u2.delete() / u2.update( ) / u2.get( ) 底层就会代替用户发送一条INSERT/DELETE/UPDATE/SELECT语句到指定的数据库

实现方法

①手工匹配:手工编写SQL、手工编写Object、手工编写映射关系

②正向生成:手工编写Object,使用ORM工具自动生成SQL语句

③逆向生成:手工编写SQL,使用ORM工具自动生成Object

QuerySet的使用

;