Python学习总结 自用(2),非科班面试之旅

注释
#这是单行注释

"""
这是多行注释
这是多行注释
"""
'''
也可以用三个单引号来进行多行注释
'''
基本数据类型

Python3 的六个标准数据类型中:

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

可变数据和不可变数据的“变”是相对于引用地址来说的,不是不能改变其数据,而是改变数据的时候会不会改变变量的引用地址。

切片
# 要取得一段子串的话,可以用到​变量[头下标:尾下标]​,就可以截取相应的字符串
str="qwertyuiop"
print(str[0:5])
包左不包右
#qwert
类型判断

python可以用type函数来检查一个变量的类型

type(name)

列表

列表list可以完成大多数集合类的数据结构实现,支持字符、数字、字符串甚至可以包含列表(也就是嵌套)

列表用 []标识。是Python最通用的复合数据类型

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
 
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个的元素 
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
元组

元组Tuple是另一个数据类型,类似于List(列表)

元组用"()"标识。内部元素用逗号隔开。但是元素不能二次赋值,相当于只读列表

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
 
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第三个的元素 
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
字典

字典是除列表以外Python 之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用‘{}’标识。字典由索引key和它对应的值value组成

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
 
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值

以字典(dict)为例,它包含多个函数供我们使用,例如使用 keys() 获取字典中所有的键,使用 values() 获取字典中所有的值,使用 item() 获取字典中所有的键值对。

数据类型转换

对数据内置的类型进行转换,只需要将数据类型作为函数名即可。

int(x)转成整数
long(x)将x转成一个长整数
float(x)将x转成一个浮点数
str(x)将对象x转换成字符串
repr(x)将对象x转换为表达式字符串
输入输出流

input函数作为输出流,print函数作为输入流

name=input()
print(name)
变量

变量是存储在内存中的值。就是指针无关数据类型,解释器会分配指定大小的内存。

# 等号(=)用来给变量赋值
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串

# 多个对象指定多个变量
a, b, c = 1, 2, "john" 
文本换行

使用+ \起到多行连接的作用:

data="this  " + \
    "is  " + \
    "Tuesday"
print(data)
#this  is  Tuesday

# 空格也会被视为字符
字符串运行算回切片获取

自定义函数
def 函数名(参数列表):
    //实现特定功能的多行代码
    [return [返回值]]
匿名函数

对于定义一个简单的函数,Python 还提供了另外一种方法,lambda 表达式,又称匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。

name = lambda [list] : 表达式

def name(list):
    return 表达式
name(list)

class 类名:

多个(≥0)类属性…

多个(≥0)类方法…

构造方法

在创建类时,我们可以手动添加一个__init__() 方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)

def __init__(self,...):
    代码块

类的构造方法最少也要有一个 self 参数。self 所表示的都是实际调用该方法的对象。无论是类中的构造函数还是普通的类方法,实际调用它们的谁,则第一个参数 self 就代表谁。相当于Java的this。

类的实例化
创建类对象的过程,又称为类的实例化。类名(参数)。

定义的类只有进行实例化后,才能得到利用。实例化后的类对象可以执行以下操作:

class Dog:
    def __init__(self, name, breed, age):
        self.name = name
        self.breed = breed
        self.age = age

my_dog = Dog('Buddy', 'Golden Retriever', 6)

公有属性:指没有加前缀双下划线__的属性,可以在类内外被访问,也可以被继承和重写。

私有属性:指加了前缀双下划线__的属性,只能在类内被访问和修改,而在类外部无法访问或修改。

实例属性:指定义在 __init__ 方法中,以 self.属性名 的形式定义的属性,每个实例都独立拥有一个自己的实例属性,它们随实例创建和销毁。

静态属性:指在类下直接定义的属性,可以使用类名直接访问,它们是类的属性,每个实例都共享一个静态属性。

class revealAccess:
    def __init__(self, initval = None, name = 'var'):
        self.val = initval
        self.name = name
    def __get__(self, obj, objtype):
        print("Retrieving",self.name)
        return self.val
    def __set__(self, obj, val):
        print("updating",self.name)
        self.val = val
IO处理

Python 提供了内置的文件对象,以及对文件、目录进行操作的内置模块,通过这些技术可以很方便地将数据保存到文件(如文本文件等)中。

在 Windows 上,路径书写使用反斜杠 “” 作为文件夹之间的分隔符,但在 OS X 和 Linux 上,使用正斜杠 “/” 作为它们的路径分隔符。需要两个第一个是转义字符。

对文件的系统级操作功能单一,比较容易实现,可以借助 Python 中的专用模块(os、sys 等),并调用模块中的指定函数来实现。

import os
os.remove("a.txt")

打开文件:使用 open() 函数,该函数会返回一个文件对象;

对已打开文件做读/写操作:读取文件内容可使用read()、readline() 以及 readlines()函数;向文件中写入内容,可以使用 write() 函数。

关闭文件:完成对文件的读/写操作之后,最后需要关闭文件,可以使用close()函数。

如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象,而这些工作可以通过内置的 open()函数实现:

file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])

3. OS

a. 绝对路径三种表达方式

单斜杠 /

双反斜杠 \

在路路径前加上字母 r

b. os.getcwd()

获取当前文件所在的路径

import os
print(os.getcwd())
c. os.chdir(path)

更改当前路径,更改后,默认路径为更改后的路径

os.chdir(r'D:\临时\python试验\pandas')
os.getcwd()
d. os.path.split(path) 将path分割成目录和文件名二元组返回

以路径最后一个’/'为分隔,分隔路径与文件名。若路径中无文件名,则输出路径与空文件名。

import os 
path = '/home/User/Desktop/file.txt'
head_tail = os.path.split(path) 
print("Head of '% s:'" % path, head_tail[0]) 
print("Tail of '% s:'" % path, head_tail[1], "\n") 
  
path = '/home/User/Desktop/'
head_tail = os.path.split(path) 
print("Head of '% s:'" % path, head_tail[0]) 
print("Tail of '% s:'" % path, head_tail[1], "\n") 

path = 'file.txt'
head_tail = os.path.split(path) 
print("Head of '% s:'" % path, head_tail[0]) 
print("Tail of '% s:'" % path, head_tail[1]) 

e. os.path.basename§

获取路径中的最后一个文件夹名字

print(os.path.basename(r'D:\临时\python试验\pandas'))
#pandas

注意,若传入的路径为文件,如 r’D:\临时\python试验\pandas\test.txt’,返回的结果是文件名 test.txt。

返回path的文件名,等同于os.path.split(path)[1]

f. os.path.dirname§

返回path的目录,相当于os.path.split(path)[0]

g. os.path.splitext(path)将路径的文件名{只是名称}和后缀名分开
import os
file_path = "D:/test/data_expand/192.168.1.70_01_20210901163745710_250_150_4...jpg"
filename,extension = os.path.splitext(file_path)
print("filename:",filename)   # D:/test/data_expand/192.168.1.70_01_20210901163745710_250_150_4..
print("extension:",extension) # .jpg

file_path ="D:/test/data_expand/"
filename,extension = os.path.splitext(file_path)
print("filename:",filename)         # D:/test/data_expand/
print("extension:",extension)       # 空文件后缀

h. os.path.join(path,*path)

拼接路径

p1 = r'D:\临时\python试验\pandas'
p2 = r'merge\test.txt'
print(os.path.join(p1,p2))

i. os.path.exists(path)

判断路径是否存在

print(os.path.exists(r'D:\临时\python试验\pandas'))
print(os.path.exists(r'D:\临时\python试验\pandas\3D图.csv'))
#true true
j. os.path.isdir(path, /) 、os.path.isfile(path)

前者判断是否为文件夹内 后者判断是否为文件

r1 = r'D:\临时\python试验\pandas'
r2 = r'D:\临时\python试验\pandas\merge\test.txt'
 
print(os.path.isdir(r1))
print(os.path.isfile(r2))
k. os.listdir(path)

输出path路径下所有的文件及文件夹 不遍历下层

l. os.walk(top, topdown=True, οnerrοr=None, followlinks=False)

循环遍历top路径下所有文件 该路径下层的文件及文件夹

top:路径,顶层路径

topdown:可以理解为加快速度,不用管,默认为True

onerror:当有错误时,可以用定义的函数去输出错误

followlinks:默认为False,意义不大

该函数必须传入路径,返回3个变量值。第一个为文件夹绝对路径,第二个为子文件夹的列表,第三个为根目录下所有文件的列表。先看第一个 (i):

for (i,j,k) in os.walk(r'D:\临时\python试验\pandas'):
    print(i)

i 得到的是该路径下所有文件夹的绝对路径

j 得到的是对应 i 路径下含有的文件夹,每个 i 的路径输出一个列表。[‘merge’]的由来是因为 D:\临时\python试验\pandas下有个merge文件;[]的由来是因为 D:\临时\python试验\pandas\merge下没有文件夹了。

k 得到的是对应 i 路径下含有的文件,每个 i 的路径输出一个列表。这里输出的两个列表的由来,和 j 一样,就不一一解释了。

m. os.scandir(path = none)

加快迭代速度,把需要迭代的内容放在一个迭代对象里,而不是像os.listdir()一样把结果存在列表中(放在列表占用大量内存)

可见返回的是一个可迭代对象,作用是减少内存占用,加快运行速度。除此之外,它还可以访问文件的各种属性。如获取文件/文件夹名,文件/文件夹绝对路径,是否为文件夹,是否为文件,以及属性。

根据属性,还可以提取文件的大小(单位为kb,文件夹大小为0kb)、最近访问时间、最近修改时间、window系统下的创建时间、linux系统下的创建时间等。这里以文件大小 .st_size为例

文件大小 .st_size

最近访问时间 .st_atime

最近修改时间 .st_mtime

window系统下的创建时间 .st_ctime

linux系统下的创建时间 .st_birthtime

for i in os.scandir(r’D:\临时\python试验\pandas’):

print(i.name,i.stat().st_size,‘kb’)

使用os.scandir()方法,它可以列出指定目录下的所有文件夹和文件

n. os.stat(path, *, dir_fd=None, follow_symlinks=True)

获得文件的属性。能获得的属性与上面一样,不再重复。

o. os.mkdir(path, mode=511, *, dir_fd=None)

创建路径,只能创建一层

p. os.makedirs(name, mode=511, exist_ok=False)

创建路径,可以创建多层

q. os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

重命名 移动文件或文件夹

src:原文件路径

dst:重命名/移动后的文件路径

r. os.remove(path, *, dir_fd=None)

删除文件

s. 获取桌面的路径

os.path.expanduser(“~”) 获取电脑用户名及路径

user = os.path.expanduser("~")
desktop = os.path.join(user,'Desktop')
print(user)
print(desktop)

4. 字符串处理

切片: s[start: end: step]每step个字符切取一个字符拼接为字符串

字符串的重复s * n 或n * s

a. strip

它的作用是去除字符串两端的空白字符(例如空格、制表符、换行符)。

line = "  hello world!  "
line = line.strip()
print(line)  # 输出 "hello world!"
b. capitalize 首字母大写
s = 'alexWUsir'
s4_1 = s.capitalize()  #首字母大写
print(s4_1)   #Alexwusir

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 15
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值