函数
函数的定义:
函数是编程中一个非常重要的概念,它具有特定功能的代码块
可以在程序中多次被调用。
函数通过接受输入的值(作为参数),执行特定的操作,并返回输出(返回值)
为什么要使用函数
-
代码可以重复使用
-
提高代码的可读性
-
简化复杂性:
可以把复杂的操作拆分成多个小步骤,每一个步骤用函数。
函数的组成
-
定义函数 def (define)
-
函数名(小写开头,见名知意,小驼峰,可以下划线)
def carBrand
def student_name
-
参数( ):
-
函数体 -> 要执行的代码块、记得缩紧
-
返回值 return (return 后面接的什么就返回什么)
# 函数举例
def super_calculator(a, b, c):
d = a * b / c
return d
def greeting_bot(name):
print("Hello " + name)
return "大帅哥"
a = greeting_bot('杨家瑞')
print(a)
#
# def greeting_bot(name):
# print("Hello " + name)
# return "大帅哥"
#
# a = greeting_bot('杨家瑞')
#
# print(a)
# 函数的参数(位置参数、关键子参数)
def bmi_calculator(height,weight, name, age):
bmi_value = weight / height**2
print(f'{name}的年龄是{age},她/他的BMI值是{bmi_value}')
return bmi_value
bmi_calculator(1.8, 100, age=6, name='杨家瑞')
bmi_calculator(1.8, 71, age=18, name='周子睿')
bmi_calculator(1.73, 70, age=30, name='hua')
# 文件存储
with open('demo.txt','w', encoding='utf-8') as f:
f.write('因为所以、科学道理')
f.close()
with open('demo.txt','r',encoding='utf-8') as f:
print(f.read())
# 挑战练习,写一个ATM,txt 文件记录你们的卡余额,用户
# 用户可以选择 存款、取款、查看余额
# 先存钱
def savings():
saving_value = int(input('请输入你要存入的数字>>>'))
with open('bank.txt', 'r', encoding='utf-8') as f:
actual_value = int(f.read())
actual_value += saving_value
with open('bank.txt', 'w', encoding='utf-8') as f:
f.write(str(actual_value))
def balance():
with open('bank.txt', 'r', encoding='utf-8') as f:
actual_value = int(f.read())
print(f'您当前的余额是>>>¥ {actual_value} 元')
return actual_value
def wuwuwu():
money = int(input('请输入你想要取走的金额>>>'))
with open('bank.txt', 'r', encoding='utf-8') as f:
actucal_value = int(f.read())
if actucal_value < money:
print('当前余额不足~请好好挣钱吧')
else:
actucal_value -= money
print(f'取款成果,当前余额 ¥ {actucal_value} 元')
with open('bank.txt', 'w', encoding='utf-8') as f:
f.write(str(money))
bank_operation = {1: savings, 2: balance, 3: wuwuwu}
while True:
print('1 ---> 存,2 ---> 余,3 ---> 取')
user_choice = input('请输入你的选项>>>')
if user_choice == '1':
bank_operation.get(1)()
elif user_choice == '2':
bank_operation.get(2)()
elif user_choice == '3':
bank_operation.get(3)()
else:
print('Invalid Input')
类
面向对象编程 - OOP
在python里面,一切皆是对象
class
class Dog
class School
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
拾音
这个代码的功能是通过麦克风录制音频,并将录制的音频保存到指定的文件中。它使用了 pyaudio
模块进行音频采集,使用 wave
模块保存音频文件。
总结如下:
- 导入模块:
-
wave
: 用于处理.wav
格式的音频文件。 -
pyaudio
: 用于音频输入输出,支持从麦克风采集音频数据。
record_audio()
函数:
-
参数:
filename
,表示要保存的音频文件名。 -
步骤:
-
实例化
PyAudio
对象: 创建一个音频接口对象mic
,用于打开音频流。 -
打开音频流: 使用
mic.open()
打开麦克风的音频输入流,设置采样格式为 16 位,单声道,采样率为 44100 Hz,每次读取 8192 帧的音频数据。 -
录音过程:
- 录音时间为 5 秒,循环读取麦克风的音频数据块,并将数据存储到
frame
列表中。
- 关闭流和麦克风:
- 停止音频流,关闭流,并终止
PyAudio
实例。
- 保存音频:
- 使用
wave
模块打开一个.wav
文件进行写入,设置声道数、采样宽度、采样率,并将录制的音频数据写入文件,最后关闭文件。
- 调用
record_audio()
:
- 调用
record_audio('test.wav')
,开始录音并将音频保存为test.wav
文件。
代码的整体功能:
该代码通过麦克风录制 5 秒的音频,并将其保存为 .wav
文件格式,采样率为 CD 标准的 44100 Hz,音频为单声道,采样格式为 16 位整数。
工具相关
git
GitHub
vpn
语音模型vosk