python语法(三)适合从java自学python

这是python基础语法的最后一期啦,主要讲解的是类,以及方法这些定义。两周前就差不多跟着学完了,但是一直没时间去更新。最近在学习opencv和pyautogui;

一、方法的定义:

# 介绍:方法的定义
def sum(a, b):
    print('a=', a)
    print('b=', b)
    return a + b

# 这种应该都看的懂就是和java一样的
print(sum(10, 20))
# 和java不同的是,他可以再调用的时候安装参数名称去赋值,而不是先后顺序。
# 下面这种调用很明显打印的是
# a= 20
# b= 10
# 30
print(sum(b=10, a=20))

# 方法参数传递中,如果是不可变对象就是直接传递的值(也就是无法在方法中修改),如果是可变对象就是地址值是可以在方法中修改的
# 这点和java类似,就不多讲解,在方法中修改了第一个参数的值但是方法结束后还是打印的20,第二个参数列表反而多了一个参数
def fun(a, b):
    a = 10
    b.append(10)

c = 20
d = [10, 20, 30]
fun(c, d)
print(c)
print(d)

# 返回值传递一个列表,区分列表的奇偶
def fun1(a):
    js = []
    os = []
    for item in a:
        if item % 2:
            js.append(item)
        else:
            os.append(item)
    return os,js

# 返回多个值的时候是会返回一个元组
print(fun1([i for i in range(0, 11)]))

# 方法的默认值:如果每日传递参数则a就等于1
def fun2(a=1):
    pass

# 方法传递可变参数,*arg1代表的是元组,arg2代表的是字典结构的;*arg1只能同时存在一个,**arg2也是同时只能存在一个,但是两个可以共存
def fun3(*arg1,**arg2):
    pass

不过多讲解,个人的看法全都在代码注释中。

二、异常处理语句:

# 介绍:异常处理语句,这个import就是导入,和java的导包差不多
import traceback
try:
    a=int(input('输入第一个数字'))
    b=int(input('输入第二个数字'))
    result=a/b
except ValueError as e:
    traceback.print_exc()
    print('不可以输入除数字以外的',e)
except ZeroDivisionError as e:
    traceback.print_exc() #这个是可以将报错信息打印出来,方便我们知道什么位置报错
    print('被除数不能为0',e)
else:
    #没出先异常就会执行下面的语句
    print('计算结果为:',result)
finally:
    print('无论是否异常都会执行')

 三、类

# 介绍:类
class Student:
    # 类的属性,给了默认值,属于实例对象的属性
    school='lisi'
    # 类似java的构造方法,创建的时候可以赋值
    def __init__(self,name,age):
        self.__home='a' #属性或方法在前面加__,代表属性或者方法只能在类中访问,
        self.name=name
        self.age=age
    # 实例方法
    def study(self):
        print(self.name,'在好好学习')
    # 类方法
    @classmethod
    def run(cls):
        print('pao')
    # 静态方法
    @staticmethod
    def sleep():
        print('在睡觉')

stu=Student('lisi',18)
stu.study()
# 等同上面的调用
Student.study(stu)
# 对象也可以调用类的了方法和静态方法
stu.run()
stu.sleep()
stu.gender='nv'
# 动态属性,只属于这个对象的,其他对象没有,也可以绑定方法
print(stu.gender)

def fun():
    print('zaiwan')
stu.fun=fun()


stu2=Student('aaa',1)
print(stu2.school)
print(stu.name)

四、模块的引入,关于这个只有一个需要注意的:如果你在python文件a中导入oython文件b(都是你自己写的),然后执行文件a,这时候文件b的代码块也会执行,如果需要避免就要将文件b中的代码块改到main方法中,如下:

class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __str__(self):
        return 'name={0},age={1}'.format(self.name,self.age)
def fun1():
    print('等到导入的方法')
if __name__ == '__main__':
    #如果下面的这行不写在这个main下面就会直接执行
    print('等待导入的包')

五、继承,重写

# 介绍:类的继承,重写
class Person(object): #代表继承object类,不写代表默认继承这个类,类中有__str__方法,重写方法就可以不打印地址打印重写方法返回值,类似java的tostring
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def intro(self):
        print('我叫',self.name,'年龄',self.age)

class Student(Person):
    def __init__(self,name,age): #将属性赋值给父属性,副属性方法用super调用
        super().__init__(name,age)
    def intro(self): #重写父的方法,直接重写即可,不需要加@override
        super().intro()
        print('正在学习')

class Teacher(Person):
    def __init__(self,name,age):
        super(Teacher, self).__init__(name,age)
    def intro(self):
        super(Teacher, self).intro()
        print('正在教书')

stu1=Student('张三',15)
stu1.intro()

tea1=Teacher('liu',34)
tea1.intro()

六、多态

# 介绍:多态(感觉没有java的多态多态),object的方法

class Animal:
    def eat(self):
        print('动物吃')

class Dog(Animal):
    def eat(self):
        print('狗吃')

class Cat(Animal):
    def eat(self):
        print('猫吃')

class People:
    def __init__(self,age):
        self.age=age
    def eat(self):
        print('ren')
    def __add__(self, other):
        return self.age+other.age
# 没感觉多态的原因是因为没有数据类型,参数是可以是任意类型,只要参数有对于的方法属性就可以了
def fun(animal):
    animal.eat()

cat=Cat()
dog=Dog()
p=People(1)
fun(cat)
fun(dog)
fun(p)

# 如果想要object对象可以相加重写类的 __add__方法就好了
p2=People(3)
p3=People(4)
print(p2+p3)

# 列表等是有长度的len(lst),入过想要对象也有长度可以重写__len__方法

还有个小demo一个管理系统,感觉对于从java转到python的人来说没什么必要去看那个了。下周有空会更新opencv和pyautogui。python也有许多自带的方法,这里就不一一详解,推荐给大家几个网站自行查看就好了。

关于requests认证使用官方文档:

https://requests-oauthlib.readthedocs.io/en/latest/

python3内置函数API

https://docs.python.org/3/library/functions.html

第3方requests包函数的API

https://docs.python-requests.org/zh_CN/latest/

https://docs.python-requests.org

python3标准库API

https://docs.python.org/3/library/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值