qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

python基础学习笔记(二)----注释 字符串

注释

 

为了让别人能够更容易理解程序,使用注释是非常有效的,即使是自己回头再看旧代码也是一样。

>>> #获得用户名: >>> user_name = raw_input("what is your name?")

python 中用井号(#)表示注释。井号(#)右边的内存将不被程序执行。即使没有注释,也应该让代码本身易于理解。幸好!Python是一门出色的语言,它能帮助程序员编写易于理解的程序。^_^

 

 

字符串


 

 

单引号字符串和转义引号

复制代码
>>> "hello,world" 'hello,world'  >>> '"hello ,world" she said' '"hello ,world" she said'  >>> "'hello,world' she said" "'hello,world' she said"
复制代码

 

第一个输出,明明是双引号( “” ) ,怎么输入变成了单引号( ‘’ )。这有什么区别呢?事实上,没有区别。

再看第二个,单引导(‘’)里面包含了一对双引号(“”),这次完整输出了。难道只有双引号输出会变成单引号么?

再看第三个,双引号(“”)号里面包含了一对单引号(‘’),这次为什么没把最外面的双引号变成单引号输出? 这编译器比较情绪化,呵呵!

 

复制代码
>>> "Let's go" "Let's go"  >>>'Let's go' SyntaxError: invalid syntax  >>> 'Let\'s go' "Let's go"
复制代码

第一个输出,双引号包含一个单引号(实际上应该叫撇(‘) ,因为它不是成对出现的。)可以正常输出。

第二个输出,一对单引号里面包含了一个单引号(这应该是输入者的本意)。编译器不知道怎么识别了。

第三个输出,为了达到这个目的,我们需要把中间的单引号用斜杠(\)进行转义。这次又不一样了,单引号输出之后变成了双引号。编译器,你真调皮。

 

拼接字符串

下面试试加号(+)来拼接一个字符

复制代码
>>> "helle,"+"world!" 'helle,world!'

>>> x="hello," >>> y="world!" >>> x+y 'hello,world!'
复制代码

 

 

字符串表示,str 和 repr

前面的例子读者可能注意到,所有通过python打印的字符串还是被引号括起来的。这是因为python打印值的时候会保持该值在python代码中的状态,而不是你希望 用户所看到的状态。如果用print语句,结果就不一样了:

复制代码
>>> "hello,world!" 'hello,world!' >>> 10000L 10000L  >>> print "hello,world!" hello,world! >>> print 10000L 10000
复制代码

可以看到,长整型数10000L被转换成了数字10000 ,而且在显示给用户的时候也如此。

我们在这里讨论的实际上是值被转为字符的两种机制。可以通过以下两个函数来使用这两种机制:

复制代码
>>> print str("hello,world!") hello,world! >>> print str(10000L) 10000  >>> print repr("hello,world!") 'hello,world!' >>> print repr(10000L) 10000L
复制代码

str()函数 ,它会把值转换为合理形式的字符串,以例用户可以理解;

repr()函数,它会创建一个字符串,它以合法的python表达式的形式来表示值。

 

 

input 和 raw_input 的比较

上一章的最后一个例子用到了raw_input 函数,那它与 input 有什么不用? 下面我们用input函数,再试试那个例子。

复制代码
>>> name = input("what is your name?") what is your name?huhu  Traceback (most recent call last):   File "<pyshell#0>", line 1, in <module>     name = input("what is your name?")   File "<string>", line 1, in <module> NameError: name 'huhu' is not defined  >>> name = input("what is name?") what is name?"huhu" >>> print "hello, " + name + " !" hello, huhu !
复制代码

input()函数会假设用户输入的是合法的python表达式。所以直接输入huhu 系统会提示错误,但是如果加上引号(“huhu”)就会是一个合法的字符,程序运行是没有问题的。

然而,要求用户带着引号输入他们的名字有点过份,因此,就这需要使用raw_input函数。

>>> input("enter a namber:") enter a namber:3 3 >>> raw_input("enter a namber:") enter a namber:3 '3'

当然input有特别的需要,比如要求用户输入数字时。

 

 

长字符串 

如果需要写一个非常非常长的字符串,它需要跨多行,那么,可以使用三个引号带点普通引号。

复制代码
>>> print ''' this is a very long string. It continues here. and it's not over yet. '''  this is a very long string. It continues here. and it's not over yet.
复制代码

普通字符串也可以跨行。如果一行之中最后一个字符是反斜线,那么,换行符本身就“转义”了,也就是被忽略了。

>>> print " Hello.\ world!"  Hello.world! >>> 1+2+\       4+5 12

 

 

 

原始字符串

>>> path ='C:\abc' >>> print path C:bc

怎么会这样呢,我想输入的是一个路径,却被换行了。

>>> print 'C:\\abc' C:\abc >>> print 'C:\\Program Files\\fnord\\foo\\bar\\baz\\frozz' C:\Program Files\fnord\foo\bar\baz\frozz

通过上面的双斜线(\\)解决了路径问题,但如果路径很长的话会不会太麻烦了。

>>> print r'C:\Program Files\fnord\foo\bar\baz\frozz' C:\Program Files\fnord\foo\bar\baz\frozz  >>> print r'Let\'s go !' Let\'s go !

原始字符串不会把反斜线当作特殊字符。可以看到,原始字符串以r开头。

 

 

Unicode字符串

字符串常量的最后一种类型就是Unicode 字符串(或者称为Unicode 对象---与字符串并不是同一个类型)。Python中的普通字符串在内部是以8ASCII码形成存储的,而Unicode字符串则存储为16Unicode字符,这样就能够表示更多的字符集了,包括世界上大多数语言的特殊字符。 

如果你不短简什么是Unicode ,可以访问Unicode网站:http://www.unicode.org

>>> u'hello, world!' u'hello, world!' 

可以看到,Unicode字符串使用u前缀,就像原始字符串使用一样。

注意:在python 3.0中,所有字符串都是Unicode字符串。

posted on 2014-01-30 00:51 顺其自然EVO 阅读(503) 评论(0)  编辑  收藏 所属分类: python


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜