python入门(2)

来源:互联网 发布:windows一直在准备配置 编辑:程序博客网 时间:2024/06/10 07:22

基础内容:

为什么‘+’可以连接两个字符串?

运算符重载。具体说来,每个变量在Python中都是以对象形式存在的,即都是继承于Object。而Object则具有object._add_(self,other)这样一个方法。每当处理x+y这一个表达式的时候,将会调用x._add_(y)。另外为了交换律,还有_radd_方法,也就是用来处理y+x,这样会调用y._radd_(x)。所以我们也可以自己重载+,比如:
class Free:
def __init__(self, info):
self.info = info
def __add__(self, moreinfo):
return str(self) + moreinfo
def __radd__(self, moreinfo):
return moreinfo + str(self)
def __str__(self):
return self.info

Free这个Class,便得以直接成为+操作符的左/右参数。

正如richardzhiming所说,a+b是低效的,这是基于大量的+操作所讨论的。这是因为String是一个不可变的对象,你并不是真的把字符串b加到字符串a这个对象后面,而是需要创建一个新的对象,然后把a和b
copy进去。因此当你大量进行+之时,你会创建许许多多临时的String对象。”.join(str_list)更好,则是因为,字符串的创建和拷贝是一次完成,而不需要创建很多String对象。

python中的转义序列:

Escape What it does 含义 \ Backslash () 反斜杠 \’ Single-quote (‘) 单引号 \” Double-quote (“) 双引号 \a ASCII bell (BEL) 响铃符 \b ASCII backspace (BS) 退格符 \f ASCII formfeed (FF) 进纸符 \n ASCII linefeed (LF) 换行符 \N {name} Character named name in the Unicode database (Unicode only) Unicode 数据库中的字符名;name就是它的名字 \r ASCII Carriage Return (CR) 回车符 \t ASCII Horizontal Tab (TAB) 水平制表符 \u xxxx Character with 16-bit hex value xxxx (Unicode only) 值为16位十六进制xxxx的字符 \U xxxxxxxx Character with 32-bit hex value xxxxxxxx (Unicode only) 值为32位十六进制xxxx的字符 \v ASCII vertical tab (VT) 垂直制表符 \ooo Character with octal value ooo 值为八进制ooo的字符 \xhh Character with hex value hh 值为十六进制数hh的字符

Tips:
%r 可以显示变量的原始数据(raw data)。

原创粉丝点击