鱼C论坛

 找回密码
 立即注册
楼主: wideband

类学习

[复制链接]
 楼主| 发表于 2023-3-3 14:00:22 | 显示全部楼层
高阶函数,函数当成参数进行传递

def sum(a,b,f):
    return f(a)+f(b)

result1 = sum(-1,2,abs)
result2 = sum(1.5,2.7,round)

print(result1) #3
print(result2) #5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-4 10:34:06 | 显示全部楼层
精度问题

  1. print(0.1 + 0.2 == 0.3)

  2. ###False

  3. import math
  4. print(math.isclose(0.1 + 0.2, 0.3))
  5. ###True

  6. print(0.1+0.2)
  7. #0.30000000000000004
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-4 15:58:09 | 显示全部楼层
for循环,更节省时间:

  1. numbers = (1, 3, 6)
  2. newNumbers = list(numbers)
  3. print(newNumbers)

  4. import time
  5. start = time.perf_counter()
  6. n = 0

  7. for i in range(0,100000000):
  8.     pass
  9.     n = n+1
  10.    
  11. end = time.perf_counter()
  12. print(n)
  13. print(end - start)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-5 09:42:18 | 显示全部楼层
f.seek(2,0)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-13 14:36:59 | 显示全部楼层
百度的语音技术开发平台下创建一个   语音识别的     应用识别 //www.360doc.com/content/22/1210/15/68330161_1059726912.shtml

一在百度智能云创建语音识别应用。cloud.baidu.com  , 产品服务---人工智能---语音技术  , 创建应用,默认立即创建。

二 、获取Access token , 通过导入requests包,使用项目API key 和Secret Key 获取。运行,封装成一个函数。

三、通过 Post 将上传音频文件,获得语音识别结果。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-13 17:55:52 | 显示全部楼层
pip install certifi

pip install chardet   # No module named 'chardet'

pip install idna

pip install urllib3
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-26 18:37:16 | 显示全部楼层
语音关键词识别,并转换文字输出OK:

  1. # -*- coding: utf-8 -*-
  2. # 使用讯飞语音转写API进行音频转文字#
  3. import base64
  4. import hashlib
  5. import hmac
  6. import json
  7. import os
  8. import time
  9. import requests
  10. import urllib
  11. import re
  12. import paddlehub as hub
  13. mode = hub.Module(name='auto_punc', version='1.0.0')
  14. lfasr_host = 'https://raasr.xfyun.cn/v2/api'
  15. # 请求的接口名
  16. api_upload = '/upload'
  17. api_get_result = '/getResult'


  18. class RequestApi(object):
  19.     def __init__(self, appid, secret_key, upload_file_path):
  20.         self.appid = appid
  21.         self.secret_key = secret_key
  22.         self.upload_file_path = upload_file_path
  23.         self.ts = str(int(time.time()))
  24.         self.signa = self.get_signa()

  25.     def get_signa(self):
  26.         appid = self.appid
  27.         secret_key = self.secret_key
  28.         m2 = hashlib.md5()
  29.         m2.update((appid + self.ts).encode('utf-8'))
  30.         md5 = m2.hexdigest()
  31.         md5 = bytes(md5, encoding='utf-8')
  32.         # 以secret_key为key, 上面的md5为msg, 使用hashlib.sha1加密结果为signa
  33.         signa = hmac.new(secret_key.encode('utf-8'), md5, hashlib.sha1).digest()
  34.         signa = base64.b64encode(signa)
  35.         signa = str(signa, 'utf-8')
  36.         return signa


  37.     def upload(self):
  38.         upload_file_path = self.upload_file_path
  39.         file_len = os.path.getsize(upload_file_path)
  40.         file_name = os.path.basename(upload_file_path)

  41.         param_dict = {}
  42.         param_dict['appId'] = self.appid
  43.         param_dict['signa'] = self.signa
  44.         param_dict['ts'] = self.ts
  45.         param_dict["fileSize"] = file_len
  46.         param_dict["fileName"] = file_name
  47.         param_dict["duration"] = "200"
  48.         data = open(upload_file_path, 'rb').read(file_len)
  49.         response = requests.post(url =lfasr_host + api_upload+"?"+urllib.parse.urlencode(param_dict),
  50.                                 headers = {"Content-type":"application/json"},data=data)
  51.         result = json.loads(response.text)
  52.         return result


  53.     def get_result(self):
  54.         uploadresp = self.upload()
  55.         orderId = uploadresp['content']['orderId']
  56.         param_dict = {}
  57.         param_dict['appId'] = self.appid
  58.         param_dict['signa'] = self.signa
  59.         param_dict['ts'] = self.ts
  60.         param_dict['orderId'] = orderId
  61.         param_dict['resultType'] = "transfer,predict"
  62.         status = 3
  63.         # 建议使用回调的方式查询结果,查询接口有请求频率限制
  64.         while status == 3:
  65.             response = requests.post(url=lfasr_host + api_get_result + "?" + urllib.parse.urlencode(param_dict),
  66.                                      headers={"Content-type": "application/json"})
  67.             result = json.loads(response.text)
  68.             status = result['content']['orderInfo']['status']
  69.             if status == 4:
  70.                 break
  71.             time.sleep(5)
  72.         #print("get_result resp:",result)
  73.         return result

  74. #这里是音乐文件的文件夹
  75. dir_path = r'D:\\pythonProject13\\mp3\\'
  76. fileList=[]

  77. # 输入讯飞开放平台的appid,secret_key和待转写的文件路径
  78. if __name__ == '__main__':
  79.     keyString=['微信','老爸']
  80.     fileList=os.listdir(dir_path)
  81.     for fileName in fileList:
  82.         time.sleep(2)
  83.         print("正在识别:"+fileName)
  84.         dir=dir_path+fileName
  85.         api = RequestApi(appid="1485995d",
  86.                         secret_key="a5fe900e4baff4234241690022143024",
  87.                         upload_file_path=dir)
  88.         res=api.get_result()
  89.         obj=res['content']['orderResult']




  90.         pattern = re.compile("[\u4e00-\u9fff]+")

  91.         # 用正则匹配所有的汉字
  92.         matches = pattern.findall(str(obj))
  93.         sencent = ""
  94.         for i in range(len(matches)):

  95.             sencent += matches[i]


  96.         print(sencent)
  97.         punc_texts = ""
  98.         long = (len(sencent)/10)
  99.         for i in range(10):

  100.             punc_texts += mode.add_puncs(sencent[int(i*long):int(i*long+long)])[0]
  101.         #with open("202332626.txt","w") as f:
  102.         with open("D:/pythonProject13/mp3/" + fileName + "_0326.txt", "w") as f:
  103.             f.write(punc_texts)


  104.         for key in keyString:
  105.             if(key in obj):
  106.                 print(fileName+"--检测到关键字【"+key+"】")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-29 08:44:28 | 显示全部楼层
print("我明年%s岁,学号%06d,体重%.2f"%(age+1,id,weight))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-30 09:34:36 | 显示全部楼层
codewars.com
等级提升练习题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-18 09:53:06 | 显示全部楼层
可迭代对象:可以用 for 循环遍历的对象,iter

from collections import Iterable
isinstance (a, Iterable)

如果是 True 则是;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-18 09:54:28 | 显示全部楼层
可迭代 对象,转换为  迭代器: aa = iter(a)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-17 08:58:06 | 显示全部楼层
创建实例属性的三种方法:
1)实例对象化;
2)实例对象 调用实例方法;
3)  构造函数:又称魔术方法,不需手动调用;

1: 通过类对象(不同于 实例对象)调用实例方法;
2: self:  实例对象地址;
3:谁调用,传递谁;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-5 10:48:44 | 显示全部楼层
关于函数说明:

1:python里面,函数 :这3个功能一样;   1)不写 return          2) return       3)return None

2:函数可以返回多个值,以元组形式 输出; 但是 可以用多个变量接收 函数得多个返回值,直接拆包;

3:函数运行中,遇到return 会终止函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-14 11:11:34 | 显示全部楼层
类 和 实例对象,分别在不同的内存空间,所以:

实例对象不可以直接访问类中的方法和属性, 需要借助类中属性:__class_ _ 属性,用来保存类对象 在内存中的地址。

__class_ _ 属性,不是方法。实例对象内部 只会保存一 些属性 , 方法 保存 在类对象中。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-14 14:13:48 | 显示全部楼层
鸭子类型,多态,兄弟类,混合类: 一个类名 叫 minin
前端:python APP
后端 :golang 微服务器分发
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-14 15:41:11 | 显示全部楼层
cls: 类对象
self : 实例对象
object :python3的 基类
__init__

__new__

__str__
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-15 07:09:22 | 显示全部楼层
类属性是所有实例共享的属性,可以通过类名或实例对象来进行访问;

而实例属性是特定实例独有的属性,只能通过实例对象来进行访问。

另外,当通过实例对象访问一个属性时,Python会先在实例中查找该属性,如果没有找到,则继续到该实例所属的类中查找,直到最终到达该属性的定义处。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-17 06:25:45 | 显示全部楼层
知识点补课:

1)元组拆包   //www.bilibili.com/video/BV1o4411M71o?p=195&vd_source=bbd2966da727b3376515872084138922
num1,num2=(1,2) ,也可以接收 函数返回2个值的,比如 函数体内:return 1,2

2) 字典拆包
dict1 ={"name":"Tom","age":8}
a,b = dict1
print(a,b), print(dict1[a],dict1[b])  #分别name, age  和 Tom ,8
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-17 07:03:04 | 显示全部楼层
引用://www.bilibili.com/video/BV1o4411M71o?p=199&vd_source=bbd2966da727b3376515872084138922
快递,靠什么 进行发送的? 地址; 值靠什么传递?地址(引用);
a = 1  #  一个内存,里面存放了 1,贴上 标签 a,就是 地址,引用
b =a   #  把 a的地址 也赋给 b ,所以,此内存 等于有了2 个标签 a,b ,但是 实际是同一个地址;

在 Python 中,可变类型的数据包括:

列表(list):可以通过增删改查操作改变其内容
字典(dict):可以通过增删改查操作改变其内容
集合(set):可以通过增删操作改变其内容
Bytearray:可以通过修改操作改变其内容

需要注意的是,不可变类型的数据有:数字(int、float)、字符串(str)、元组(tuple)。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-17 07:41:54 | 显示全部楼层
super() 是一个内置函数,可以用于调用父类的方法。

它能够访问父类中的属性和方法,在子类中可以对其进行修改或扩展。

  1. class Parent:
  2.     def __init__(self, name):
  3.         self.name = name

  4.     def say_hello(self):
  5.         print("Hello, " + self.name)


  6. class Child(Parent):
  7.     def say_hello(self):
  8.         super().say_hello()  # 调用父类方法
  9.         print("Welcome!")


  10. child = Child("Tom")
  11. child.say_hello()
复制代码


子类 Child 重写了父类 Parent 的 say_hello() 方法,并使用 super() 方法在子类中调用了父类的同名方法。这样,在子类中先输出 "Hello, Tom",再输出 "Welcome!"。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 19:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表