python语言进阶c_python基础进阶

python开发基础进阶

1.程序的组成

从两个方面分类:

程序 = 数据 +(汇编)指令

程序 = 数据结构 + 算法

算法:编写程序的逻辑,解决问题的流程

[tess.cpp]

a=hello     #数据:a hello 这里为非数值型数据

#数据结构:字符串

if(a is hello): # 一个算法由n个指令组成(计算机底层硬件的操作:if is print )

print ‘ok’

[test.o]

01010101 01010101 01010101

01010101 01010101 01010101

01010101 01010101 01010101

2.语言

发展史

机器语言(01010101),打字机打动,纸条一个洞打不打代表是否是1(最原始的字典),hello world(96个位置,1就打洞)

汇编(move 1,寄存器(硬件),add 寄存器1 寄存器2) a = 1 ,b=1+2

C(第一门高级语言(符合人类逻辑,且不需要懂很多硬件知识))

c++ java python(1.更符合人类逻辑和事物特征:面向对象出现2.需要动更少的硬件知识。)

区别:

静态/编译型:

先编译(直接翻译完成一个机器码文件,但是没有真正的执行),再执行(交给CPU去执行):活干完了一半

bianyi tess.cpp -> 多了个test.o

zhixing test.cpp

先转为机器码(c++)或者中间代码(Java jvm-java字节码)

动态/解释性:

边运行,边翻译,边执行(两部为一步:缺点是效率低)

.py .pyc(如果先编译成.pyc .pyo)执行也可以更快,*但是它的底层是解释因此很慢

要研究数据结构+算法,最好选择静态/编编译型语言,因为动态/解释性语言坑很多(本身问题很多)

3.变量与内存

变量作用:标记并存储数据, 增强可读性。能被后面的代码调用,数据复用。

python :按引用传递(和别的语言的概念不同):底层是C(指针即地址(内存条的位置))

a=1

b=2

b=a

c=1

d=1

一夫(数据)多妻(变量),一个变量只能对一条数据,但是一条数据却可以被很多变量所对应。

id()查看地址

is,is not 比较数据的值、地址

== 比较数据的值

字面量(不同语言的字面量的类型不同):在Python中,对字面常量(数字、字符串、布尔、字节)对象进行缓存,

多个变量赋相同值,其实是同一个值

4.True 和 False

bool() 判断真假

False: 0和False

其余为真

if True (如果真,则执行)

if(bool(False) is False):

print 6

while True(如果真,则循环)

5.流程控制

if 带条件的->过滤

while 带条件的->循环

for 有限次数的->循环

6.数据结构

数据结构:数据的存储形式(计算机存储,组织数据的方式)

基本数据类型:

数字、字符串:连续存储

列表

是否可变:数字、字符串的数据不可变(内存空间是否可伸缩list dict)

如果重新赋值,会申请另一块内存(如果不是字面量)

查看python源码:

其它数据类型:

文件

数据库

[]研究数据结构?不同的数据,需要不同的数据结构去存储,造成的增删改查的性能不一样

*遍历

7.每种类型的方法:

增删改查(及展开)

4.基本数据类型

(1)(bool类型 数字int 字符串str(常用) 列表[](常用) 元祖() 字典(常用) 集合(没用))

(2)嵌套赋值:列表、元祖、字典

(3)支持遍历、索引、切片:字符串、列表、元祖:for、var[3]、var[2:]、in和not in(4)字典:key,value。key类型:int,str。for k,v ind.items(Dict)

(5)遍历:for k,v in enumerate(List|tuple):

(6)划分:1.是否是序列(索引是整数),支持索引、切片(字符串、列表、元祖2.是否可变:按所占内存大小、内存地址是否可变区分。(不可变:数字、字符串)

(7)操作序列:

len() 求序列的长度+连接两个序列 (常用与字符串拼接)in判断是否存在序列

(8)字符串格式化:% %s %d, format(推荐,就可以换序) pythonic

(9)类型转换

数字、字符串、列表、元祖

查看数据类型:type(var)

str(int)#数字转字符串

int(str) #字符串转数字

list(str)#字符串转列表

”.join(list) #列表转字符串

tuple(list) #列表转元组

list(tuple) #元组转列表

5.基本数据类型常用方法

格式type.methond()

(1)字符串

format#格式化

replace #替换

join #拼接

strip #去除字符串两边空格

str.split(‘char’) #分割字符串

startswith #以…开头

endswith

find#查找

encode #编码

(2)列表|元组

count#数量

copy #复制 等效于==

append #追加

extend #+ 拼接

insert #插入

pop remove #删除

list[index] = value #改

reverse

sort

clear

(3)字典

items

get(‘key’)#等效于dict[‘key’]

keys

values

setdefault#== 赋值

update(d1) #增加

pop popitem #删除

clear

copy

队列 :是一种数据结构(存储方式)

List|tuple : 元素连续分布

编码6.文件操作

数据库:分类,比excel强大的地方就是:分表

r w a w:覆盖写 a:追加写

r+:默认光标在开始位置,写的话时追加写

w+:覆盖写,想读取内容,seek调整

a+:光标默认在文件最后位置,不管光标位置,一定是追加写,seek调整位置读取

seek的应用:比如断点续传,------------rb wb ab

f=open("test","r",encoding="utf8")#解码

f=open("test","rb")#直接拿字节数据,所以不用解码

print(f.read())

f=open("test6","wb")

f.write("hello 倩雯".encode("utf8"))#wb需要字节数据转换utf8,w直接家的字符串

f.close()

f=open("test6","ab")

with

推荐

f=open("rest6")

f.read()

f.close()

with open("test6") as f: #f=open("test6")

f.read()

View Code

文件操作流程:1:打开这个文件 open()2:操作文件 read,write3:关闭文件 close()

打开文件#打开,以utf8编码打开#仅可读:

f=open("test",mode="r",encoding="utf8")#可写,不可读,覆盖,加绝对路径

f=open(file = 'E:\网盘下载视屏\笔记\python笔记\文件基本操作',mode="w",encoding="utf8")#追加模式

f=open("test3",mode="a",encoding="utf8")#二进制读取模式,硬盘怎么存就怎么读。读取出来后是二进制模式

f=open("test",mode="rb")

读操作

f=open("test2")

data=f .read()#读取

data = f.read(5)#读指定个数的字符

data2 = f.read(5)#从光标位置 读指定个数的字符

data =f.readline()

data2=f.readline()

data= f.readlines()#拿到的是一个列表结果,带着换行

print(data)print("data2",data2)

f.close()#关闭

for line inf :print(line)

​ 假如需要处理的文件不知道是什么编码

使用python第三方软件

安装:pip3 install chardetimportchardet

f= open('log',mode = 'rb')

data=f.read()

f.close()

result= chardet.detect(open('log',mode='rb').read())print(result)

命令行:importchardet

f= open('log',mode = 'rb')

data=f.read()

chardet.detect(data)

data.decode("gb2312")

写操作

f.write("hello\nworld")#清空覆盖,如果是不存在的文件,直接创建

f.write("\n哎呦我去")-----------------------写,flush操作

追加模式: a

f=open("test5",mode="a",encoding="utf8")

f.write("/nhellp test5")

读写模式: r+先读后写,光标处于最后一位,可以追加

f=open("test5",mode="r+",encoding="utf8")

写读模式: w+先写再读,从第一行开始写,覆盖写

f.flush()#刷新存入

import time #做延迟

time.sleep(100)

f=open("test",mode="w+",encoding="uest",mode="r+",encoding="utf8")print(f.read(3))

f.write("hello原浩雄")print(f.read())

f.seek(3,0) #移动光标到开始位置 按照字节走,不同于read()方法

f.seek(1,0)print(f.read())print(f.tell())

f.close()

a+总是再光标位置最后位置添加

f=open("test2","a+",encoding="utf8")

f.seek(0)print(f.read())#读取后光标处于最后

f.seek(0)

f.write("xiong")

f.write("yuan")

练习(不常用)

count=0for line inf.readlines():if count ==0:

line= "".join([line.strip(),"原浩雄"])print(line.strip())

count+=1推荐,保持在运行时内存只存储了一行信息

count=0for line in f: #f 可迭代对象,序列#优化内存

if count ==0:

line= "".join([line.strip(),"原浩雄"])print(line.strip())

count+=1进度条importsysfor i in range(100):

sys.stdout.write("#")

sys.stdout.flush()#强行刷新显示

importtime

time.sleep(0.5)

文件操作

#可读可写模式 r+ w+ a+

## R+## f=open("test2",mode="r+",encoding="utf8")#### print(f.read())## f.write("where is you ")#

##W+ 先覆盖,再读取#

## f=open("test",mode="w+",encoding="utf8")#f=open("test",mode="r+",encoding="utf8")#print(f.read(3))## f.write("hello原浩雄")#print(f.read())##f.seek(3,0) #移动光标到开始位置 按照字节走,不同于read()方法#

#

#f.seek(1,0)#

#

#print(f.read())## print(f.tell())#

#f.close()

#a+ 总是再光标位置最后位置添加#f=open("test2","a+",encoding="utf8")#f.seek(0)#print(f.read())#读取后光标处于最后#f.seek(0)#f.write("xiong")#f.write("yuan")

#------------------总结

#r w a w:覆盖写 a:追加写

#r+:默认光标在开始位置,写的话时追加写#w+:覆盖写,想读取内容,seek调整#a+:光标默认在文件最后位置,不管光标位置,一定是追加写,seek调整位置读取

#seek的应用:比如断点续传,#------------rb wb ab#f=open("test","r",encoding="utf8")#解码#f=open("test","rb")#直接拿字节数据,所以不用解码#print(f.read())#

#f=open("test6","wb")#f.write("hello 倩雯".encode("utf8"))#wb需要字节数据转换utf8,w直接家的字符串#f.close()#

#f=open("test6","ab")

#with#推荐#f=open("rest6")#f.read()#f.close()#

#with open("test6") as f: #f=open("test6")#f.read()

文件操作2

8.查看python源码

1.查看部分源码(不能查看实现,常用关键字的说明文档)

pycharm:输入关键字/import 关键字,按住ctrl键+鼠标点击关键字

__ 私有方法,不公开(约定不能用,但是可以用)

公有方法

2.查看全部源码

去官网下载源码(C语言的源码)

要安装?就要编译

3.自学/进阶直接看(最清楚的)

4.通过语言的源码、高端开源项目源码去进阶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值