• 面向过程, 面向对象, 类和对象, 类与数据类型


    面向过程编程

    函数内定义注释可以提取

    def f1():
        """f1的注释"""
        pass
    print(f1.__doc__)   #函数内定义注释可以将注释提取出来
    
    

    面向过程编程:面向(对着)-->过程(流程/步骤)-->编程(码代码)

    IPO

    iput(输入)-->Process(过程/处理)-->Output(输出) #主路线

    塑料(定义变量)-->融化-->丢到瓶子的模具里面-->瓶子(输出一个结果)

    类似于车间中的(流水线工作过程)-->面向对象编程

    未来码代码的目的:输入一些变量,然后通过一系列步骤改变变量,然后得到你想要的结果

    def compare2(x,y):
        if x > y:
            return x
        else:
            return y
    x = input()
    y = input()
    res = compare2(x,y)
    print(res)   
    

    面向过程编程:一步一步(一个函数一个函数),上一个函数的输出是下一个函数的输入

    编程:控制变量不断的变化

    优点:代码的独立性提高了(分函数书写,需要时调用),流程清晰

    缺点:一个错误直接让程序崩掉

    编程

    控制变量不断变化

    怎么找bug

    x = 10
    y = 20
    
    #流程1
    #变量每变化一次,就打印一次
    #流程(方法有无数种)-->需求的实现是多样化的,压根就没有唯一解
    #流程2
    
    res = 50	#实际结果res = 40
    
    

    debug的来源

    x = 10
    #流程
    print('第一步',x)
    x *= 10
    x *=0
    
    print(1/x)
    print('第二步',x)
    #流程
    print('第三步',x)
    x += 2
    print('第四步',x)
    

    1.定位bug,不一定是那一行出错了,从该行往上找错

    2.打印变量变化的状态,判断该流程是否有问题

    面向对象编程

    #面向(对象)对象(object)编程(码代码)-->(一个孙悟空就是一个对象,一个猪八戒也是一个对象)
        #西游记-->4个和尚-->悟空(七十二变,金箍棒)/沙和尚(36变,九齿钉耙)/猪八戒/唐僧
        #-->1匹马-->小白龙
        #做一个游戏:西游记()
            #1.孙悟空
            #2.沙和尚
            #3.猪八戒
            #4.唐僧
        #这种方法造出来的游戏-->通过面向编程造的-->对象与对象之间交互
            #优点:孙悟空的变化不会对其他对象造成影响
            #缺点:异常复杂
        #面向对象编程:就是对象与对象之间交互
    

    类和对象

    #对象:一系列属性(特征)和技能(方法)的结合体
    
    '''
    nick对象:
        姓名:nick
        身高:180
        体重:140
        年龄:18
        技能:
            上课
    
    学生类:
        姓名
        身高
        体重
        年龄
        技能:
            选课
    
    老师类:
        姓名
        身高
        体重
        年龄
        技能
            上课
    '''
    #类:(模板/类别)划分了对象,具有相同的属性和技能的对象属于同一类(自己控制)
        #1000对象,类小于1000种
        #现实世界中先有对象才会有类,但是python中先有类后有对象
    
    #定义类
    class Student():
        def __init__(self,name,height,weight,age):
            self.name = name
            self.height = height
            self.weight = weight
            self.age = age
        def choose_course(self):
            print(f'{self.name}正在选课')
    
    #定义对象
    yutong = Student('宇通',150,170,16)
    print(yutong.name)
    print(yutong.height)
    print(yutong.weight)
    print(yutong.age)
    yutong.choose_course()
    #如果该对象属于这个类,那么类拥有的,对象一定也拥有
    

    定制对象独有属性

    # class Student():
    #     school = 'q34y'
    #     name = 'd12'
    #     height = 1
    #     weight = 1000
    #     def choose_course(self):    #self实例化对象
    #         print('正在选课')
    # stu1 = Student()
    # print(stu1.name)
    # stu2 = Student()
    # print(stu2.name)
    #
    # def init(obj,name,height,weight):
    #     obj.name = name
    #     obj.height = height
    #     obj.weight = weight
    # stu3 = Student()
    # init(stu3,'cql',172,120)
    # print(stu3.name)
    # print(stu3.height)
    # print(stu3.weight)
    
    class Student():
        school = 'oldboy'
        def __init__(self,name,weight,height):  #init函数初始化类定制的独有属性
            self.name = name
            self.weight = weight
            self.height = height
            print(self)
    stu4 = Student('lyz',6,20)  #类中定义了几个属性,实例化对象中就需要传入几个参数
    
    print('stu4:',stu4)
    print(stu4.__dict__)    #获取对象stu4的所有属性并以字典形式存储
    print(stu4.name)
    print(stu4.weight)
    print(stu4.height)
    stu5 = Student('lcy',54,130)
    print('stu5:',stu5)
    print(stu5.__dict__)
    print(stu5.name)
    print(stu5.weight)
    print(stu5.height)
    #类在对象实例化是就会调用类中的函数
    

    LeetCode检测机制

    class Solution:
        def twoSum(self, nums: list, target: int) -> list:
            for i in range(len(nums), -1, -1):  # for i in range(4) == for i in [0,1,2,3]:
                for j in range(i + 1, len(nums)):  # [1,2,3]
                    if nums[i] + nums[j] == target:
                        return [i, j]
    nums = [2, 7, 11, 15]
    target = 9
    result = [0,1]
    def main(nums,target,result):
        s = Solution()
        res = s.twoSum(nums,target)
        if res == result:
            print('tongguo')
        else:
            print('butongguo')
    main(nums,target,result)
    

    类与数据类型

    # lt = list([2,3,1])
    # lt.sort()
    # print(lt)
    
    # class List:
    #     def __init__(self,lis):
    #         print(self)
    #         self = lis
    #         print(self)
    #         pass
    # lt = List([2,3,1])
    # print(lt)
    
    class List:
        def __init__(self,lis):
            self.lis = lis
        def paixu(self):    #self == lt
            self.lis.sort()
    
    lt =List([2,3,1,456,231,789])
    print(lt.lis)
    lt.paixu()
    print(lt.lis)
    #python中一切(数据类型)皆对象,一切皆数据类型
        # dic1 = dic()
        # dic2 = dic()
    
    x = int(10)
    y = float(10.1)
    def func():
        pass
    print(func)
        #1.作为对象
            #1.引用   x = 10; y = x
            #2.作为容器类元素 lis = [x,func,Student]
            #3.作为函数参数 def func(x, func, Student)
            #4.作为函数返回值, return x, func, Student
    
    def func():
        print('from func')
    lis = [1,2,func]
    lis[2]()
    
    def f2(f):
        f()
    f2(func)
    
    def f3():
        return func
    f3()()   #调用f3,返回对象函数func,在通过func()调用对象func函数
    
    list_ = [23,41,58,9,5,27,15]
    #冒泡排序算法
    def maopao():
        for j in range(len(list_)-1):
            for i in range(0,len(list_)-1-j):
                if list_[i] > list_[i+1]:
                    list_[i], list_[i+1] = list_[i+1],list_[i]
    maopao()
    print(list_)
    
    #选择排序算法
    def xuanze():
        min = 0
        for j in range(len(list_)):
            for i in range(j+1, len(list_)):
                if list_[i] < min:
                    min = list_[i]
                    list_[j] = min
    xuanze()
    print(list_)
    
  • 相关阅读:
    ios7--UIImageView
    ios6--UILabel
    ios5--计算器
    ios4--UIView的常见属性(尺寸和位置)
    ios2--UIView的常见属性
    PG数据库获取最近四个小时 使用产品的用户审计信息
    可添加头部尾部RecyclerView,很帅哦~
    http请求及缓存框架 GalHttprequest
    据说年薪30万的Android程序员必须知道的帖子
    Android显示GIF动画 GifView
  • 原文地址:https://www.cnblogs.com/-406454833/p/11469499.html
Copyright © 2020-2023  润新知