- 浏览: 13540 次
最新评论
python基础
2010年09月09日
你肯定不满足于只打印"Hello World"吧? 你想要的更多 - 你希望得到一些输入,操纵它后再从中得到某些东西.
我们可以使用python中的常量和变量实现这些功能。 字面常量(literal constant)
字面常量的一个例子是数字诸如5, 1.23, 9.25e-3或字符串This is a string', "It's a string!".
顾名思义,字面常量的重点在于"字面", 你直接以字面的意义使用它们。数字2永远是数字2绝不会是别的东西。
而常量代表它们永远不会被改变,因此它们全被称为字面常量 数字
python3拥有3种数字类型 - 整数,浮点和复数(注: python3的整数类型已经被统一了,再没有短整数和长整数的分别)
?? 例如,2是一个整数.
?? 浮点数的例子如3.23, 52.3E-4. E代表10的幂,在这里52.3E-4等于52.3 * 10-4
?? -5+4j, 2.3 - 4.6j属于复数 编程老鸟请注意
python3没有"long int"类型,事实上python的整数可以任意大(注: 只是理论上的,再咋地存储器也不是无限的)
字符串
字符串是一个字符序列,经常用来表示字词. 字词可以是英语也可以是Unicode标准支持下的任何语言.
而unicode支持世界上绝大多数语言(http://www.unicode.org/faq/basic_q.html#16). 编程老鸟请注意
在python3中不存在纯ASCII字符串,因为Unicode是ASCII的父集。
如果你真的需要一个纯ASCII字符串,则需调用字符串.encode("ascii")方法.
详见StackOverflow中的相关讨论
(http://stackoverflow.com/questions/175240/how-do-i -convert-a-files-format-from-unicode-to-ascii-using -python#175270).
(注: 没必要看了过时了,调用encode后产生一个bytes对象,它不是字符串对象,python3中的所有字符串都是unicode)
我几乎可以保证在你编写的每个程序中都会用到字符串,下面将教你如何使用字符串,你要特别留心点阿. 单引号
你可以将字符串放到单引号中,所有空白字符即空格和tab都回原封保留。
双引号
双引号和单引号的效果完全相同。 三引号
在指定多行字符串的时候可以利用三引号 - ("""或'''), 在三引号中还能自由的使用单引号和双引号. 一个例子:
'''This is a multi
This is the second
"What's your name?
He said "Bond, Jam
'''
转义字符
假设你想要一个带单引号(')的字符串,你会怎么写呢?例如What's your name?,
你不能写成'What's your name?', 因为python会搞不清字符串是从哪开始又是从哪结束.
所以你需要告诉python字符串中间的单引号并不是字符串的结束标志。利用转义字符可以做到这点.
将单引号替换成 \' - 注意反斜杠,这样字符串就变成'What\'s your name?'了.
另一个办法是使用双引号"What's your name?", 不过当你需要双引号的时候和单引号的情况类似,必须加上反斜杠 \", 而反斜杠也一样必须表示成\\
如果你需要一个双行字符串呢? 一个办法是使用前面提到的三引号或者使用换行的转义字符\n开始新的一行,
还有一个有用的转义字符\t表示tab, 转义字符太多了我只说了常用的.
另一个值得注意的地方是在一个字符串末尾的反斜杠表示这个字符串将被合并到下一行, 例如:
"This is the first sentence.\
This is the second sentence."
上面的字符串等价于"This is the first sentence. This is the second sentence.". 原始字符串
如果你不希望python对字符串进行特别处理, 比如取消转义字符, 可以为字符串加上前缀r或R.
例如r"Newlines are indicated by \n".
字符串是不可变类型
这意味着创建一个字符串对象后就无法改变它了. 这听起来很糟糕, 其实非也, 后面见分解. 字面字符串连接
如果你将两个字面字符串相邻, 它们会被python自动合并到一起.
例如'What\'s ' 'your name?'会变为"What's your name?"
C++程序员请注意
python没有单独的字符类型, 也没这个必要我保证你不会为此烦恼.
Perl/PHP程序员请注意
单引号和双引号字符串完全相同, 没有任何区别
正则表达式用户请注意
永远使用原始字符串编写正则表达式, 否则会需要大量的反斜杠, 例如反向引用可以表示为'\\1'或r'\1'. 字符串的format方法
有时我们需要使用额外信息构造字符串, 这时format就很有用了.
#!/usr/bin/python
# Filename: str_format.py
age = 25
name = 'Swaroop'
print('{0} is {1} years old'.format(name, age))
print('Why is {0} playing with that python?'.format(name))
Output:
$ python str_format.py
Swaroop is 25 years old
Why is Swaroop playing with that python?
format如何工作?
一个string可以含有某些格式说明符, 随后调用的format将用你提供给它的参数替换对应的格式说明符.
观察上面的例子, {0}对应变量name它也是format的第1个参数. 与之类似{1}对应format的第2个参数age.
注意我们也可以使用字符串连接达到同样的目的: name + ' is ' + str(age) + ' years old'.
但是这种方式太乱啊, 很容易出错. 而且需要手动将变量转换为字符串而format可以为我们代劳.
最后, 使用format我们可以改变最终生成的字符串而不必修改传给format的变量, 反之一样.
format的本质就是将其参数替换到字符串中的格式说明符, 下面是一些更复杂的使用方式:
>>> '{0:.3}'.format(1/3) #小数点后保留3位
'0.333'
>>> '{0:_^11}'.format('hello') #以下划线填充字符串到11位长, hello中间对齐
'___hello___'
>>> '{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python')
# 关键字格式化
'Swaroop wrote A Byte of Python'
关于格式说明符的具体信息见Python增强提议No.3101(http://www.python.org/dev/peps/pep-3101/). 变量
只使用字面常量很快就会感到无聊 - 我们需要某种方式存储并操作任何信息,变量就是其主要手段。
正如其名 - 变量的值可以变化,即可以用它们存储任何数据。
变量实际上只是计算机存储器的一部分,用于存储你给出的信息。
与字面常量不同,你需要访问这些变量,因此需要你给它们起名字。 标识符命名
变量是标识符的一个例子,而标识符用于标识某些东西的名字。下面是一些命名标识符识必须遵守的规则:
?? 标识符的第一个字符必须是字母(包括大小写ASCII字母或unicode字符)或下划线('_')(注: 没错,用中文试试哈)
?? 后面的字符可以由字母(大小写ASCII字母或unicode字符),下划线('_')和数字组成.
?? 标识符是大小写敏感的,例如myname和myName是不同的,前者小写后者大写.
?? 一些合法标识符的例子i, __my_name, name_23, a1b2_c3,
resum??????'?????? ???????? ??????????????&ce nt;??????'??????&sbqu o;????????????&sc aron;????????_count.(注: 不知道乱码还是某国语言...)
?? 非法标识符的例子, 2things, my-name, "this_is_inquotes" 数据类型
变量能容纳不同类型的值,被称为数据类型. 基本数据类型包括我们刚才讨论过的数字和字符串.
在后面的章节中我们将看到如何利用类创建我们自己的数据类型。
对象
记住,在python中一切皆对象,因此从广义上我们不说"某物"而说"某对象"
面向对象编程用户请注意
python是很彻底的面向对象语言,它的一切包括数字,字符串和函数全是对象。 如何编写python程序
从现在开始,保存和运行一个python程序的过程如下:
1. 打开你钟爱的编辑器.
2. 输入本书的范例代码.
3. 用源文件注释中给出的名字保存文件。并且我遵循惯例为搜索python文件加上py后缀名.
4. 以命令python program.py启动解释器执行程序或者使用IDLE. 当然你也可以使用前文介绍过的执行方法。 范例: 使用变量和字面常量
# Filename : var.py
i = 5
print(i)
i = i + 1
print(i)
s = '''This is a multi-line s
This is the second line.'''
print(s)
#输出:
$ python var.py
5
6
This is a multi-line stri
This is the second line.
范例工作流程:
首先,我们使用赋值运算符(=)为变量i赋值字面常量5,这行被称做一条语句,因为它表示需要完成某种操作,
这里是为变量名i绑定数值5. 接下来我们使用print语句打印i的值. (注: py2k中print是条语句,说成"print语句"可以接受,但py3k中print是个地道的函数,因此说"调用print函数"更为恰当)
然后我们为i的值加1并存回i, 当打印它的值时得到意料中的6。
与之类似,我们又为变量S赋值字面字符串然后打印它。 静态语言程序员请注意
变量被赋值后即可使用,这里无需变量声明或数据类型定义. 逻辑行和物理行
你所看到的代码中的行即为物理行,而python将一条语言当作一个逻辑行。
python假设一个物理行对应一个逻辑行。
逻辑行的例子是形如print('Hello World')的单条语句,如果它独占一行(就象你在编辑器看到的),那么它也是一个物理行.
python本身鼓励每条语句占一行,这样可读性更强。
如果你希望在一个物理行包含多个逻辑行,则必须使用分号(;)显式一个逻辑行/语句的结束.例,
i = 5
print(i)
与下面的等效
i = 5;
print(i);
这样写的效果也一样
i = 5; print(i);
甚至可以这样写
i = 5; print(i)
虽然有多种写法,但我强烈建议你一个物理行只包含一个逻辑行. 不过当逻辑行太长,也可以把它写成多个物理行。
这些办法都是为了尽可能避免分号,使得代码的可读性更强。事实上我从不使用甚至都没在python程序中看到过分号。
下面是一个将逻辑行扩展为多个物理行的例子,它被称做显式行合并(explicit line joining)
s = 'This is a string. \
This continues the string.'
print(s)
相应的输出为:
This is a string. This continues the string.
与之类似的,
pring\(i)
相当于
print(i)
另外某些情况下会导致隐式行合并(implicit line joining),比如逻辑行使用了大中小括号,此时无需反斜杠。
在后面的章节我们会使用列表编写程序,届时你会看到这种用法。 缩进
在python中空白字符是非常重要的,更具体的说是每行开头的空白字符十分重要。这被称作缩进。
逻辑行开头的空白字符(空格和tab)用于确定逻辑行的缩进级别,依此按顺序将语句分组。
也就是说同组的语句必须拥有相同的缩进级别,而这些语句组被称作块。下一章我们会看到块的重要性。
现在你需要牢记的是错误的缩进会导致程序出错, 举个例子:
i = 5
print('Value is ', i) #错误! 注意本行的开头多了一个空格.
print('I repeat, the value is ', i)
运行上面代码会得到下面的错误信息:
File "whitespace.py", line 4
print('Value is ', i) # Error! Notice a single space at the start of the line
^
IndentationError: unexpected indent
你可能注意到了程序的第2行的开头多了一个空格. 错误信息告诉我们程序的语法是非法的, 即程序的编写有问题.
这也意味着你不能随便开始新的语句块(除了主块, 我们一直在主快内编写). 那么要如何开始新的块呢? 后面的章节会有详解, 比如控制流. 如何缩进
不要混用空格和tab, 否则在不同的平台可能无法正常工作.
我强烈建议你使用tab或4个空格进行缩进, 谨记两者则其一然后一直用下去.
静态语言程序员请注意
python总是使用缩紧表达语句块, 这里没有括号啥事. 运行代码Run from __future__ import braces了解更多
(注: 表运行了, 过时了无视吧, 不过前句话没过时啊!)
小结
本章涉及到很多核心知识, 下面会接触到更有趣的东东, 比如控制流语句.
在此之前请确定你已经对本章的内容有足够的理解了.
发表评论
-
python的实例应用
2012-01-20 09:38 592python的实例应用 2011年01月20日 她--一 ... -
Python
2012-01-20 09:38 927Python 2010年07月21日 Python (发 ... -
python简介
2012-01-20 09:37 803python简介 2010年09月08日 python是 ... -
越南签证、柬埔寨签证价格表
2012-01-19 14:40 591越南签证、柬埔寨签证价格表 2011年03月31日 20 ... -
我国驻越南的外交机构
2012-01-19 14:40 499我国驻越南的外交机构 2011年03月23日 中国驻越南 ... -
越南驻中国领事馆地址
2012-01-19 14:40 864越南驻中国领事馆地址 2011年08月18日 越南驻中国 ... -
中国驻越南大使馆联系方式
2012-01-19 14:40 1025中国驻越南大使馆联系方式 2011年11月02日 越南驻 ... -
各国驻香港大使馆
2012-01-19 14:40 674各国驻香港大使馆 2011年05月10日 香港机票网 ... -
(叶全府)常用JavaScript大全
2012-01-17 04:26 509(叶全府)常用JavaScript大全 2010年10月10 ... -
JavaScript内置与本地,宿主函数
2012-01-17 04:26 715JavaScript内置与本地,宿主函数 2011年09月0 ... -
Python 2.7 Tutorial ―― 模块
2012-01-17 04:26 774Python 2.7 Tutorial ―― 模块 2010 ... -
网页制作Javascript经典小技巧
2012-01-17 04:26 556网页制作Javascript经典小技巧 2011年05月26 ... -
JS函数
2012-01-17 04:26 548JS函数 2011年07月19日 1.document. ... -
2011,给力
2012-01-16 03:16 6562011,给力 2011年02月03日 消费心理学的研究 ... -
做美丽女人
2012-01-16 03:16 572做美丽女人 2009年10月10日 日志 ... -
ON懂
2012-01-16 03:16 424ON懂 2009年10月04日 ... -
会说话的女人最出色!
2012-01-16 03:16 687会说话的女人最出色! 2 ... -
英语中描写”人”的词语集萃
2012-01-16 03:15 1434英语中描写”人”的词 ...
相关推荐
python基础教程源代码-python基础教程第三版源代码 【实例简介】 python基础教程第三版源代码 python基础教程第三版源代码 【实例截图】 【核⼼代码】 Beginning_Python_version3_SourceCode Beginning Python_...
Python基础课件(共282张PPT)全文共282页,当前为第1页。 第一章 进入(jìnrù)python3.5的精彩世界 第二页,共二百八十二页。 Python基础课件(共282张PPT)全文共282页,当前为第2页。 前言(qián yán) Python 简介...
python教程英语版_Python基础教程第3版英⽂原版pdf 资源名称:Python基础教程第3版 英⽂原版pdf Magnus Lie Hetland⼜更新他的 "Beginning Python From Novice to Professional"了,该书为第三版英⽂,基于Python3.5...
python 基础教程 第二版 高清 书签 中文: 本书包括Python程序设计的方方面面,首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句。然后循序渐进地介绍了...
python基础教程至60课(基础) 【Python 第1课】安装 6 【Python 第2课】print 7 【Python 第3课】IDE 10 【Python 第4课】输入 12 【Python 第5课】变量 14 【Python 第6课】bool 16 【Python 第7课】if 19 【Python...
Python基础语法合集.pdfPython基础语法合集.pdfPython基础语法合集.pdfPython基础语法合集.pdfPython基础语法合集.pdfPython基础语法合集.pdfPython基础语法合集.pdfPython基础语法合集.pdfPython基础语法合集.pdf
【Python基础入门教程 Python语言编程导论】课程列表 Python基础入门教程 Python语言编程导论 Python应用案例1 (共12页).ppt Python基础入门教程 Python语言编程导论 Python应用案例二 (共24页).ppt Python基础...
python基础教程txt免费-Python基础教程(第2版) 《Python基础教程(第2版)》内容涉及的范围较⼴,既能为初学者夯实基础,⼜能帮助程序员提升技能,适合各个层次的Python开发⼈员 阅读参考。《Python基础教程(第2版)...
Python基础入门教程 由浅入深讲解清晰 第1章 基础知识 (共44页).ppt Python基础入门教程 由浅入深讲解清晰 第2章 Python序列 (共68页).ppt Python基础入门教程 由浅入深讲解清晰 第3章 选择与循环 (共44页)....
《Python基础教程(第2版·修订版)》是经典的Python入门教程,层次鲜明,结构严谨,内容翔实,特别是最后几章,作者将前面讲述的内容应用到10个引人入胜的项目中,并以模板的形式介绍了项目的开发过程,手把手教授...
Python基础教程 第三版 高清版 Python基础教程 第三版 高清版
最全Python基础的知识点复习完整版
完整图文版教程 优质的Python基础入门教程 02、程序的灵魂-算法 (共11页).pptx 完整图文版教程 优质的Python基础入门教程 03、Python布尔类型复习4 (共9页).pptx 完整图文版教程 优质的Python基础入门教程 03、...
python基础教程配套源码,
Python基础与大数据应用-习题答案.zip
python基础培训.ppt python基础培训.ppt python基础培训.ppt
python 基础教程第二版修订版,是修订版。高清,有书签,由于太大分为两次上传,把两个压缩包一起解压
python基础教程(第3版)Magnus Lie Hetland (作者) 袁国忠(翻译)
Python基础教程(第3版)-1 费心整理的 喜欢的评个好评哈 谢谢
Python基础知识培训,Python基础知识培训PPT,Python基础知识培训课件