加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python基础知识

发布时间:2020-12-20 10:40:13 所属栏目:Python 来源:网络整理
导读:python基础 python的诞生 2002年,python 2.x 2008年,python 3.x python的命名 马戏团的名称 python简介 简单、易学 持快速开发. 跨平台. 开源. 可扩展. 可嵌入. 大量的标准库和活跃的交流群. 可用于各种各样的开发. 应用领域 系统编程 提供API(应用程序编

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等
  • 低级程序设计语言包括汇编语言和机器语言
编程语言 表现形式
python a=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个保留字

and elif import raise global
as else in return nonlocal
assert except is try True
break finally lambda while False
class for not with None
continue from def or yield
if pass del

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??,想算多大能算多大

4种进制表示形式

  • 十进制: 1010,99,1010,-217
  • 二进制,以 0b 或0B 开头: 0b010,0b010,-0B101
  • 八进制 ,以 0o 或0O 开头 :0o123,0o123,-0O456
  • 十六进制,以 0x 或0X 开头: 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

  • 为什么存在不确定尾数?不是bug

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

去除不确定位数

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

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

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

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

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

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

数值运算操作符

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

与数学中含义一致的符号

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

数值运算函数

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

字符串类型

字符串类型表示

字符串由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
字符串的序号

字符串的使用
字符串切片

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

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

<字符串 >[M: N],M缺失表示至开头 ,N缺失表示至结尾

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

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

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

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

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

字符串内置方法

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

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

字符串比较

规则:
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
字符串格式化

使用format格式化

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

序列类型

序列类型的操作符
操作 描述
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,5,6]
ls[2]#3

切片

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

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

列表类型切片操作方法
函数或者方法 描述
ls[x] =c 替换x下标位置元素为c
ls[i:j:k]=lt lt替换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,6))
  1. 使用或者不使用()
ts=(1,6)
ts=1,6

3.创建空的元组

ts=()
元组类型的操作

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

注意

  • 元组继承序列类型的全部通用操作
  • 元组中元素的索引方式与列表中元素的索引方式完全相同
  • 与列表相同,利用下标“[ ]”可以从已有元组中取出其中部分元素形成一个新元组,其语法格式为:t[beg:end],缺省情况 也与列表相同
应用场景
  • 数据保护,防止改变
序列小结
  • 序列
    • 扩展类型
      • 元组
      • 字符串
      • 序列
    • 可变类型
      • 列表
    • 不可变类型
      • 元组
      • 字符串

集合

  • 集合中的元素是不可以被更改
  • 除此之外集合中的元素是无序
  • 不重复
  • 元素不同类型
创建
  • 大括号{}创建
st={1,6}
  • set()创建
st=set([1,6])
  • 建立空的结合,必须用set()
st=set()
集合的操作

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中的元素的个数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读