python基础知识

本文详细介绍了Python中的基本数据类型、可变与不可变的区别,列举了列表、元组、集合和字典,讨论了迭代器和序列操作,以及Python类的概念、继承、方法和静态/类方法。还涵盖了open函数和模块的使用,以及面向对象编程的基础知识。
摘要由CSDN通过智能技术生成

在 Python 中有6种标准数据类型,分别为:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)和Dict(字典)。而根据内存中的内容是否可变,分为可变类型与不可变类型。其中,数字、字符串、元组和集合被称为不可变类型,列表和字典称为可变类型。

输出的格式: (a = input() b= input())

①print("{} {}".format(a,b))

②print("%d %d"%(a,b))

注意 如果记不起这些占位符就可以利用第一种输出方式!!%b作为二进制整数

%.xf 实现浮点数保留x位小数

%.1f 实现浮点数保留1位小数

序列操作

all():判断可迭代对象的每个元素是否都为True值

any():判断可迭代对象的元素是否有为True值的元素

sorted():对可迭代对象进行排序,返回一个新的列表。 eg:元组和列表等是可迭代对象

元组与列表很相似,两者之间的差别在于:

  • 列表在初始化后其中的元素还可以进行增删改等操作,但是元组在初始化后其中的元素不能进行更改;

  • 列表在赋值时使用方括号[],而元组在赋值时使用小括号()。

因为元组具有不可变的特性,所以在能用元组替代列表的地方最好都使用元组,这样代码更安全。

列表可以转换成元组,利用元组的内置函数比如len(tuple)、max(tuple)、min(tuple)、tuple(list)

Python 为列表类型提供了一系列内置操作,包括append()、insert()、pop()、remove()等函数

list.append(obj):向列表的尾部追加一个元素

list.insert(index,obj) : 可以在列表任意指定位置插入元素

obj = list.pop(index) :该方法将从源列表删除对应元素,同时返回被删除的元素。 注意:index参数为可选项,不填则默认删除列表末尾的元素。

del list[index] :删除指定索引位置的元素

list.remove(obj):直接通过元素值来删除对应的元素(当无法确定index索引,无法使用del用法)

list.sort(reverse=Ture) :Ture代表反向从大到小,默认False代表从小到大排序

python 中的切片

eg:记住切片中以冒号(:)隔开!!!!

open()函数的运用

在 Python 中,open 函数用于打开指定文件并返回文件操作对象,通过该对象可以对文件进行读取和写入等操作。open 函数的基本语法如下:

open(file,'r',encoding='utf-8')

其中,file 是要打开的文件名(包括路径),mode 是打开文件的模式,encoding 是文件的编码方式。下面是一些常用的模式。

  • r:只读模式(默认)。
  • w:写入模式,会覆盖已有文件。
  • a:追加模式,在已有文件末尾追加内容。
  • x:独占创建模式,只能创建不存在的文件,如果文件已存在则会抛出异常。
  • b:二进制模式。
  • t:文本模式(默认)。
  • +:更新模式,表示可读写(需要放到其他模式的后面)。

python迭代器

迭代器的优点
  • 迭代器访问与for循环访问非常相似,但是也有不同之处。对于支持随机访问的数据结构如元组和列表,迭代器并无优势。因为迭代器在访问的时候会丢失数据索引值,但是如果遇到无法随机访问的数据结构如集合时,迭代器是唯一访问元素的方式;

  • 迭代器仅仅在访问到某个元素时才使用该元素。在这之前,元素可以不存在,所以迭代器很适用于迭代一些无法预先知道元素总数的巨大的集合;

  • 迭代器提供了一个统一的访问集合的接口,定义iter()方法对象,就可以使用迭代器访问。

可直接作用于for循环的数据类型如list、tuple、dict等统称为可迭代对象:Iterable。使用isinstance()可以判断一个对象是否是可迭代对象。

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。next()函数访问每一个对象,直到对象访问完毕,返回一个StopIteration异常。

eg: 所有的Iterable都可以通过iter()函数转化为Iterator 含义为所有的可迭代对象都可以转换成迭代器

迭代器为IterList,正确对迭代器使用next()方法

rstrip() 可以消除字段中的换行符\n

在 Python 中,rf是两个字符串前缀,它们(r' ',f' ')的含义如下:

  • r:在字符串前加r前缀表示该字符串是原始字符串(Raw String),它会保留字符串中的所有字符,包括转义字符。例如,r'\n'表示包含一个反斜杠和一个字母n的原始字符串,而不是表示换行符。原始字符串通常用于正则表达式,对应re模块。
  • f:以f开头表示在字符串内支持大括号内的 Python 表达式。这允许在字符串中嵌入变量或表达式的值。例如,f'my name is {name}, age is {age}'会将变量nameage的值插入到字符串中。可以通过大括号{}来引用变量或表达式,Python 会将它们的值插入到字符串中。这种方式可以使字符串更具动态性和灵活性。
for i in range(10):
    # 循环结构实现循环变量名,利用多个列表名类似的列表存储数据
    locals()[f"list{i}"] = [i]
    
for i in range(10):
    # 输出多个列表名类似的列表
    print(locals()[f"list{i}"])  

eg:实现循环变量名,并输出。

locals()[f"list{i}"] = [i]:在每次循环中,通过 locals() 函数获取当前命名空间中的所有局部变量,并使用 f"list{i}" 格式化字符串的方式创建一个名为 list[i] 的变量。然后,将当前循环变量 i 作为列表的唯一元素存储在该变量中。

可变参数允许我们在调用函数时传入任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许我们传入任意个含参数名的参数,这些关键字参数在函数调用时自动组装为一个dict

必选参数 def plus(a,b=2):

  1. # 定义加法函数plus,参数a是必选参数,参数b是默认值2的参数

  2. def plus(a,b=2):

  3. c=a+b

  4. return(c) #区分与c语言的 return c;

可变参数 def plus(*numbers):

  1. # 定义plus函数,完成的功能是返回输入的整数之和。

  2. # 参数numbers是可变参数,表示输入的参数个数可以为任意值

  3. def plus(*numbers):

  4. add = 0

  5. for i in numbers:

  6. add += i

  7. return(add)

关键字参数

python的模块概念

  1. from 模块名 import 函数名1,函数名2....

  2.from 模块名 import *    #导入全部函数

内置模块
内置模块中的内置函数
  1. Python 中常见的内置模块如下:

  2. os模块:文件和目录,用于提供系统级别的操作;

  3. sys模块:用于提供对解释器相关的操作;

  4. json模块:处理JSON字符串;

  5. logging: 用于便捷记录日志且线程安全的模块;

  6. time&datetime模块:时间相关的操作,时间有三种表示方式;

  7. hashlib模块:用于加密相关操作,代替了md5模块,主要是提供SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法;

  8. random模块:提供随机数。

  9. Python 的内置模块中也有很多使用十分方便的内置函数。

  10. 在 Python 中,正常的函数和变量名是公开的(public),是可以被直接引用的。比如abs()、abc、dir()等。

  11. * 类似__xxx__这种格式的变量是特殊变量,允许被直接引用,但是会被用作特殊用途。比如__author__、__name__就是属于特殊变量。hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己编程定义的变量一般不会用这种变量名。

    在 Python 代码中,if __name__ == "__main__": 是一个常用的条件语句,它用于判断当前文件是否作为主模块直接运行。

    下面是对 if __name__ == "__main__": 的意义和用法的解释:

    含义1.__name__ 是一个内置变量,它的值取决于当前代码文件的使用方式。2.如果当前文件作为主模块直接运行,__name__ 的值将是 "__main__"。3.而如果该文件被其他模块导入,__name__ 的值将是模块的名称。     用途:使用 if __name__ == "__main__": 可以在主模块中编写一些只在直接运行时执行的代码,而在被导入时不会执行。这常用于模块的自测、配置文件的读取、数据的初始化等操作。

  12. * 类似_xxx和__xxx这种格式的函数和变量就是非公开的(private),不应该被直接引用。

  13. * 补充:_xxx的函数和变量是protected,我们直接从外部访问不会产生异常。__xxx的函数和变量是private,我们直接从外部访问会报异常,我们要注意前缀符号的区别。

dir()效果如下图所示:

globals()和locals()函数可被用来返回全局和局部命名空间里的名字。

python的类概念

Python 是一门面向对象的语言。面向对象编程 - Object Oriented Programming(简称 OOP)是一种编程思想,在面向对象编程中,把对象作为程序的基本单元,把程序视为一系列对象的集合。一个对象包括了数据和操作数据的方法,消息传递成为联系对象的方法。

  1. class ClassName(bases_classes):#class后面接着是类名ClassName,类名的开头通常是大写。类名后面的(bases_classes)表示这个类是由哪个类继承来的,如果没有合适的继承类,就使用object类,object类是所有类都会继承的基类。

  2. '类文档字符串'

  3. class_suite # 类体 包含函数和变量

python的类继承覆盖

父类

父类也称基类,其声明方法与一般的类的声明方法一样。父类中存在着一些公共的属性和方法,子类继承于父类。

子类

子类继承于父类,拥有父类中的属性和方法,它自己也可根据实际情况声明一些属于自己的属性和方法。子类声明方法:

  1. class subClass(parentClass1,parentClass2,parentClass3,……): #类名括号里填的就是父类的名字

  2. class_suite #类的主体内容

对于任何子类来说,__bases__类是一个包含其父类的集合的元组,对于没有父类的类来说,其__bases__属性值为空。

故可以用 Classname.__bases__查询类Classname的包含其父类的一个元组。

通过继承覆盖方法,也就是在子类里再写一个与父类中一样的方法,实现自己想要实现的功能。例如:

  1. class Parent:

  2.      def sayHello(self):

  3.           print("hello,i am class parent")

  4. class Subclass(Parent):

  5.      def sayHello(self):

  6.           print("hello,i am class subclass")  #直接用同名方法覆盖即可

  7. sc = Subclass()

  8. sc.sayHello()

基础知识点

类的数据属性只与类绑定,不属于任何实例,如下所示:

  1. class DataProperty:

  2. theData = 10 #类的数据属性

__init__()是解释器在创建一个实例后调用的第一个方法。在实例化一个对象后,Python 会检查是否实现了__init__()方法。如果没有实现__init__()方法,则不会做其它的操作,直接返回对象,实例化过程完毕。而__init__()方法是用来给类本身初始化的,支持带参数的初始化。

调用绑定方法

在定义方法时,self总是作为第一个参数传递的(self是隐含传递的,即我们在创建实例对象和调用方法不需要输入self)。self代表实例本身,self.变量代表调用此实例的变量,self.方法代表调用实例的方法。因为声明方法时已经传入self,所以在调用时self就不用明确传入了,此时实例是隐含的。调用绑定方法的代码如下:

  1. class bindExample:

  2.      def bindMethod(self):

  3.            print("绑定方法调用实例")

  4. be = bindExample()

  5. be.bindMethod()

调用非绑定方法

当调用非绑定方法的时候,因为没有创建实例,所以需要用类去调用方法。在调用的时候需要显式地传入一个实例参数。例如:

  1. class bindExample:

  2.      def bindMethod(self):

  3.          print("非绑定方法调用实例")

  4. be = bindExample()

  5. bindExample.bindMethod(be)

静态方法

在声明静态方法的时候,使用函数修饰符@staticmethod 此方法无需传递参数

  1. class StaticMethood:

  2. @staticmethod

  3. def statictest():

  4. print("这是静态函数")

  5. StaticMethood.statictest()

类方法

在声明类方法的时候,使用函数修饰符@classmethod。例如:此方法传入的参数是类本身,通常用cls作为参数名字

  1. class ClassMethod:

  2. @classmethod

  3. def classtest(cls):

  4. print(cls)

  5. print("这是类方法")

  6. cm = ClassMethod()

  7. cm.classtest()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值