Python和Linux学习笔记

视频来源:黑马程序员Python教程_600集Python从入门到精通教程(懂中文就能学会)

地址:036-方法的重写-01-覆盖父类方法,重写子类方法实现_哔哩哔哩_bilibili

344-396 节记录笔记


函数参数和返回值

1.1 作用

01. 如果函数 内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部

02. 如果希望一个函数 执行完成后,向外界汇报执行结果,就可以增加函数的返回值

1.2 函数的返回值 进阶
def measure():
    """测量温度和湿度"""

    print("测量开始")
    temp = 37
    wetness = 59
    print("测量结束")

    # 元组可以包含多个数据,可以使用元组返回多个返回值
    # 如果函数返回的类型是元组,可以省略小括号

    return temp, wetness


result = measure()
print(result)

# 接受元组的返回值,可以使用多个变量,接受函数的返回值
# 注意:使用多个变量接受元组的返回值时,变量的个数与元组中元素的个数相等
gl_temp,gl_wetness = measure()
print(gl_temp)
print(gl_wetness)
1.3 函数的参数
1.3.1 不可变和可变参数

01. 针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用

02. 传递参数是可变类型,在函数内部,使用方法修改了内容,同样会影响到外部的数据

1.3.2 缺省参数

01. 定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫缺省参数

02. 带有默认值的缺省函数必须放在参数列表的末尾

03. 调用多个默认值的缺省参数时,在参数列表中指明

def print_info(name, gender=True):
    """
    :param name:学生的姓名
    :param gender:学生的性别
    """
    gender_text = "男生"
    if not gender:
        gender_text = "女生"
    print("%s 是 %s" % (name, gender_text))


# 使用最常见的值作为默认值
print_info("老王",)
print_info("小美", False)
print_info("xiaoming")
1.3.3 多值参数

01. 一个函数能够处理的参数是不确定的,可以使用多值参数

02. 参数名增加 * 接收元组数据,增加 ** 接收字典数据

def demo(num, *nums, **person):

    print(num)
    print(nums)
    print(person)


# demo(1)
demo(1, 1, 2, 3, 4)
demo(1, 1, 2, 3, 4, name="小明", age=18)
1.4 函数的递归

特点:一个函数内部自己调用自己

01. 内部代码相同,针对参数不同,处理结果不同

02. 函数的出口,当参数满足一个条件时,函数不再执行

def sum_number(num):

    print(num)

    # 递归的出口,当参数满足一个条件时,函数执行结束
    if num == 1:
        return
    sum_number(num - 1)


sum_number(3)

面向对象基本概念

01. 注重 对象和职责,不同的对象承担不同的职责

02. 根据职责在一个对象封装多个方法

1.1 类和对象(图纸造飞机)
1.1.1 类和对象的关系

是模板,对象根据类这个模板创建出来,应该先有类,再有对象

1.1.2 类的三要素

01. 类名 这类事物的名字,满足大驼峰命名法

02. 属性 这类事物有什么样的特征

03. 方法 这类事物有什么样的行为

1.1.3 类名的确定

名词提炼法 分析 整个业务流程,出现的名词,通常就是找到的

1.1.4 属性和方法的确定

01. 对 对象的特征描述,通常可以定义成属性

02. 对象具有的行为(动词),通常可以定义为方法

2.1 面向对象基本语法
2.1.1 dir 内置函数

01. __方法名__ 格式的方法是 Python 提供的 内置方法/属性

02. 使用内置函数 dir 传入标识符/数据,可以查看对象内的 所有属性及方法

2.1.2 定义简单的类

class 类名:

        def 方法1(self, 参数列表)

        

        def 方法2(self, 参数列表)

注意:类名 的命名规则满足 大驼峰命名

2.1.3 创建对象

对象变量 = 类名()

十进制十六进制都是用来表达数字的,只是表示方式不一样

十进制十六进制的数字之间可以来回转换

%d 可以以 10 进制输出数字

%x 可以以 16 进制输出数字

3.1 初始化方法

类名 () 创建对象时,自动执行以下操作

01. 为对象在内存中分配空间 -- 创建对象

02. 为对象的属性 设置初始值 -- 初始化方法(init)

__init__ 方法专门用来定义一个类 具有哪些属性的方法!

3.1.1 初始化的同时设置初始值

开发中,希望在创建对象的同时,就设置对象的属性,可以对 __init__ 方法改造

01. 希望设置的属性值,定义成 __init__ 方法

02. 在方法内部使用 self.属性值 = 形参 接受外部传递的参数

03. 创建对象时,使用 类名(属性1,属性2)调用

class Cat:

    def __init__(self, new_name):
        print("这是一个初始化方法")

        # 定义属性
        # self.属性名 = 属性的初始值
        self.name = new_name


# 使用类名()创建对象时,会自动调用初始化方法 __init__
tom = Cat("TOM")
print(tom.name)
3.1.2 内置方法和属性
序号方法名类型作用
01__del__方法对象被从内存中销毁前,会被自动调用
02__str__方法返回对象描述的信息,print 函数输出使用

01. 创建对象时,为对象分配完空间后,系统自动调用__init__方法

02. 当一个对象被从内存中销毁前,系统会自动调用__del__方法

03. 希望使用 print 输出变量时,能够打印自定义内容,就可以利用__str__方法

注意:__str__ 方法必须返回一个字符串

class Cat:

    def __init__(self, new_name):

        self.name = new_name

        print("%s 来了" % self.name)

    def __del__(self):

        print("%s 走了" % self.name)

    def __str__(self):

        return "我是小猫[%s]" % self.name


# tom 是一个全局变量
tom = Cat("Tom")
print(tom)
4.1 封装

01. 面向对象编程的第一步--将 属性方法 封装到一个类中

02. 外界 使用 创建 对象,然后 让对象调用方法

03. 对象方法的细节 都被 封装类的内部

注意:在对象方法的内部,是可以直接访问对象的属性的

在同一个类中,创建的多个对象之间,属性互不干扰

4.1.1 身份运算符

身份运算符用于比较两个对象的内存地址是否一致 -- 是否是同一个对象的引用

在 Python 中针对 None(空对象) 比较时,使用 is 判断

运算符描述实例
isis 判断两个标识符是不是引用同一个对象x is y
is notis not 判断两个标识符是不是引用不同对象x is not y,类似id(a) != id(b)
4.1.2 is 与 == 区别

is 用于判断 两个变量 引用对象是否为同一个

== 用于判断 引用变量的值 是否相等

4.2 私有属性和私有方法

01. 私有属性 就是 对象 不希望公开的 属性

02. 私有方法 就是 对象 不希望公开的 方法

4.2.1 定义方式

定义属性或方法时,在 属性名或者方法名前 增加两个下划线,定义的就是 私有 属性或方法

class Women:

    def __init__(self, name):

        self.name = name
        self.__age = 18

    def secret(self):
        # 在对象方法内部,是可以访问对象的私有属性的
        print("[%s]年龄是[%d]" % (self.name, self.__age))


han = Women("徐梦涵")

# 私有属性,在外界不能够直接访问
print(han.age)
4.2.2 仿私有属性和私有方法

Python 中,并没有 真正意义 的私有

01. 在给属性、方法 命名时,实际是对 名称 做了一些特殊处理,使得外界无法访问到

02. 处理方式:在 名称 前面加上 _类名 => _类名__名称

4.3 继承
4.3.1 单继承

继承的概念:子类 拥有 父类 的所有 方法属性

class 类名(父类名):

        pass

 子类 拥有 父类 以及 父类的父类 的所有 属性方法

没有继承关系的不能调用其 属性方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值