python基础小记(二)

碎碎念:我之前做的工作是技术研发产品经理,最近秋季校招想要转行测试开发相关岗位,于是在学python数据结构相关,在pycharm翻到了之前初学python时学的一些超级简单的基础。

欢迎佬们纠错~

八、函数

8.1 函数返回多个返回值

return后用,就可以连接多个返回值,且不限类型

def test():
    return 1,2  
x,y=test()
print(f"{x}{y}")

8.2 函数多种传参方式

8.2.1 位置参数 对应位置

def info(name,age,gender):
    print(f"{name},{age},{gender}")
info('tom',20,'男')

8.2.2 关键字参数 用键等于值的形式

def info(name,age,gender):
    print(f"{name},{age},{gender}")
info(name='tom',age=20,gender='男')

也可以不按顺序。也可以和位置参数混合使用,但必须位置参数在前且匹配参数顺序

8.2.3 缺省参数(默认参数)

为参数提供默认值,调用函数时可不传该默认参数的值,位置参数必须在默认参数前,当调用函数时没有传递参数,就默认是缺省函数对应的值

def info(name,age,gender='男'):
    print(f"{name},{age},{gender}")
info('tom',20)
info('tom',20,'女') #也可以覆盖

8.2.4 不定长参数(可变参数)

用于不确定调用会传递多少个参数

(1)不定长-位置传递

*args表示即将传入不定长的参数,会根据参数的位置合并为一个元组

def info(*args): 
    print(f"{args}")
info('tom',1,2,3)

(2)不定长-关键字传递

def info(**kwargs): #根据健=值组成字典
    print(f"{kwargs}")
info(name='tom',age=1,year=2,house=3) #必须是关键字=内容形式

8.3 函数作为参数传递

def test(com):
    res=com(1,2)
    print(f"{res}")
def com(x,y):
    return x+y

8.4 lambda匿名函数(无名称)

!不能重复使用

def test(com):
    res = com(1, 2)
    print(f"{res}")
test(lambda x,y:x+y)  #lamda 传入参数:函数体(一行代码)

9 文件

9.1 文件操作

9.1.1 打开文件

open(name(目标文件的字符串),mode(打开文件的模式只读、写入、追加),encoding(编码方式))
mode的三种模式:
         r-只读
        w-写入,如文件存在则原有内容会清空并重写,文件不存在则创建新的
        a-追加,如文件存在则会编写到已有内容之后;如不存在则创建新文件写入

f=open("D:/pythonProject/1.txt","r",encoding="UTF-8")  #注意文件路径是/
print(type(f))

9.1.2 读取文件

print(f"读取10个字节的结果:{f.read(10)}") #1、用f.read(x)方法读取x个字节

print(f"读取全部字节的结果:{f.read()}") #2、用f.read()方法读取全部字节,read会记录上一个读到了哪里

lines=f.readlines()#3、用lines=f.readlines()方法读取全部个字节
print(f"读取全部个字节的结果:{lines}")

line1=f.readline() #4、f.readline防区只读取一行
print(f"读取第一行:{line1}")

for line in open("python.txt","r"): #5、用循环读

9.1.3 文件的关闭

f.close()

9.1.4 文件的写入

f=open("D:/pythonProject/1.txt","w",encoding="UTF-8")
f.write("hi")
f.flush() #一定要有

9.1.5 文件的追加

f=open("D:/pythonProject/1.txt","a",encoding="UTF-8")
f.write("hi")
f.flush() #一定要有

10 异常

10.1 异常的捕获方式

10.1.1 基本捕获

try:
    f=open("D:/pythonProject/2.txt","r",encoding="UTF-8") #可能出现错误的代码
except:
    print("出现异常因为文件不存在")
    f=open("D:/pythonProject/2.txt","w",encoding="UTF-8") #如果出现异常执行的代码

10.1.2 捕获指定异常

try:
    print(name)
except NameError as e:  #NameError是指定的类异常
    print("出现了变量未定义的异常")
    print(f"{e}") #e是报错的具体

10.1.3 捕获多个异常

try:
    1/0
except (NameError,ZeroDivisionError) as e:  #(x类异常,y类异常) as e
    print("出现了变量为定义或除0的异常错误")

10.1.4 捕获所有异常

try:
    1/0
except Exception as e: #Exception as e是捕获所有异常
    print("出现异常了")
else:   #没有异常时怎么办
    print("没异常了")
finally:  #无论有无异常都执行
    f.close()

11 对象

11.1 用对象组织数据

class stu:
    name=None #设计类
    gender=None#成员变量
    def say(self): #成员方法,self(表示类对象本身)必须要有self,无论是否需要
       print(f"{self.name}") #在成员方法中访问成员变量
    def __init__(self,name,gender): #构造时直接传参
        self.name=name
        self.gender=gender
    def say2(selfself ,msg):
        print(f"{msg}")
stu_1=stu() #第一种创建对象方法
stu_1.name='a' #对象属性赋值
stu_1.gender='nan'

#使用成员方法:
stu_1.say() #一、用self调用时无需传参
stu_1.say2("hihi")#二、调用时需要传参
stu_2=stu("b","2")#第二种构建成员对象方法,构造时直接传参,用def __init__(self,,),这种方法不需要在前面写name=none..

#获取对象中的记录
print(f"{stu_2.name}")

11.2 类内置方法

class student:

        def __init__(self,name,age):
            self.name=name
            self.age=age

        def __str__(self):
            return f"student对象name{self.name},age{self.age}"

# __lt__ 小于(大于)符号比较
        def __lt__(self, other):
            return self.age<other.age
#  __le__ 小于(大于)等于比较
        def __le__(self,other):
            return self.age<=other.age
# __eq__ 相等运算
        def __eq__(self,other):
            return self.age==other.age
stu1=student("zhou",12)
stu2=student("lin",10)
print(stu1)
print(str(stu1)) #这样就有新的类输出方式
print(stu1,stu2)
print(stu1<stu2)
print(stu1<=stu2)

12 面向对象 

面向对象三大特性:继承、封装、多态。

私有成员变量/方法:以__开头

类对象对私有变量无法赋值也无法取值,私有方法也不能调用,类内部其他成员可以用私有成员/方法

12.1 继承

12.1.1 单继承

class phone:
    mei=None
    pro=None
    def call(self):
        print("通话")
class phone1(phone):  #格式:class 子类(父类)
    face=True
    def call5g(self):
        print("2022通话")
huawei=phone1()
huawei.call()

12.1.2 多继承

class 新类(父类1,父类2,父类3)

12.1.3 复写-在子类中重新定义

class phone:
    mei=None
    pro=None
    def call(self):
        print("通话")
class phone1(phone):  #格式:class 子类(父类)
    pro = "huawei"
    def call(self):
        print("2022通话")
        phone.call(self)#父类成员被复写后,调用成员时只会调用最新的,如果要使用之前的父类成员
huawei=phone1()
huawei.call()

12.2 多态

class animal:
    def speak(self):
        pass #空实现 抽象类
class dog(animal):
    def speak(self):
        print("wang")
class cat(animal):
    def speak(self):
        print("miao")
def make(ani:animal): #ani 可以是 animal 类或其任何子类的实例
    ani.speak() #接受animal实例,并调用其speak方法
d=dog()
c=cat()
make(d)
make(c)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值