本文目录一览:
- 1、the monty python flying circus是什么意思
- 2、python 有没有php里面的soapclient这样的东西
- 3、python程序的窗口化
- 4、为什么很多国内嘻哈的歌词都很恶俗?
the monty python flying circus是什么意思
the monty python flying circus的中文翻译
the monty python flying circus
巨蟒飞行马戏团
双语例句
1
And if you want curses, as the Monty Python Flying Circus skit reminds us,
you'll need to go down the hall.
如果你想骂人,就要像巨蟒飞行马戏团的滑稽短剧提醒我们的那样,你必得进入大厅。
2
The team behind Monty Python's Flying Circus are to receive a special Bafta
honouring their outstanding contribution to film and television.
飞翔马戏团因对电影和电视杰出的贡献将获得一项特殊的英国电视电影协会奖。
python 有没有php里面的soapclient这样的东西
SOAP.py 客户机和服务器
SOAP.py 包含的是一些基本的东西。没有 Web 服务描述语言(Web Services Description Language,WSDL)或者任何其它附加的东西,只有用 Python 实现的 SOAP 客户机和服务器的透明支持。甚至这个包中的一个很好的功能也只是与基础架构相关:SOAP.py 支持安全套接字层(SSL)用于加密的 SOAP 传输。为使用这个功能,您必须安装 M2Crypto,M2Crypto 是一个库,包含各种加密工具和格式,从 RSA 和 DSA 到 HTTPs、S/MIME 等等。在这一部分,我们不准备讨论 SOAP.py 的 SSL 支持。
SOAP 操作摘要
目前为止,SOAP 实用程序好象仍是比较流行的使用 Python 的开放源代码活动。下面是该项目的纲要以及它们目前的状态。首先,参与者:
4Suite SOAP,由 Fourthought 管理
SOAPy,由 Adam Elman 管理
SOAP.py,Python 项目的一个 Web 服务项目
soaplib,由 Secret Labs 管理
Orchard,由 Ken MacLeod 管理
PySOAP,由 Dave Warner 管理
4Suite SOAP 是我们自己的实现,我们在本专栏的前面三部分中使用过(请参阅 参考资料以获得它的链接)。它目前仍在开发中。
SOAPy 是在 2001 年 4 月公布的,目前处于 alpha 的预备阶段,但现在好象停止开发了。
SOAP.py 开发被冻结了。SOAP.py 这个项目是由 actzero 公司赞助的,而 actzero 却不再从事这一行业了。正在邀请自愿开发/维护 SOAP.py 的组织。
soaplib 的开发好象也延缓了,考虑到 Secret Labs 这段时间所承担的大量工作,或许就可以理解为什么会这样了。这个瑞典的公司是由 Fredrik Lundh 掌管的,他在 Python 圈内是出名的“工作狂”,同时也是 Python Association 董事会的一名成员。Secret Labs 还开发 PythonWare(Python 的一个核心和重要的附加模块);PythonWorks(一个领先的 Python IDE);Python Imaging Library 和许多其它好东西(日常 Python-URL Web 日志就是其中的一部分)。
Orchard 是一个数据管理框架,基本上是一种用一个公共接口管理不同数据格式的方法。它实现了一个 SOAP 客户机作为在远程过程调用中向 SOAP 服务器发送 Orchard 数据项的基本方法(被称为节点)。
PySOAP 这个项目主要是想作为 Dave Warner 的 Church 管理套件的一部分,但它还从没发行过任何文件,好象是一个毫无生气的项目。
安装
开始先下载分发包(在写这篇文章的时候,SOAPpy 0.9.7 是最新的分发包),把文件解包,转到结果目录,并把文件 SOAP.py复制到自己倾向的位置。当然,这个“倾向”就是需要技巧的地方。由于这些 SOAP lib 中有很多都使用大小写组合不同的“soap.py”作为模块名,所以大家一定要小心。当然,UNIX 用户只需关心大小写是否精确匹配,但对于 Windows 用户来说,甚至“SOAP.py”和“soap.py”之间的冲突也会带来麻烦。Orchard 的 SOAP.py 也有一个容易发生冲突的名称,但它有可能避开所有的问题,因为它的模块聪明地放在了 Orchard 包中。
上面的内容简言之就是建议您确保安装所有的 Python SOAP 模块时都使用与众不同的包名称。在我们的案例中,我们在 PYTHONPATH 中发现了一个合适的目录并创建了一个 WebServices 包,把 SOAP.py 放在了这个包中。因此,在 Linux 中:
$ mkdir ~/lib/python/WebServices
$ touch ~/lib/python/WebServices/__init__.py
$ cp SOAPpy097/SOAP.py ~/lib/python/WebServices
请注意很重要的第二条命令,它将生成一个 __init__.py 文件,这个文件将 WebServices 目录标志为 Python 包。如果您需要把这些代码打包成 Windows 版本,您可能希望向空文件中输入一些注释,因为一些 Windows 工具不创建空文件。
您已深入主题了
对于公开提供的 SOAP 服务器,早已经有了好几个活动的注册中心。最流行的可能是 XMethods。当然,它也是一个相当有趣的指导,通过它我们可以了解 SOAP 的实际状况,而不要听它的吹嘘。这里的大多数公共 Web 服务仍然只是一些无关紧要的东西,几乎不值得我们勇敢的新模型多费口舌,但那是另一回事了。实际上,我们将选择一个公共服务来演示和测试如何把 SOAP.py 作为 SOAP 客户机使用。
或者,我们可以试试。作者尝试的第一个服务,卫生保健提供者定位器,在遇到下列报错消息时显示 SOAP 互操作性的当前状态中的陷阱:
WebServices.SOAP.faultType: Fault soap:Client:
Server did not recognize the value of
HTTP Header SOAPAction: "".
哦。SOAPAction 是一个 HTTP 头,应该是用来标记被访问服务的。它是 SOAP 请求中必需的头,但即便是设置了所需的头(只是一对空的双引号)后,上面的错误仍然存在。作者发现大多数 MS SOAP 实现都存在这个问题。在试遍了这些服务后,我们断定,Delphi 实现好象与 SOAP.py 合作得最好,但在试服务时 — 即使是用 Delphi 实现时,也返回复杂的类型,比如列表,SOAP.py 无法使用它们,返回不带数据的 WebServices.SOAP.typedArrayType 实例。
最后,作者选择了一个相当合适的 Web 服务,该服务返回漫画《丁丁历险记》中的人物 Haddock 船长常用的骂人语言(是的,大多数 Web 服务都是这样)。 清单 1(curse.py)就是这个程序。
清单 1:访问 Curse 生成器 SOAP 服务的 SOAP.py 程序
#!/usr/bin/env python
import sys
#Import the SOAP.py machinery
from WebServices import SOAP
remote = SOAP.SOAPProxy(
"ck.exe/soap/IHaddock",
namespace="urn:HaddockIntf-IHaddock",
soapaction="urn:HaddockIntf-IHaddock#Curse"
)
try:
lang = sys.argv[1]
except IndexError:
lang = "us"
result = remote.Curse(LangCode=lang)
print "What captain Haddock had to say: "%s""%result
把一切综合在一起
导入库后,我们将设置代理对象 remote 。这个对象将方法调用转换为远程 SOAP 消息。它的初始化器使用管理远程请求的关键参数: 服务器的 URI(被称为“端点”)、请求元素的 XML 名称空间(通过它,SOAP-as-RPC 将 口头承诺变成 XML 基础)和 SOAPAction 头值。
接下来,我们将确定方法参数,对于这个 Web 服务来说,方法参数只是 Haddock 骂人的语言,瑞典语(“se”)或英语(奇怪的是,是“us”而不是“en”)。
最后,我们调用名称正确的方法,代理对象的 Curse 进行 SOAP 调用,然后打印出结果。下面的会话演示了对该程序的使用:
$ python curse.py
What captain Haddock had to say: "Ectoplasmic Byproduct!"
我们自己的 SOAP 服务器
用 SOAP.py 实现 SOAP 服务器相当容易。作为一个示例,我们将仿建字段,还要实现一个很常见的服务:一个程序,给出年份和月份,它将以字符串的形式打印出日历。它的程序服务器是 清单 2(calendar-ws.py)。
清单 2:实现日历服务器的 SOAP.py 程序
#!/usr/bin/env python
import sys, calendar
#Import the SOAP.py machinery
from WebServices import SOAP
CAL_NS = "/simple-cal"
class Calendar:
def getMonth(self, year, month):
return calendar.month(year, month)
def getYear(self, year):
return calendar.calendar(year)
server = SOAP.SOAPServer(("localhost", 8888))
cal = Calendar()
server.registerObject(cal, CAL_NS)
print "Starting server..."
server.serve_forever()
进行过必要的导入后,我们为自己的服务器定义 SOAP 请求元素期望的名称空间( CAL_NS )。接下来我们定义实现所有方法的类,这些方法将被公开为 SOAP 方法。大家也可以把单个函数作为 SOAP 方法注册,但使用类方法是最灵活的,特别是当您想管理调用间的状态时。这个 Calendar 类定义了一个方法 getMonth ,该方法使用 Python 的内置日历模块在文本表单中返回月度日历,同时它还定义了另一个返回整年日历的方法。
然后创建 SOAP 服务器框架的一个实例,这个实例还带有侦听端口 8888 的指令。我们还必须创建 Calendar 类的一个实例,这个实例在下一行中被注册用来处理 SOAP 消息,同时为其指出相关的名称空间。最后,我们调用 serve_forever 方法,该方法直到进程终止才返回。
为运行服务器,请打开另一个命令 shell 并执行 python calendar-ws.py 。执行结束时使用 ctrl-C 杀死进程。
我们本来可以用也是用 SOAP.py 写的客户机测试服务器,但那太显而易见了。我们还是用低级 Python 编写客户机把 SOAP 响应作为 XML 字符串来构建,并发送一条 HTTP 消息。这个程序(testcal.py)在 清单 3中。
清单 3:用 Python 核心库写的访问日历服务的客户机
import sys, httplib
SERVER_ADDR = "127.0.0.1"
SERVER_PORT = 8888
CAL_NS = "ple-cal"
BODY_TEMPLATE = """SOAP-ENV:Envelope
xmlns:SOAP-ENV="oap/envelope/"
xmlns:s="/ws/simple-cal"
xmlns:xsi=""
xmlns:xsd=""
SOAP-ENV:encodingStyle=""
SOAP-ENV:Body
s:getMonth
year xsi:type="xsd:integer"%s/year
month xsi:type="xsd:integer"%s/month
/s:getMonth
/SOAP-ENV:Body
/SOAP-ENV:Envelope"""
def GetMonth():
year = 2001
month = 12
body = BODY_TEMPLATE%(year, month)
blen = len(body)
requestor = httplib.HTTP(SERVER_ADDR, SERVER_PORT)
requestor.putrequest("POST", "cal-server")
requestor.putheader("Host", SERVER_ADDR)
requestor.putheader("Content-Type", "text/plain; charset="utf-8"")
requestor.putheader("Content reply_body = requestor.getfi-Length", str(blen))
requestor.putheader("SOAPAction", "het/eg/ws/simple-car")
requestor.endheaders()
requestor.send(body)
(status_code, message, reply_headers) = requestor.getreply()
le().read()
print "status code:", status_code
print "status message:", message
print "HTTP reply body:\n", reply_body
if __name__ == "__main__":
GetMonth()
下面的会话演示了这个测试的运行情况。
$ python testcal.py
status code: 200
status message: OK
HTTP reply body:
?xml version="1.0" encoding="UTF-8"?
SOAP-ENV:Envelope SOAP-ENV:encodingStyle=""
xmlns:xsd="" xmlns:SOAP-
ENV=""
xmlns:xsi=""
xmlns:SO
AP-ENC=""
SOAP-ENV:Body
getMonthResponse SOAP-ENC:root="1"
Result xsi:type="xsd:string" December 2001
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
/Result
/getMonthResponse
/SOAP-ENV:Body
/SOAP-ENV:Envelope
仔细审查的字节
如果您查找行 self.debug = 0 并把“0”改为“1”(这是 SOAP.py 版本 0.9.7 中的第 210 行),有一件要注意的事情是您可以获得被交换的实际 SOAP 消息的详细信息和用于调试与跟踪的其它关键数据,这对您很有用。作为示例,下面提供了一个会话,它是打开了调试信息显示开关的以前的 curses.py 程序的一个会话:
$ python curse.py
*** Outgoing HTTP headers **********************************************
POST /scripts/Haddock.exe/soap/IHaddock HTTP/1.0
Host:
User-agent: SOAP.py 0.9.7 (actzero.com)
Content-type: text/xml; charset="UTF-8"
Content-length: 523
SOAPAction: "urn:HaddockIntf-IHaddock#Curse"
************************************************************************
*** Outgoing SOAP ******************************************************
?xml version="1.0" encoding="UTF-8"?
SOAP-ENV:Envelope SOAP-ENV:encodingStyle=""
xmlns:xsd="" xmlns:SOAP-
ENV=""
xmlns:xsi=""
xmlns:SO
AP-ENC=""
SOAP-ENV:Body
ns1:Curse xmlns:ns1="urn:HaddockIntf-IHaddock" SOAP-ENC:root="1"
LangCode xsi:type="xsd:string"us/LangCode
/ns1:Curse
/SOAP-ENV:Body
/SOAP-ENV:Envelope
************************************************************************
*** Incoming HTTP headers **********************************************
HTTP/1.? 200 OK
Server: Microsoft-IIS/5.0
Date: Tue, 11 Sep 2001 16:40:19 GMT
Content-Type: text/xml
Content-Length: 528
Content:
************************************************************************
*** Incoming SOAP ******************************************************
?xml version="1.0" encoding="UTF-8"?SOAP-ENV:Envelope xmlns:SOAP-
ENV="" xmlns:xsd=""
xmlns:xsi="" xmlns:SOAP-ENC="
soap.org/soap/encoding/"SOAP-ENV:BodyNS1:CurseResponse xmlns:NS1="urn:HaddockIntf-
IHaddock" SOAP-ENV:encodingStyle=""NS1:return
xsi:type="xsd:string"Anacoluthons!/NS1:return/NS1:CurseRespon
se/SOAP-ENV:Body/SOAP-ENV:Envelope
************************************************************************
What captain Haddock had to say: "Anacoluthons!"
为进行比较,您可以在带有下列代码的旧的 Python 脚本或程序中获得相同的信息:
import calendar
return calendar.month(2001, 10)
SOAP.py 总结
我们已经注意到了,虽然 SOAP.py 的互操作性还存在一些问题,但可用的调试工具可望提供帮助。
python程序的窗口化
如果我没有理解错的话,看样子你应该不需要.net,就是自己的一个程序想要个图形界面而已。
我自己曾经也想给自己的程序添加图形界面,但是后来放弃了!因为尝试后发现太麻烦!比matlab写图形界面麻烦多了……最后我是用的后面加参数的调用方法,图形界面还是用vb开发好……反正用linux的根本不在乎图形界面。
扯远了……总体来说,python的图形界面最常用的就是两个,自带的tkinter(tcl/tk)和第三方的WxPython。后者比前者强大很多倍。不过,反正我自己觉得你用第一个也够了,还可以缩小体积增加兼容性。wxpython很强大,而且熟悉后开发很快。关键就是熟悉他麻烦,太多要学的了。听咱的,看几个简单例子用tkinter搞定得了……
好吧。tkinter大致过程如下。我个人觉得太小的程序就不用分成多个py文件了(反正我习惯不好),因为tkinter里面,定义窗体是一个tkinter的实例,然后再mainloop表示界面结束后,你可以随便定义自己的方法什么的。(为什么我总是跑题啊啊啊……)
咳咳。给你几个例子吧。
==============================================
强调:详细内容必须自己看说明!我会在文末和参考文献中给出!
当然,这个回答推荐你复制到具有语法加亮的编辑器中看,比如notepad++之类。
================================================
#首先是Fredrik Lundh版本的hello world,这是最简单的版本:
# File: hello1.py
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
# root=Tk()将创建一个窗体。然后w.pack()的时候将内容更新上去。这句是最重要的一句,无论如何都少不了的。在后面的例子中你会注意到一开始定义了很多窗体的东西,但是最后都会用这句来生成窗体。然后用mainloop()来接收操作。当然,这会彻底占用这个线程。
#================================
#再来看python官方doc文档里面的hello world,这个实力包含了大多数元素。
from Tkinter import *
class Application(Frame):
def say_hi(self):
print "hi there, everyone!"
def createWidgets(self):
self.QUIT = Button(self)
self.QUIT["text"] = "QUIT"
self.QUIT["fg"] = "red"
self.QUIT["command"] = self.quit
self.QUIT.pack({"side": "left"})
self.hi_there = Button(self)
self.hi_there["text"] = "Hello",
self.hi_there["command"] = self.say_hi
self.hi_there.pack({"side": "left"})
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()
#这个实例里面包括了按钮,如何调用自己的方法,等等。但是没有文本框和菜单等。
#我想我不应该把所有的东西都写在这里了,比较这里面的东西很多,需要你自己学一下。
#但是相信我,这个学起来不wxpython容易多了,因为有很多写的很好的教程。
#除非,你英语不好。但是这也不会影响太多,因为把第一个教程(An Introduction to Tkinter ——by Fredrik Lundh)中的例子一个一个做一次你就明白了每个语句是什么用的了。
===========================
参考资料(一定要去看哦!比去论坛和邮件组方便多了!):
【1】An Introduction to Tkinter ——by Fredrik Lundh
online:
PDF:
这本是推荐入门教程!因为例子真的很细很简单!和那本《a bite of python》(好像叫python简明教程?)相比真的很像!不过作者当然不是一个人了。
【2】Tkinter 8.4 reference: a GUI for Python ——by New Mexico Tech Computer Center
online:
PDF :
和名字取得一样,就是一本参考书,为了方便查询的。推荐读了第一本需要的时候查这个。说起来第一本就应该是”指南“了,哈哈……
【3】24.1. Tkinter — Python interface to Tcl/Tk —— Official library
online:
这个是官方的参考。真不愧是官方的,一般人都看不懂……很详细的列出了很多东西,然后用很小的篇幅把他们都融入了进去,几乎没有例子。等你基本熟悉了之后在看吧,反正我觉得不看也罢,官方的东西都是裹脚布,还是用了很多年的那种!看的想骂人
=======================
基本上就是这样了。
反正命令行也挺好。因为python开发出的gui是在太丑了!想要好看的gui ?微软的Expression吧……那东西开发出来超好看。不过就必须用vb或者C#了……而且windows限定……
为什么很多国内嘻哈的歌词都很恶俗?
这个诞生于美国贫民区的文化形式
因为综艺节目《中国有嘻哈》里
吴亦凡的一句
“你有freestyle吗?”
而重新置身网络热搜
嘻哈文化
从上世纪50年代在美国街头起步
它见证了动荡与繁华
从社会底层开出一朵不羁的花
逐渐延伸至主流社会
枝繁叶茂
一步步走向商业化
最终缔造起一座
前人不敢想象的财富帝国
嘻哈的萌芽
众所周知,布鲁克林是美国的贫民区,在这样的生活环境下,人们找不到工作,也没有足够的钱进行学习,无所事事的黑人少年就整日在街头以唱歌跳舞、打街头篮球为乐。在这个过程当中,黑人独有的音乐天赋、身体柔韧性和创意灵感被带到了他们的歌舞文化中,逐渐形成了特有的娱乐形式。
他们买不起好的音响设备,只能提着老式的大录音机走街串巷;他们没有钱买时髦的衣服,只能将就穿着大了一号的父母的衣服,于是也自成一派,形成了专属的嘻哈服饰文化。
有许多人在分析嘻哈这一文化为什么在黑人群体中流行时,都把“贫穷”归结为最大原因。因为贫穷,大多数黑人的孩子从小就不能接受良好的教育,更无法感受到规范的社会秩序。他们周围充斥着暴力、毒品和犯罪。许多黑人青少年在这种情况下,需要找到一种情绪宣泄的窗口,更希望找到自己的同伴。
年轻气盛、目空一切的他们走上街头,迷茫的同时又渴望表现和证明自己。在厌恶打架后,他们找到了一种既可以打击对方也能够释放自己的道路:说唱。
嘻哈的核心
“嘻哈?那不就是一群人吵架闹腾吗?”这是许多人对于嘻哈这一文化形式的印象。确实,嘻哈中包含的表达方式:flow、freestyle、battle、diss等等,在说唱的时候,都会带有明显的个人主观思想,尤其在进行battle时(一种比赛形式,两位rapper在规定时间内轮流用freestyle贬低对方,抬高自己,一般为三轮,依据观众的呼声大小来判断胜负),双方都想博得观众的呼声取得胜利,所以battle的内容会带有较强烈的攻击性。
对于大多数人来说,这种方式有失体面,但这正表现了说唱文化的精髓:随心所欲、说我所想。在比赛的时候,他们不用担心是否伤害到别人——因为来到现场的人都已做好“欺负别人”和“被别人欺负”的准备。
因为黑人群体特殊的成长环境,也决定了他们对这个社会、对自己的生活有着与主流不太一样的看法,这也恰好是嘻哈吸引人的地方:真实。从不掩饰自己的想法,即便是主流社会眼中的“粗俗”和“负面”,在这里,也能赢得欢呼。
嘻哈的贡献
随着嘻哈的传播和流行,这种文化形式已不仅仅局限于黑人群体。无论是白种人还是黄种人,都逐渐被嘻哈所吸引,并且慢慢地加入自己独特的元素和风格。
说起唱嘻哈的黄种人,欧阳靖2002年在美国和黑人battle的场景,DOCO君仍然历历在目。他对辱骂自己种族的对手漂亮地用battle回击,博得全场的掌声与呼声,更让中国人在Hiphop场上扬眉吐气了一把。这种说唱技巧和形式无关私人恩怨,大部分只是抱着赢得比赛的心态。
这种时候,嘻哈不仅仅作为一种文化形式而存在,更是连接世界各种族互相了解与交流的纽带,无论是好是坏,起码它让人们对于不同的文化形态有了多维度的思考。
摩登天空杂志今年发了一篇很有意思的文章《我们分析了六百万字歌词,告诉你中国的Rapper唱的都是什么嘻哈》。他们用Python 抓取了中国大陆、台湾、香港、美国、英国五个国家和地区,总共六千万的歌词,做了一些数据分析的工作。
在大量的数据抓取、筛选和对比分析后,关于歌词中的脏话,有了一个相对科学且直观的结论:“大陆16284首歌有2496首出现脏话,脏话率约为15%,而非大陆的数据中,33134首歌有13217首出现脏话,脏话率约为40%。”
嘻哈产生于美国黑人贫民区,就是性、暴力、吸毒和帮派。只是周杰伦因为是方文山作词把中国的嘻哈带上了正能量和高雅,但现在又被皮几万带回了黑人一样的嘻哈。我们正规的音乐人是瞧不起做做嘻哈的人的,所谓嘻哈的人就是自己写不了曲子,写不出什么曲子,就跟着节奏说话,谁不会呀,是人都会,连猪都会。
(左边是所有数据的出现次数,右边是大陆说唱的出现次数。)
所以说“国内很多嘻哈音乐的歌词都很低俗”,这种说法并不准确。甚至相较于非大陆地区的嘻哈,大陆已经“低调”“文明”了很多。
可相对于其他音乐风格,嘻哈音乐歌词中恶俗内容或者说脏话的出现率依然显得很高,这如何解释呢?
这可以从嘻哈文化的起源和精神核心说起。
根据现在的主流观点,hip hop文化起源于美国纽约布朗克斯区,也就是外来移民的聚居地,可以说是充斥着犯罪毒品失业的平民区。诞生在这里的嘻哈文化,吸引了很多当地的年轻人,占据了他们的闲暇时间,甚至某种程度上降低了布朗克斯区的犯罪率。
在之后的演化中,慢慢出现了反映现实街头生活的匪帮说唱和硬核说唱。黑人嘻哈说唱歌手,用这种音乐发泄着对种族歧视的愤怒,对政府和媒体的不满,讲述困扰着底层黑人生活的压力。所以这种诞生于贫民窟的文化形式中,流淌着充满了愤怒、攻击性、对抗性的血液,成为了这些底层人群发声的工具。
虽然嘻哈文化随着社会的发展演化至今,已然不再是它最初的样子,有了更多的形式、风格和内容,但“脏话”可以说是残留于文化血液中的一个特征。
与其说hip hop的精神核心是“愤怒、攻击性和对抗性”,不如说,是“real”——这个单词经过《中国有嘻哈》的洗礼大家都很熟悉了。这其实就是一种直接的对真实生活的表达,是一种斗士精神。
哈,一不小心说了太多。
最后,还想特别说明一点,不骂人的嘻哈音乐其实更多。别因为个别事件和作品,错过了更多好音乐。