提交 8d7df419 编写于 作者: W wizardforcel

2019-12-05 12:02:10

上级 a6c316ab
......@@ -27,7 +27,7 @@ JavaScript Object Notation(JSON)是一种数据交换格式。 虽然最初
```
Then parse the JSON object like this:
之后像这样解析 JSON 对象:
```py
import json
......@@ -38,8 +38,7 @@ print(obj['gold'])
### 从 URL 解析 JSON
您可以直接从网络上获取 JSON 对象,并将其转换为 python 对象。 这是通过 API 端点
完成的
您可以直接从网络上获取 JSON 对象,并将其转换为 python 对象。 这是通过 API 端点完成的
```py
import json
......
......@@ -4,12 +4,9 @@
在 python 中读取 json 文件非常容易。 在本文中,我们将说明如何从磁盘读取 JSON 文件并在 python 中使用它。
_ 什么是 JSON?_
[JSON](/json) 是一种在整个 Internet 上使用的数据交换格式。 **JSON** (JavaScript 对象表示法)可用于所有高级编程语言。
什么是 JSON?JSON 是一种在整个 Internet 上使用的数据交换格式。 **JSON** (JavaScript 对象表示法)可用于所有高级编程语言。
_ 如何在 python 中使用 JSON?_
这种工作方式是首先在磁盘上放置一个 json 文件。
然后,程序将加载文件进行解析,解析,然后即可使用它。
如何在 python 中使用 JSON?这种工作方式是首先在磁盘上放置一个 json 文件。然后,程序将加载文件进行解析,解析,然后即可使用它。
......@@ -17,20 +14,20 @@ _ 如何在 python 中使用 JSON?_
### JSON 文件
在磁盘上创建一个文件(命名为:example.json)。 下面的 python 程序读取 json 文件并直接使用值。
在磁盘上创建一个文件(命名为:`example.json`)。 下面的 python 程序读取 json 文件并直接使用值。
该文件可以包含一个衬纸。 example.json 的文件内容为:
该文件可以包含一个衬纸。`example.json`的文件内容为:
```py
{"usd":1,"eur":1.2,"gbp": 1.2}
```
Save the file to example.json.
将文件保存为`example.json`
### python 示例
然后在下面创建程序并运行
然后在下面创建程序并运行:
```py
import json
......@@ -49,4 +46,4 @@ print("gbp: " + str(obj['gbp']))
```
The above program will open the file ‘example.json’ and parse it. You can access the JSON data like any variables.
\ No newline at end of file
上面的程序将打开文件`example.json`并进行解析。 您可以像访问任何变量一样访问 JSON 数据。
\ No newline at end of file
......@@ -6,7 +6,7 @@
使用装饰器向现有功能添加功能。 这称为元编程。
一个函数可以将一个函数作为参数(_ 要修饰的函数 _),并返回带或不带扩展名的相同函数。
一个函数可以将一个函数作为参数(要修饰的函数),并返回带或不带扩展名的相同函数。
扩展功能有时非常有用,我们将在本文稍后展示真实的示例。
......@@ -17,18 +17,18 @@
在 Python 中,一切都是对象,包括函数。 这意味着函数可以传递并返回。 当您看到它时,乍一看可能很奇怪:
```py
def hello():
print("Hello")
def hello():
print("Hello")
# even functions are objects
message = hello
# even functions are objects
message = hello
# call new function
message()
# call new function
message()
```
调用 message()或 hello()方法,它们具有相同的输出。 那是因为他们指的是同一个对象。
调用`message()``hello()`方法,它们具有相同的输出。 那是因为他们指的是同一个对象。
现在让我们继续装饰。
......@@ -39,31 +39,31 @@ message()
装饰器接受一个函数,对其进行扩展并返回。 是的,**函数可以返回函数**
```py
def hello(func):
def inner():
print("Hello ")
func()
return inner
def hello(func):
def inner():
print("Hello ")
func()
return inner
def name():
print("Alice")
def name():
print("Alice")
obj = hello(name)
obj()
obj = hello(name)
obj()
```
在上面的示例中,hello()是装饰器。
在上面的示例中,`hello()`是装饰器。
语句中
```py
obj = hello(name)
obj = hello(name)
```
the function name() is decorated by the function hello().
函数`name()`由函数`hello()`装饰。
它将功能包装在另一个功能中。
......@@ -74,53 +74,53 @@ the function name() is decorated by the function hello().
可以通过包装功能来扩展它们。
```py
def who():
print("Alice")
def who():
print("Alice")
def display(func):
def inner():
print("The current user is : ", end="")
func()
return inner
def display(func):
def inner():
print("The current user is : ", end="")
func()
return inner
if __name__ == "__main__":
myobj = display(who)
myobj()
if __name__ == "__main__":
myobj = display(who)
myobj()
```
who()函数由 display()装饰。
`who()`函数由`display()`装饰。
### 语法糖
装饰器是常见的,可以简化。 尽管功能完全相同,但代码更简洁。
Python 可以使用 **@符号**简化装饰器的使用。
Python 可以使用**`@`符号**简化装饰器的使用。
```py
@hello
def name():
print("Alice")
@hello
def name():
print("Alice")
if __name__ == "__main__":
name()
if __name__ == "__main__":
name()
```
这将输出完全相同的内容,但是是编写代码的更简洁的方法。
跟我在一起。 通话
跟我在一起。调用:
```py
@hello
def name():
@hello
def name():
```
is just a simpler way of writing:
只是一种更简单的书写方式:
```py
obj = hello(name)
obj = hello(name)
```
......@@ -128,39 +128,38 @@ obj = hello(name)
### 参数
参数可以与装饰器一起使用。 如果您有一个打印总和 a + b 的功能,例如
参数可以与装饰器一起使用。 如果您有一个打印总和`a + b`的功能,例如
```py
def sumab(a,b):
summed = a + b
def sumab(a,b):
summed = a + b
print(summed)
```
您可以将其包装在装饰器函数中。
以下示例显示了如何执行此操作:
您可以将其包装在装饰器函数中。以下示例显示了如何执行此操作:
```py
def pretty_sumab(func):
def inner(a,b):
print(str(a) + " + " + str(b) + " is ", end="")
return func(a,b)
def pretty_sumab(func):
def inner(a,b):
print(str(a) + " + " + str(b) + " is ", end="")
return func(a,b)
return inner
return inner
@pretty_sumab
def sumab(a,b):
summed = a + b
print(summed)
@pretty_sumab
def sumab(a,b):
summed = a + b
print(summed)
if __name__ == "__main__":
sumab(5,3)
if __name__ == "__main__":
sumab(5,3)
```
函数 sumab 由函数 pretty_sumab 包装。 这用其上方的@符号表示。
函数`sumab`由函数`pretty_sumab`包装。 这用其上方的`@`符号表示。
调用函数 sumab,并查看带有参数的函数 sumab 和 pretty_sumab 的逻辑都已运行。
调用函数`sumab`,并查看带有参数的函数`sumab``pretty_sumab`的逻辑都已运行。
### 真实示例
......@@ -173,46 +172,46 @@ if __name__ == "__main__":
如果您定义了一个休眠的简单函数,则
```py
def myFunction(n):
time.sleep(n)
def myFunction(n):
time.sleep(n)
```
然后,您只需添加@measure_time 行即可测量所需的时间
然后,您只需添加`@measure_time`行即可测量所需的时间
下面的例子:
```py
import time
import time
def measure_time(func):
def measure_time(func):
def wrapper(*arg):
t = time.time()
res = func(*arg)
print("Function took " + str(time.time()-t) + " seconds to run")
return res
def wrapper(*arg):
t = time.time()
res = func(*arg)
print("Function took " + str(time.time()-t) + " seconds to run")
return res
return wrapper
return wrapper
@measure_time
def myFunction(n):
time.sleep(n)
@measure_time
def myFunction(n):
time.sleep(n)
if __name__ == "__main__":
myFunction(2)
if __name__ == "__main__":
myFunction(2)
```
这将输出执行函数 myFunction()所花费的时间。 很酷的事情是,通过添加一行代码 _@measure_time_ ,我们现在可以测量程序执行时间。
这将输出执行函数`myFunction()`所花费的时间。 很酷的事情是,通过添加一行代码`@measure_time`,我们现在可以测量程序执行时间。
![decorator in web app](img/5ec64e3c0ecbb2c70baadd00712318da.jpg)
**用例:Web 应用程序**
让我们以 Web 应用程序的使用案例为例。 在 Flask 中构建 Web 应用程序时,您始终会编写网址路由。
每条路线都是 Web 应用程序中的特定页面。
打开页面/ about 可以调用 about_page()方法。
每条路线都是 Web 应用程序中的特定页面。打开页面`/about`可以调用`about_page()`方法。
```py
@app.route("/about")
......@@ -221,6 +220,6 @@ def about_page():
```
在这种情况下,它使用@符号进行装饰。
在这种情况下,它使用`@`符号进行装饰。
[下载示例和练习](https://gum.co/dcsp)
\ No newline at end of file
......@@ -6,7 +6,7 @@ Python 中的网络服务器可以通过两种方式设置。 Python 开箱即
但是,您也可以创建具有独特功能的自定义 Web 服务器。 在本文中,您将学习如何做到这一点。
此示例中的 Web 服务器只能在本地网络上访问。 它可以是 localhost 或其他网络主机。 您可以使用 VPN 跨位置投放。
此示例中的 Web 服务器只能在本地网络上访问。 它可以是`localhost`或其他网络主机。 您可以使用 VPN 跨位置投放。
......@@ -23,7 +23,7 @@ python3 -m http.server
这将在端口 8080 上打开 Web 服务器。然后,您可以在 [http://127.0.0.1:8080/](http://127.0.0.1:8080/) 中打开浏览器。
也可以使用您的 192.168 .-.-地址通过网络访问 Web 服务器。
也可以使用您的`192.168.*.*`地址通过网络访问 Web 服务器。
这是默认服务器,可用于从计算机下载文件。
......@@ -68,10 +68,10 @@ if __name__ == "__main__":
```
如果打开类似 [http://127.0.0.1/example](http://127.0.0.1/example) 的网址,则会调用 do_GET()方法。 我们通过这种方法手动发送网页。
如果打开类似 [http://127.0.0.1/example](http://127.0.0.1/example) 的网址,则会调用`do_GET()`方法。 我们通过这种方法手动发送网页。
![web server in python 3](img/2e75548e489bfe9df1de42082b85a0af.jpg)
变量 self.path 返回所请求的 Web 浏览器 URL。 在这种情况下,它将是/ example
变量`self.path`返回所请求的 Web 浏览器 URL。 在这种情况下,它将是`/example`
[下载示例和练习](https://gum.co/dcsp)
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://pythonbasics.org/python-play-sound/](https://pythonbasics.org/python-play-sound/)
在 Python 上播放声音很容易。 有几个模块可以播放声音文件(.wav)。
在 Python 上播放声音很容易。 有几个模块可以播放声音文件(`.wav`)。
这些解决方案是跨平台的(Windows,Mac,Linux)。
主要区别在于易用性和受支持的文件格式。 所有这些都应与 Python 3 一起使用。除非您指定路径,否则音频文件应与 python 程序位于同一目录中。
......@@ -15,7 +15,7 @@
### `playsound`模块
playsound 模块是可以播放音频文件的跨平台模块。 它没有任何依赖性,只需在您的 virtualenv 中使用 pip 安装并运行即可!
`playsound`模块是可以播放音频文件的跨平台模块。 它没有任何依赖性,只需在您的`virtualenv`中使用`pip`安装并运行即可!
```py
from playsound import playsound
......@@ -23,14 +23,13 @@ playsound('audio.mp3')
```
在平台上的实现是不同的。 它在 Windows 上使用 windll.winm,在 Apple OS X 上使用 AppKit.NSSound,在 Linux 上使用 GStreamer
在平台上的实现是不同的。 它在 Windows 上使用`windll.winm`,在 Apple OS X 上使用`AppKit.NSSound`,在 Linux 上使用`GStreamer`
我已经使用 Python 3.5.3。进行了测试。 这对 WAV 和 MP3 文件均适用。
### `pydub`
您可以使用 pydub 模块播放声音文件。 可以在 pypi 储存库中(随 pip 一起安装)。
此模块可以在下面使用 PyAudio 和 ffmpeg。
您可以使用`pydub`模块播放声音文件。 可以在 PyPI 储存库中(随`pip`一起安装)。此模块可以在下面使用 PyAudio 和`ffmpeg`
```py
from pydub import AudioSegment
......@@ -43,9 +42,9 @@ play(song)
### `tksnack`
`tksnack`模块声音套件可以播放多个音频文件: _WAV,AU,AIFF,MP3,CSL,SD,SMP 和 NIST / Sphere_
`tksnack`模块声音套件可以播放多个音频文件:WAV,AU,AIFF,MP3,CSL,SD,SMP 和 NIST/Sphere
您可以使用包管理器进行安装:“ apt install python3-tksnack”。 对于旧版本,有“ python-tksnack”
您可以使用包管理器进行安装:`apt install python3-tksnack`。 对于旧版本,有`python-tksnack`
该模块取决于 Tkinter。 这意味着要使用此模块播放声音,您还必须导入 gui 模块 Tkinter。 该模块似乎暂时没有更新。
......@@ -64,7 +63,7 @@ snd.play(blocking=1)
### 本机播放器
您还可以在系统上本地播放声音。 这要求您在终端上安装某种音频播放器。 在 Linux 上,您可以使用 mpg123
您还可以在系统上本地播放声音。 这要求您在终端上安装某种音频播放器。 在 Linux 上,您可以使用`mpg123`
这只是通过外部播放器播放 mp3 文件。
......
......@@ -4,7 +4,7 @@
您可以在 Python 中将 MP3 直接转换为 WAV。 在本文中,我们将使用 Python 3 进行转换。 对于本教程,任何文件都可以使用。
首先,请先安装 ffmpeg。 ffmpeg 是用于音频,视频和多媒体处理的免费程序。 该程序具有控制台界面,但是除了安装它外,没有什么必要。
首先,请先安装`ffmpeg``ffmpeg`是用于音频,视频和多媒体处理的免费程序。 该程序具有控制台界面,但是除了安装它外,没有什么必要。
......@@ -12,16 +12,16 @@
### `pydub`
安装模块 pydub。 这是 Python 的音频处理模块。 该模块可以打开许多多媒体音频和视频格式。 您可以使用 pip 安装此模块。
安装模块`pydub`。 这是 Python 的音频处理模块。 该模块可以打开许多多媒体音频和视频格式。 您可以使用`pip`安装此模块。
```py
pip install pydub
```
如果尚未安装 ffmpeg,请安装它。 您可以使用包管理器来执行此操作。
如果尚未安装`ffmpeg`,请安装它。 您可以使用包管理器来执行此操作。
对于 Ubuntu / Debian Linux:
对于 Ubuntu/Debian Linux:
```py
apt-get install ffmpeg
......@@ -30,9 +30,9 @@ apt-get install ffmpeg
### MP3 到 WAV 的转换
您可以通过更改变量名称将 mp3 文件(src)转换为 wav 文件(dst)。
您可以通过更改变量名称将 mp3 文件(源)转换为 wav 文件(目标)。
mp3 文件必须与程序(.py)位于同一目录中。 如果要使用自定义目录,请在文件名中添加路径。
mp3 文件必须与程序(`.py`)位于同一目录中。 如果要使用自定义目录,请在文件名中添加路径。
```py
from os import path
......@@ -48,7 +48,7 @@ sound.export(dst, format="wav")
```
上面的程序使用 pydub 模块进行转换。 该模块本身使用 ffmpeg,这意味着必须安装 ffmpeg 才能成功。
上面的程序使用`pydub`模块进行转换。 该模块本身使用`ffmpeg`,这意味着必须安装`ffmpeg`才能成功。
运行:
......
......@@ -12,7 +12,7 @@
## 示例
首先创建带有语音的音频文件。 这可以是任何带有英语单词的音频文件。 将文件另存为 _transcript.mp3_
首先创建带有语音的音频文件。 这可以是任何带有英语单词的音频文件。 将文件另存为`transcript.mp3`
如果不确定从哪里获得语音音频文件,则可以使用 [Bluemix](https://text-to-speech-demo.ng.bluemix.net/) 生成一个语音文件。
......@@ -25,7 +25,7 @@
* 程序 ffmpeg
* 模块语音识别
您可以使用 pip 安装 Python 模块。 ffmpeg 可以与您的软件包管理器一起安装(apt-get,emerge,yum,pacman
您可以使用 pip 安装 Python 模块。`ffmpeg`可以与您的软件包管理器一起安装(`apt-get``emerge``yum``pacman`
### 转录
......@@ -35,7 +35,7 @@
2. 加载音频文件,
3. 将音频文件提供给特定的识别系统。
复制下面的程序,并将其另存为 _transcribe.py_
复制下面的程序,并将其另存为`transcribe.py`
```py
import speech_recognition as sr
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册