python基础学习笔记(二)
2013-02-24 16:25 虫师 阅读( ... ) 评论( ... ) 编辑 收藏继续第一篇的内容,讲解, 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 "" , line 1, in name = input( " what is your name? " ) File " " , line 1, in 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 中的普通字符串在内部是以 8 位 ASCII 码形成存储的,而 Unicode 字符串则存储为 16 位 Unicode 字符,这样就能够表示更多的字符集了,包括世界上大多数语言的特殊字符。
如果你不短简什么是 Unicode ,可以访问 Unicode 网站: http://www.unicode.org
>>> u ' hello, world! ' u ' hello, world! '
可以看到, Unicode 字符串使用 u 前缀,就像原始字符串使用 r 一样。
注意:在 python 3.0 中,所有字符串都是 Unicode 字符串。