Python高难度代码例子、Python最复杂代码例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python高难度代码例子、Python最复杂代码例子相关的知识,希望对你有一定的参考价值。

参考技术A #IT教育# #IT# #程序员# #人工智能#

最近学习pytorch,看到下面的Python高难度代码例子和Python最复杂代码例子:

from google.colab import output as colab_output
from base64 import b64decode
from io import BytesIO
from pydub import AudioSegment

RECORD = """
const sleep = time => new Promise(resolve => setTimeout(resolve, time))
const b2text = blob => new Promise(resolve =>
const reader = new FileReader()
reader.onloadend = e => resolve(e.srcElement.result)
reader.readAsDataURL(blob)
)
var record = time => new Promise(async resolve =>
stream = await navigator.mediaDevices.getUserMedia( audio: true )
recorder = new MediaRecorder(stream)
chunks = []
recorder.ondataavailable = e => chunks.push(e.data)
recorder.start()
await sleep(time)
recorder.onstop = async ()=>
blob = new Blob(chunks)
text = await b2text(blob)
resolve(text)

recorder.stop()
)
"""

def record(seconds=1):
display(ipd.Javascript(RECORD))
print(f"Recording started for seconds seconds.")
s = colab_output.eval_js("record(%d)" % (seconds * 1000))
print("Recording ended.")
b = b64decode(s.split(",")[1])

fileformat = "wav"
filename = f"_audio.fileformat"
AudioSegment.from_file(BytesIO(b)).export(filename, format=fileformat)
return torchaudio.load(filename)

waveform, sample_rate = record()
print(f"Predicted: predict(waveform).")
ipd.Audio(waveform.numpy(), rate=sample_rate)

js 的Promise函数对象编程,字符串javascript函数对象,IPython解释js对象,解释结果和python代码结合,IPython Shell显示非字符串数据,python音频使用IPython简单调用。

复杂Python模块下的多知识点结合代码,是Python高难度代码的体现。

Js的Promise理解为动态函数,比C++的类成员函数和全局函数这类静态形式的函数处理灵活,不过初学者理解起来麻烦。代码里sleep和b2text都代表一些处理函数,也就是几行代码,而不是数据。通常来讲,变量一般代表数据,但是这里代表了指令。

Python中的面向对象编程(类编程)由简单到复杂的示例代码

关于本文代码中的self的含义,大家可参考下面这篇博文:
https://blog.csdn.net/wenhao_ir/article/details/125384347

目录

01-最简单的Python面向对象编程(类编程)示例代码

class Fruit:
    color = 'red'

    def taste(self):
        return 'delicious'


apple = Fruit()
a_character = apple.color
b_character = apple.taste()

print('\\na_character:'.format(a_character))
print('b_character:'.format(b_character))

运行结果如下图所示:

02-类中的成员函数引用类的成员变量的情况

class Staff:  # Staff为员工的意思
    bonus = 30000  # bonus为津贴、奖金的意思

    def salary(self):  # salary为工资的意思
        salary = 10000+self.bonus
        return salary


zhang_san = Staff()
zhang_san_salray = zhang_san.salary()

运行结果如下所示:

03-带构造函数(初始化函数)的情况

class Staff:  # Staff为员工的意思
    def __init__(self, bonus):  # bonus为津贴、奖金的意思
        self.bonus = bonus

    def salary(self):  # salary为工资的意思
        salary = 10000+self.bonus
        return salary


zhang_san = Staff(3000)
zhang_san_salray = zhang_san.salary()

运行结果如下:

04-成员函数带参数(不包括构造函数)

class AnimalBaseClass:
    def __init__(self, num):
        self.animallegs = num
        self.head_num = 0

    def walk(self):
        print('走')

    def cry(self):
        print('叫')

    def get_legs_num(self):
        print(self.animallegs)

    def input_head_num(self, num2):
        self.head_num = num2

    def get_head_num(self):
        print(self.head_num)


animal = AnimalBaseClass(4)
animal.input_head_num(1)

animal.get_legs_num()
animal.get_head_num()

上面的代码中,成员函数input_head_num()是带了参数的。
运行结果如下:

05-类的继承(父类与子类)

class AnimalBaseClass:
    def __init__(self, num):
        self.animallegs = num

    def walk(self):
        print('走')

    def cry(self):
        print('叫')

    def get_legs_num(self):
        print(self.animallegs)


class BirdClass(AnimalBaseClass):
    head_num = 1

    def cry(self):
        print('吱吱叫')

    def run(self):
        print('跑')

    def get_head_num(self):
        print(self.head_num)


piyo_suke = BirdClass(2)
piyo_suke.cry()
piyo_suke.run()
piyo_suke.get_legs_num()
piyo_suke.get_head_num()

在上面的代码中,类BirdClass继承于类AnimalBaseClass,它拥有类AnimalBaseClass的变量和成员函数。
运行结果如下:

当父类和子类都拥有同样名称的成员函数时,子类调用这个成员函数时会优先调用子类中成员函数,这个功能叫重写(覆盖),英文中的叫法叫“override”所以上面的代码中语句

piyo_suke.cry()

的运行结果为“吱吱叫”,而不是“叫”。
不仅是一般的成员函数能被改写,构造函数也可以在子类中重写,比如下面的代码:

class AnimalBaseClass:
    def __init__(self, num):
        self.animallegs = num

    def walk(self):
        print('走')

    def cry(self):
        print('叫')

    def get_legs_num(self):
        print(self.animallegs)


class BirdClass(AnimalBaseClass):
    def __init__(self, num1, num2):
        self.animallegs = num1
        self.head_num = num2

    def cry(self):
        print('吱吱叫')

    def run(self):
        print('跑')

    def get_head_num(self):
        print(self.head_num)


piyo_suke = BirdClass(3, 1)
piyo_suke.cry()
piyo_suke.run()
piyo_suke.get_legs_num()
piyo_suke.get_head_num()

上面的代码中,子类BirdClass的构造函数和父类AnimalBaseClass不一样。
运行结果如下:

要注意,你的代码中用到了哪些成员变量,你在构造函数就要注意把它初始化,否则调用时会出错,比如下面这样写就不行:

class BirdClass(AnimalBaseClass):
    def __init__(self, num2):
        self.head_num = num2

    def cry(self):
        print('吱吱叫')

    def run(self):
        print('跑')

    def get_head_num(self):
        print(self.head_num)


piyo_suke = BirdClass(1)
piyo_suke.cry()
piyo_suke.run()
piyo_suke.get_legs_num()
piyo_suke.get_head_num()

上面的代码中,成员函数get_legs_num()用到了成员变量animallegs,但是没有进行初始化,所以在调用语句piyo_suke.get_legs_num()时会报下面这样的错:

一些与代码规范化相关的建议

在代码的书写格式上注意以下几点(非必须,但是这样书写出来的代码漂亮好看且规范):

  • 成员变量与成员函数之间要有一个空行;
  • 成员函数与成员函数之间要有一个空行;
  • 类与主体代码之间要有两个空行;
  • 类与类之间也要有个两个空行;
  • 类名用驼峰法命名(关于命名规则,可参考博文 https://blog.csdn.net/wenhao_ir/article/details/123117194);

以上是关于Python高难度代码例子、Python最复杂代码例子的主要内容,如果未能解决你的问题,请参考以下文章

python下代码优化的一个例子

python中面向对象(oop)

python基础之函数

Python基础之面向对象基本概念

python之初体验

Python 控制流代码混淆简介,加大别人分析你代码逻辑和流程难度