python基础知识

python基础

python的诞生

2002年,python 2.x
2008年,python 3.x

python的命名

马戏团的名称

python简介

  • 简单、易学
  • 持快速开发.
  • 跨平台.
  • 开源.
  • 可扩展.
  • 可嵌入.
  • 大量的标准库和活跃的交流群.
  • 可用于各种各样的开发.

应用领域

系统编程
提供API(应用程序编程接口),方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。

图形界面开发
Python在图形界面开发上很强大,可以用Tkinter/PyQT框架开发各种桌面软件。

科学计算
Python是一门很适合做科学计算的编程语言,从1997年开始,
NASA就大量使用Python进行各种复杂的科学运算,随着
NumPy、SciPy、Matplotlib、Enthought librarys等众多程序
库的开发,使得Python越来越适合做科学计算并绘制高质量
的2D和3D图像。

数据库编程
程序员可通过遵循PythonDB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server 、
Oracle 、 Sybase 、 DB2 、MySQL、SQLite等数据库通信。另外,Python自带有一个Gadfly模块,提供了一个完整的SQL环境。

网络编程
提供丰富的模块支持Sockets编程,能方便快速地开发分布式应用程序。

文本处理
Python提供的re模块能支持正则表达式,还提供SGML、
XML分析模块,许多程序员利用Python进行XML程序的开发。

Web开发
Python拥有很多免费数据函数库、免费web网页模板系统以及与web服务器进行交互的库,可以实现web开发,搭建web框架。目前最火的Python web框架Django, Django官方的标语把Django定义为the framework for perfectionist with deadlines (完美主义者使用的高效率 web框架)。用Python开发的Web项目小而精,支持最新的XML技术,而且数据处理的功能较为强大。

自动化运维
Python是运维人员广泛使用的语言,能满足绝大部分自动化运维需求,包括前端和后端。

金融分析
利用Numpy、Pandas、Scipy等数据分析模块,可快速完成金融分析工作。目前,Python是金融分析、量化交易领域里使用最多的语言。

多媒体应用
Python 的 PyOpenGL 模块封装了“OpenGL应用程序编程接口”,能
进行二维和三维图像处理。

网络爬虫
在爬虫领域,Python几乎是霸主地位,提供了Scrapy 、 Request 、BeautifulSoap、urllib等工具库,将网络中的一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。

游戏开发
在网络游戏开发中Python也有很多应用。相比Lua,Python有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑。另外,Python 更适合作为一种Host语言,即程序的入口点是在Python那一端会比较好,然后用C/C++写一些扩展。Python非常适合编写1万行以上的项目,而且能够很好地把
网游项目的规模控制在10万行代码以内

人工智能
NASA和Google早期大量使用Python,为Python积累了丰富的科学运算库。当AI(Artificial Intelligence,人工智能)时代来临后,Python从众多编程语言中脱颖而出,各种AI算法都基于Python编写。在神经网络、深度学习方面,Python都能够找到比较成熟的包来加以调用。另外,Python是面向、对象的动态语言,且适用于科学计算,这就使得Python在人工智能方面备受青睐。

编程基础

  • 指令和程序

  • 每台计算机都有自己的指令(Instruction)集合,
    每条指令可以让计算机完成一个最基本的操作。

  • 程序(Program)则是由一系列指令根据特定规则
    组合而成,在计算机上执行程序的过程实质上就
    是组成程序的各条指令按顺序依次执行的过程。

高级程序设计语言和低级程序设计语言

  • 高级程序设计语言包括Python、C/C++、Java等
  • 低级程序设计语言包括汇编语言和机器语言
编程语言表现形式
pythona=b+1
汇编mov 0x804a01c,%eax add $0x1,%eax mov %eax,0x804a018
机器a1 1c a0 04 08 83 c0 01a3 18 a0 04 08

解释型和编译型的区别

解释型:程序运行的时候,才对程序逐条翻译和执行

解释(Interpret)是在程序运行时才对源代码进行逐条语句的翻译并运行。
解释型语言编写的程序每执行一次,就要翻译一次,翻译结果不会像编译型语言一样保存在可执行文件中,因此效率较低

Python是一种解释型语言,但为了提高运行效率,Python程序在执行一次之
后会自动生成扩展名为.pyc的字节码文件;字节码不同于机器语言,但很容
易转换为机器语言。

编译型:翻译成机器码,计算机再执行

高级语言编写的程序称为源代码(Source Code)或源文件。编译(Compile)是将源代码全部翻译成机器指令,再加上一些描述信息,生成一个新的文件。这个新的文件称为可执行文件。一个可执行文件可以在计算机上多次运行,因此,在不修改源代码的情况下,只需要做一次编译即可。

起步

第一个python程序

TempStr=input("请输入带有符号的温度值")

if TempStr[-1] in ['F','f']:
    C=(eval(TempStr[0:-1])-32)/1.8
    print("转换之后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
    F=1.8*eval(TempStr[0:-1])+32
    print("转后之后的温度是{:.2f}F".format(F))
else:
    print("输入错误!")

缩进

缩进:表示程序的框架格式

  • 严格明确:缩进是语法的一部分,缩进不正确程序运行错误
  • 所属关系:表达代码间包含和层次的唯一手段
  • 长度一致: 程序内一致即可,一般用 4个空格或1个TAB

注释

# 我是单行注释
'''
我是多行注释
'''

变量

变量:是指在程序运行过程中值可以发生改变的量,程序中用于保存和表示数据的占位符号。

  • Python变量在使用前不需要先定义,为一个变量
    赋值后,则该变量会自动创建。
  • 使用等号(=,赋值符号)向变量赋值或修改值。

同时定义多个变量

name,age='张三',18

交换两个值

x,y=y,x
变量命名规则

命名规则 : 大小写字母、数字、下划线和汉字等字符及组合如:

  • TempStr , Python_Great , Python程序开发

  • 注意事项 : 大小写敏感、首字符不能是数字、不能与保留字相同
    • Python 和 python 是不同变量
    • 123Python 是不合法的
保留字

保留字:被编程语言内部定义并保留使用的标识符

  • Python语言有33个保留字(也叫关键字)if, elif, else, in
  • 保留字是编程语言的基本单词,大小写敏感
  • if是保留字,If 是变量

33个保留字

andelifimportraiseglobal
aselseinreturnnonlocal
assertexceptistryTrue
breakfinallylambdawhileFalse
classfornotwithNone
continuefromdeforyield
ifpassdel
Python 类型
  • Python 是强动态类型语言.
  • 动态类型
    • 所有的类型检查都在运行时进行.
    • 在变量使用前无需声明或定义类型.
  • 静态语言
    定义变量时必须制定变量类型,如果赋值时,类型不匹配会报错,如Java
    • Python不允许不同类型间进行混合运算.
    • 不同类型进行运算时,需要显式转换.
      如: 2 + “four” 不能正常运行 SyntaxError: invalid syntax

python 基础知识

数据类型

基本数据类型:Number(数字)String(字符串)
组合数据类型:List(列表)Tuple(元组)Set(集合)Dictionary(字典)
数字类型
  • Python中有3种不同的数字类型:
  • int(整型)、float(浮点型)、complex(复数类型)
  • 各类型的构造方法 int( ), float( )和 complex( ).
  • 除了复数,所有数值类型均支持常用的数值操作符.

支持混合运算 窄类型会适应宽类型 整数->浮点数->复数

例如: 123+40=127.0(整数+浮点数=浮点数)

整型
  • 包括正整数、0和负整数,不带小数点,与数学中整数的概念一致
  • 没有取值范围限制(整数无限制)
  • pow( x, y )函数:计算 x𝑦,想算多大能算多大

1734701-20190920151331125-1895825389.png

4种进制表示形式

  • 十进制: 1010, 99, 1010, 99, 1010, 99, -217
  • 二进制,以 0b 或0B 开头: 0b010, 0b010, 0b010, -0B101
  • 八进制 ,以 0o 或0O 开头 :0o123, 0o123, 0o123, 0o123, -0O456
  • 十六进制,以 0x 或0X 开头: 0x9a, 0x9a, 0x9a, -0X89

布尔类型

Python 语 言 中 提 供 了Boolean(布 尔)类 型,用于表示逻辑值True(逻辑真)和False(逻辑假)

Boolean类型是整型的子类型,在作为数字参与运算时 , False 自 动 转 为 0 ,True自动转为1

使用bool函数可以将其他类型的数据转为Boolean类型,当给bool函数传入下列参数时其将会返回False:

  • 定义为假的常量,包括None或False
  • 任意值为0的数值, 如0、0.0、0j等
  • 空的序列或集合,如''(空字符串)、()(空元组)、[](空列表)等
浮点数

浮点型使用C语言中的double类型实现,与数学中实数的概念一致

  • 带有小数点及小数的数字
  • 浮点数取值范围和小精度都存在限制, 但常规计算可忽略(取值范围数量级约 −10308至10308,精度数量级 10−16)

查看浮点数的取值范围和精度的代码示例

import sys #导入sys包
sys.float_info #查看当前环境中浮点型数字的取值范围和精度

min和max是浮点数的最小值和最大值,dig是浮点数所能精确表示的十进制数字的最大位数

sys.float_info(max=1.7976931348623157e+308, max_exp=1024, 
max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, 
min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-
16, radix=2, rounds=1)

浮点数可采用科学计数法表示

  • 使用字母 e或E作为幂的符号,以 10 为基数,格式如下:
    e 表示 a*10b
    例如: 4.3e-3值为 0.0043,9.6E5 值为 960000.0

  • 浮点数间运算存在不确定尾数,不是bug

1734701-20190920152333653-1956117267.png

  • 为什么存在不确定尾数?不是bug
    1734701-20190920152346063-832205447.png

浮点数间运算存在不确定尾数

1734701-20190920152356646-802107243.png

去除不确定位数

round(x, d):对x四舍五入, d是小数截取位数

1734701-20190920152530280-519971812.png

  • 浮点数间运算及比较时,用 round( ) 函数辅助
  • 不确定尾数一般发生在10−16左右, round( ) 十 分有效
复数类型

复数由实部和虚部组成,每一部分都是一个浮点数,与数学中复数概念一致,其书写方法如下:
a+bj 或 a+bJ,其中a是实部, b是虚部

  • 在生成复数时,也可以使用complex函数,其语法格式如下:
  • complex([real[,imag]]其中,real为实部值,imag为虚部值,返回值为real+imag*1j

在空间变化、复变函数相关的科学体系中,非常常用

1734701-20190920152554652-1791151444.png

c1,c2,c3,c4,c5=3+5.5j,3.25e3j,complex(5,-3.5), complex(5),complex()

执行完毕后,c1、c2、c3、c4和c5的值分别是:(3+5.5j)、3250j、(5-3.5j)、(5+0j)和0j,51

数值运算操作符

操作符是完成运算的一种符号体系

1734701-20190920152620962-1399578824.png

与数学中含义一致的符号

1734701-20190920152633738-1293352590.png

以函数形式提供的数值运算功能

1734701-20190920152650601-1677414990.png

数值运算函数

1734701-20190920152707013-35573172.png

提供了数字类型转换的函数

1734701-20190920152939963-409932720.png

字符串类型
字符串类型表示

字符串由0个或多个字符组成的有序序列

  • 字符串由一对单引号或双引号表示请输入带有符号的温度值 :”、“c” 或者 ‘C’
  • 字符串是字符的有序序列,可以对其中的字符进行索引. “请”是 “请输入带有符号的温度值 : ”的第0个字符

字符串有2类4种表示方法:

  • 一类:由一对单引号或双表示
    “请输入带有符号的温度值 :”或者 ‘C’
  • 二类:由一对三单引号或一对三双引号表示,可
    多行字符串
    ''' Python
    语言 '''
  • Q: 老师,三引号不是多行注释吗?  A: 多行用三引号标注的字符串未赋值给任何变
    量,可以看作注释。

为什么要提出2类4种表示?

  • 如果希望在字符串中包含双引号或单引号呢? '这里有个双引号 ( '' ) '或者 "这里有个单引号 ( ' ) "
  • 如果希望在字符串中既包括单引号又有双引号呢?
    ''' 这里既有单引号 ( ' )又有双引号 ( '' ) ) '''

单引号、双引号、三引号之间的区别

单引号和双引号中的字符串要求写在一行中,二者在使用方法上并没有什么区别
单引号和双引号中的字符串如果分多行写,必须在每行结尾加上续行符“ ” ;如果希望一个字符串中包含多行信息,则需要使用换行符“\n”

s1='Hello \
World!' #上一行以\作为行尾,说明上一行与当前行是同一条语句
s2="你好!\n欢迎学习Python语言程序设计!" #通过\n换行
print(s1) #输出s1
print(s2) #输出s2

使用三引号创建字符串,则允许直接将字符串写成多行的形式

str='''你好!
欢迎学习Python语言程序设计!
祝你学习愉快!''' #通过一对三引号定义包含多行文本信息的字符串
print(str) #输出str

在一对三引号括起来的字符串中,可以直接包含单引号和双引号,不需要使用转义符

str='''He said:
"It's a book for you."
''' #通过一对三引号定义包含多行文本信息的字符串,其中的单引号和双引号
不需要加转义符
print(str) #输出str
字符串的序号

1734701-20190920153009120-1690341314.png

字符串的使用
字符串切片

使用[ ]获取字符串中一个或多个字符

  • 索引:返回字符串中单个字符 [M]"请输入带有符号的温度值:"[0]
  • 切片:返回字符串中一段子[M: N]

[M: N],M缺失表示至开头 ,N缺失表示至结尾

"〇一二三四五六七八九十 "[:3] 结果是 "〇一二“

[M: N: K],根据步长K对字符串切片

"〇一二三四五六七八九十 "[1:8:2 ] 结果是 "一三五七 " “〇一二三四五六七八九十 ”[:: -1] 结果是 “十九八七六五
四三二一〇 ”(实现倒序排列)
转义字符
  • 转义符“”
  • 转义符表达特定字符的本意
“这里有个双引号 (\”)“结果为 这里有个双引号 ( " )

转义符形成一些组合,表达不可打印的含意

"\b"回退
"\n"换行 (光标移动到下行首 ) "\r"回车 (光标移动到本行首 )
字符串操作符

1734701-20190920153036734-1254679380.png

字符串内置方法

"方法 "特指 .( ) 风格中的函数 ()

  • 方法本身也是函数,但与 有关,.() 风格使用
  • 字符串及变量也是 ,存在一些方法

1734701-20190920153058297-982739422.png

1734701-20190920153112633-85212.png

1734701-20190920153128767-486201399.png

字符串比较

规则:
1)两个字符串按照从左至右的顺序逐个字符比较,如果对应的两个字符相同,则继续比较下一个字符

2)如果找到了两个不同的字符,则具有较大ASCII码的字符对应的字符串具有更大的值。

3)如果对应字符都相同且两个字符串长度相同,则这两个字符串相等。

4)如果对应字符都相同但两个字符串长度不同,
则较长的字符串具有更大的值。

str1='Python'
str2='C++'
str3='Python3.7'
str4='Python'
print('str1大于str2:',str1>str2)
print('str1小于等于str2:',str1<=str2)
print('str1小于str3:',str1<str3)
print('str1大于等于str3:',str1>=str3)
print('str1等于str4:',str1==str4)
print('str1不等于str4:',str1!=str4)
str1大于str2: True
str1小于等于str2: False
str1小于str3: True
str1大于等于str3: False
str1等于str4: True
str1不等于str4: False
字符串格式化

1734701-20190920153154912-231380725.png

1734701-20190920153206020-752170762.png

使用format格式化

<模板字符串 >.format(< 逗号分隔的参数 >)

1734701-20190920153224137-1403639006.png

1734701-20190920153236042-773793495.png

1734701-20190920153926882-1480308948.png

1734701-20190920153356669-517351104.png

序列类型
序列类型的操作符
操作描述
x in s如果x是序列s的子元素就返回True,否则返回False
x not in s如果x是序列s的子元素就返回False,否则返回True
s+t拼接两个序列
s*n将序列复制n次
s[i]索引,返回序列中第i个元素
s[i:j]或则s[i:j:k]返回序列s从[i,j)的切片,或者s[i,j)步长为k的切片

实例

ls=[1,2,3,4,5]
ls[::-1]#倒序
操作方法
函数方法描述
len(s)返回s的长度
min(s)返回s中最小的元素
max(s)返回s中最大的元素
s.index(i)或者s.index(x,i,j)获取下标元素;获取从i到j第一次出现x的下标
s.count(x)序列s中x出现的次数
列表
  • 长度没有限制
  • 类型没有限制
  • 列表的嵌套
  • 使用[]或者list()创建
  • 对于不包含元素的列表是空列表
list=['dog','cat',123,789]

列表中只有通过list()是创建新的列表,其他将一个列表赋值给另外一个列表,是复制引用

索引

  • 通过下标
ls=[1,2,3,4,5,6]
ls[2]#3

切片

ls=[1,2,3,4,5,6]
ls[1:4]#2,3,4
ls[1:-1]#2,3,4,5
ls[:3]#1,2,3
ls[:]#1,2,3,4,5,6
ls[::-1]#6,5,4,3,2,1

注意:通过切片方式返回仍然是一个列表,但是通过下标得到的对应的一个元素

列表类型切片操作方法
函数或者方法描述
ls[x] =c替换x下标位置元素为c
ls[i:j:k]=ltlt替换ls切片之后的子列表
del s[i]删除列表s中第i个元素
del s[i:j:k]删除列表s中从i到j以步长为k的元素
ls+=it将it元素增减到ls中去
ls*n更新ls中的元素,其元素重复n次
列表类型函数方法
b
ls.append()末尾添加元素
ls.clean()清空列表
ls.copy()复制列表,生成新的列表赋值ls中所有的元素
ls.insert(i,x)插入元素 ,在i位置插入x
ls.pop(i)弹出末尾,或者删除第i个位置元素
ls.remove(x)移除第一个出现的x
ls.reverse()反转

注意

  • ls[::-1]倒序,并未修改列表
  • ls.reverse()真正修改
  • ls[0]=[]删除元素
  • ls[m:n]=[]删除从[m,n)的元素
元组

元组类型和列表类型是类似的,但是其不可以进行修改,其通过()表示

创建
  1. 使用tuple创建
a=tuple((1,2,3,4,5,6))
  1. 使用或者不使用()
ts=(1,2,3,4,5,6)
ts=1,2,3,4,5,6

3.创建空的元组

ts=()
元组类型的操作

元组的操作继承了列表的功能规则和列表是一致的

注意

  • 元组继承序列类型的全部通用操作
  • 元组中元素的索引方式与列表中元素的索引方式完全相同
  • 与列表相同,利用下标“[ ]”可以从已有元组中取出其中部分元素形成一个新元组,其语法格式为:t[beg:end], 缺省情况 也与列表相同
应用场景
  • 数据保护,防止改变
序列小结
  • 序列
    • 扩展类型
      • 元组
      • 字符串
      • 序列
    • 可变类型
      • 列表
    • 不可变类型
      • 元组
      • 字符串
集合
  • 集合中的元素是不可以被更改
  • 除此之外集合中的元素是无序
  • 不重复
  • 元素不同类型
创建
  • 大括号{}创建
st={1,2,3,4,5,6}
  • set()创建
st=set([1,2,3,4,5,6])
  • 建立空的结合,必须用set()
st=set()
集合的操作

1734701-20190920153425645-1547089346.png

6个操作符

操作符描述
SlT求并集
S-T求集合之差
S^T求补集
S&T求交集
S<=T或者S<T返回True或者False,判断子集关系
S>=T或者S>T返回True或者False,判断包含关系

4个增强运算符

操作符描述
S l=T更新s,s等于和T的并集
S-=T更新s,s等于和T的差集
S&=T更新s,s等于和T的交集
S^=T更新s,s等于和T的补集
集合方法
操作函数与方法描述
s.add(x)如果x不在集合中将x添加到集合中
s.discard(x)移除集合中x元素,若x不在集合中不报错
s.remove(x)移除集合中元素x,若x不在集合中会报错
s.clear()移除集合中的所有元素
s.pop()随机删除一个集合元素,如果元素不存在会报错
s.copy()返回集合s的一个副本
len(s)返回集合s中的元素个数
x in s判断x是否在s中,如果在就返回True,否则就返回False
x not in s判断x是否在s中,如果在就返回False,否则就返回True
set(x)将其他类型变量转化为set类型
主要应用
  • 关系比较
  • 数据去重
字典
  • 另外一种无序的对象集合类型
  • 字典中每个元素是一组映射,其实就是一组键值对
  • key必须是唯一的,键不能相同,且不能改变的数据类型,值应该是任意的类型
创建
  • {}
s={1:2,"Hello":"World"}
  • dict(**kw)来进行创建,传入键值对
dict(t='a',b='b')
  • dict(ls)传入元组的列表
dict([(1,2),(3,4),(5,6)])
  • dict()空的字典
a=dict()
字典方法
  • type()查看对应的类型
type(a)
  • 获取对应的值
d={'a':'b','c':'d','e','f'}

d['a']#b

d['北京']='北京工业大学'
常见的操作方法
函数或者方法描述
del d[k]删除字典中键key所对应的值
k in d判断k是否在字典中
d.keys()返回字典左右的键的信息
d.values()返回字典所有的值的信息
d.items()返回字典中所有的键值对的信息
d.get(k)k存在则返回对应的值,不在返回default的值
d.pop(k)k存在就返回对应的值,否则返回default
len(d)返回字典d中的元素的个数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值