IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python之函数、面向对象编程总结 -> 正文阅读

[Python知识库]python之函数、面向对象编程总结

函数、面向对象编程总结

这一周主要学习了函数和面向对象编程。下面对函数和面向对象编程做一个总结和补充。

函数部分

如何写一个函数

# 已知参数函数模板
def 函数名(参数)...
    return ...
    
# 无法确定参数个数函数模板
def 函数名(*args):
    # 可变参数可以放在for循环中取出每个参数的值
    for arg in args:
        ...
    return ...

# 无法确定是否指定参数名
def 函数名(*args, **kwargs):
    for arg in args: # 没有传入参数名时,执行这一步
        ...
    for value in kwargs.values():# 传入参数名时,执行这一步
        ... 
    return ...
 

定义函数时,写在 * 前面的参数为位置参数,只需要对号入座
写在 *后面的参数为命名关键字参数,必须写成“参数名=参数值”

函数的全局变量与局部变量

全局变量:没有写在任何函数里面的变量
局部变量:定义在函数内部的变量
Python程序中搜索一个变量是按照 LEGB 顺序进行搜索的

Local(局部作用域) ---> Embeded(嵌套作用域) ---> Global(全局作用域) ---> Built-in(内置作用域)
global : 声明使用全局变量或者定义一个局部变量将其放到全局作用域
nonlocal :声明使用嵌套作用域的变量(不使用局部变量)

例题:CRAPS赌博游戏
玩家摇两颗色子,如果第一次摇出了7点或11点,玩家胜;如果摇出了2点、3点、12点,庄家胜;
如果摇出了其他的点数,游戏继续,玩家重新摇色子;如果玩家摇出了第一次摇的点数,玩家胜;
如果玩家摇出了7点,庄家胜;如果玩家摇出其他点数,游戏继续,玩家重新摇色子,直到分出胜负。

游戏开始之前,玩家有1000元的初始资金,玩家可以下注,赢了获得下注的金额,输了就扣除下注的金额,
游戏结束的条件是玩家把钱输光

import random

m = 1000


def roll_dice(num):
    """
    摇色子
    
    :param num: 色子的数量
    :return: 摇出的点数
    """
    q = 0
    for _ in range(num):
        q += random.randrange(1, 7)
    return q


def win():
    """
    赢
    """
    global m
    m += x
    print('玩家胜')

def lose():
    """
    输
    """
    global m
    m -= x
    print('庄家胜')


# x = int(input('输入下注的金额:'))
while m > 0:
    print(f'玩家现有资金:{m}')
    x = 0
    while x <= 0 or x > m:
        try:
            x = int(input('输入下注的金额:'))
        except ValueError:
            pass
    s1 = roll_dice(2)
    print(f'第一次摇出的点数:{s1}')
    if s1 in (7, 11):
        win()
    elif s1 in (2, 3, 12):
        lose()
    else:
        while True:
            s2 = roll_dice(2)
            print(f'游戏继续,玩家摇出的点数:{s2}')
            if s2 == s1:
                win()
                break
            elif s2 == 7:
                lose()
                break
print('玩家破产,游戏结束')

例题2编写一个函数判断一个正整数是不是“快乐数”。
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程,
如果数字变成了1,这个数就是快乐数,如果无限循环始终变不到1,这个数就不是快乐数。

def is_happhy_num(num):
    """
    判断正整数是不是快乐数
    :param num:输入一个正整数
    :return:快乐数返回True,否则返回False
    """
    list1 = []
    while True:
        x = 0
        while num > 0:
            x += (num % 10) ** 2
            num = num // 10

        num = x
        if num not in list1:
            list1.append(num)
        else:
            return False

        if x == 1:
            return True
if __name__ == '__main__':
    x = int(input('输入一个正整数:'))

    if is_happhy_num(x):
        print(f'{x}是快乐数')
    else:
        print(f'{x}不是快乐数')

面向对象编程部分

面向对象编程4大支柱

抽象:提取共性
封装:把数据和操作数据的函数从逻辑上组装成一个整体
继承:扩展已有的类创建新类
多态:给不同对象发出同样的消息,不同对象的执行不同的行为

魔术方法

魔术方法:有特殊用途和意义的方法
__init__:初始化方法
__str__:获得对象的字符串表示
__repr__:获得对象的字符串表示,把对象放到容器中调用print输出
__lt__:进行大小的比较

动态属性与静态方法

动态属性

在运行时可以改变其结构的语言,例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。
在Python中,我们可以动态为对象添加属性

静态方法

们在类里面写的函数,通常称为方法,它们基本上都是发给对象的消息
但是有的时候,我们的消息并不是想发给对象,而是希望发给类,这时候就会用到静态方法。

对象方法、类方法、静态方法都可以通过类名.方法名的方式来调用,区别在于方法的第一个参数到底是普通对象还是类对象,还是没有接受消息的对象

在面向对象的世界中,一切皆为对象,我们定义的类也是对象,所以类也可以接收消息,对应的方法是类方法或静态方法。通过继承,我们可以从已有的类创建新类,实现对已有类代码的复用。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:17:17  更:2021-08-08 11:18:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:47:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码