原文链接:(51CTO python 基础知识)
基于 IDLE 交互式解释器执行的 Python :
1).可以不要语句末尾的分号(除非一行写多条语句,但这并不常见)
2).可以推导数据类型,默认除法与 C++ 一致 :整数除法 1/2=0,浮点数除法 1.0/2=0.5
3).如果希望Python只执行普通的除法(费整除1/2=0.5),那么可以在程序(后面会讲到编写完整的程序)前加上以下语句,或者直接在解释器里面执行它:
- >>> from __future__ import division
注意 为了清晰起见,在此说明一下,上述代码中的future前后是两个下划线:__future__。
还有另外一个方法,如果通过命令行(比如在Linux系统上)运行Python,可以使用命令开关-Qnew。通过使用上述两种方法,除法都会变得更为合理:
- >>> 1 / 2
- 0.5
当然,单斜线不再用作前面提到的整除了,但是↓
4).Python提供了另外一个用于实现整除的操作符--双斜线:
- >>> 1 // 2
- 0
就算是浮点数,双斜线也会执行整除:
- >>> 1.0 // 2.0
- 0.0
5).** 乘幂运算符。注意负号(算数取反运算符 -)的优先级比乘幂运算符 ** 低
- >>> -3**2
- -9
- >>> (-3)**2
- 9
- >>> 2147483647+0
- 2147483647
- >>> 2147483647+1
- 2147483648L
- >>> 1987163987163981639186L * 198763981726391826L + 23
- 394976626432005567613000143784791693659L
7). 十六进制 (0x数字)八进制(0数字)
- >>> 0xAF
- 175
- >>> 010
- 8
- >>> x = 3
- >>> x * 2
- 6
9). 表达式。表达式是某事,而语句是做某事
- >>> print 2*2
- 4
*注意 在Python 3 中,print是函数,需要编写 print(2*2) 而不是 print 2*2
拓展小阅读:
语句特性的一般定义:它们改变了事物。比如,赋值语句改变了变量,print语句改变了屏幕显示的内容。
(赋值语句可能是任何计算机程序设计语言中最重要的语句类型,尽管现在还难以说清它们的重要性。变量就像临时的"存储器" (就像厨房中的锅碗瓢盆一样),它的强大之处就在于,在操作变量的时候并不需要知道它们存储了什么值。比如,即使不知道x和y的值到底是多少,也会知道x*y的结果就是x和y的乘积。所以,可以在程序中通过多种方法来使用变量,而不需要知道在程序运行的时候,最终存储(或引用)的值到底是什么。)
10). 获取用户输入。(输入字符串时加单引号或双引号)
- >>> input("The meaning of life: ")
- The meaning of life: "cc"
- 'cc'
-
- >>> x = input(" x: ")
- x: 24
- >>> y = input("y: ")
- y: 62
- >>> print x + y
- 86
11). 函数
- >>> pow(2,3)
- 8
- >>> 10 + pow(2, 3*5)/3.0
- 10932.666666666666
12). 模块。增强的扩展功能
① 使用命令 "import 模块" 导入特定模块。然后就可以按照"模块.函数"的格式使用这个模块的函数。
- >>> import math
- >>> math.floor(32.9)
- 32.0
- >>> int(math.floor(32.9))
- 32
② "from 模块 import 函数":在确定自己不会导入多个同名函数(从不同模块导入)的情况下使用,然后就可以直接使用函数,而不需要模块名作为前缀:
③ 使用 变量引用函数(或者Python之中大多数的对象)。
- >>> from math import sqrt
- >>> sqrt(9)
- 3.0
比如,通过foo=math. sqrt进行赋值,然后就可以使用foo来计算平方根了:foo(4)的结果为2.0
13). cmath (complex math)复数模块
math 模块里的 sqrt 等只能处理浮点数,而虚数(以及复数,即实数和虚数之和)是完全不同的--这也是由另外一个叫做cmath(即complex math,复数)的模块来实现这些功能的原因。
- >>> import cmath
- >>> cmath.sqrt(-1)
- 1j
*注意,这里并没有用 from...import... 语句。否则就没法使用普通的sqrt函数了。这类命名冲突很讨厌,除非真的需要from这个形式的模块导入语句,否则应该坚持使用普通的import。
j 或大写的 J 是虚数的后缀。Python语言本身就提供了对复数的支持。
- >>> (1+3j) * (9+4j)
- (-3+31j)
*注意:Python中没有单独的虚数类型。它们被看作实数部分为0的复数。
14). 允许我们通过 __future__ 导入新的语言特性
Guido van Rossum(Python之父)拥有时光机,他将时光机的一部分以 __future__ 这个充满魔力的模块的形式融入了Python。通过它可以导入那些在未来会成为标准Python组成部分的新特性。
15). 保存脚本执行
交互式解释器是Python的强项之一,它让实时检验解决方案并且体验这门语言成为了现实。但是编写并保存脚本,可以使自己的工作成果得到复用。①语法 python <脚本文件名>, 如 python hello.py ②双击执行 ③让脚本像普通程序一样执行,UNIX 下用 #!(叫做 sharp - bang)作为脚本的开头。windows 可以使用 set PATH=C:\Python27;%PATH% 开头的 .bat 批处理脚本
如果还没来得及看结果,程序窗口就已经关闭了。可以在添加一行代码:
- raw_input("Press <enter>")
16). 注释。 # 开头
使用注释是非常有效的--即使是自己回头再看旧代码也一样。据说程序员的第一戒律就是"汝应注释"(Thou Shalt Comment)(尽管很多刻薄的程序员的座右铭是"如果难写,就该难读")。程序员应该确保注释说的都是重要的事情,而不要重复代码中显而易见的内容。无用的、多余的注释还不如没有。例如,下例中的注释就不好:
即使没有注释,也应该让代码本身易于理解。幸好,Python是一门出色的语言,它能帮助程序员编写易于理解的程序。
- # 获得用户名:
- user_name = raw_input("What is your name?")
17). 字符串。"lg"+"cc"=="lgcc" 可以直接用“+”把两个字符串连接起来
① raw_input() 原始字串输入,读到什么就输出什么。
② 字符串是值,就像数字一样。P
③ 单引号字符串: python 打印字符串时都是用单引号括起来的。双引号:的作用是简单的时候可以和单引号相互包含,不需要转义:如"cc"、"c'cc'c"、'l"gl"g',不能再嵌套自己:"c"cc"c", 会出错;但是'"''"'没问题,因为引号的作用就是匹配+定界,所以它可以被 python 解释器正确的分解为'"'+'"',类似的'lll''ggg'、'ccc'"ccc"都正确
④ 转义引号:更多复杂的引号包含就需要转义了。
- >>> "\"Hello, world!\" she said"
- '"Hello, world!" she said'
⑤ 拼接字符串:
- >>> "Let's say " '"Hello, world!"'
- 'Let\'s say "Hello, world!"'
这种机制用得不多,有时却非常有用。不过,它只是在同时写下两个字符串时才有效,而且要一个紧接着另一个:
- >>> x = "Hello, "
- >>> y = "world!"
- >>> x y
- SyntaxError: invalid syntax
换句话说,这仅仅是书写字符串的一种特殊方法,并不是拼接字符串的一般方法。通用情况还是加号
- >>> "Hello, " + "world!"
- 'Hello, world!'
- >>> x = "Hello, "
- >>> y = "world!"
- >>> x + y
- 'Hello, world!'
18). 字符串表示,str和repr
实际上是值被转换为字符串的两种机制。一是通过 str 函数,它会把值转换为合理形式的字符串,以便用户可以理解;而 repr 会创建一个字符串,它以合法的Python表达式的形式来表示值 。下面是一些例子:
- >>> print repr("Hello, world!")
- 'Hello, world!'
- >>> print repr(10000L)
- 10000L
- >>> print str("Hello, world!")
- Hello, world!
- >>> print str(10000L)
- 10000
由此可见,python 打印默认使用 repr 函数机制,print 等语句会使用 str() :
- >>> "Hello, world!"
- 'Hello, world!'
- >>> 10000L
- 10000L
- >>> print "Hello, world!"
- Hello, world!
- >>> print 10000L
- 10000
19). 特殊字符串
① 长字符串:
如果需要写一个非常非常长的字符串,它需要跨多行,那么,可以使用三个引号代替普通引号。
- print '''This is a very long string.
- It continues here.
- And it's not over yet.
- "Hello, world!"
- Still here.'''
也可以使用三个双引号,如"""Like This"""。注意,因为这种与众不同的引用方式,你可以在字符串之中同时使用单引号和双引号,而不需要使用反斜线进行转义。
提示 续行符 \ 普通字符串也可以跨行。如果一行之中最后一个字符是反斜线,那么,换行符本身就"转义"了,也就是被忽略了,例如:
- print "Hello, \
- world!"
- 这句会打印Hello, world!。这个用法也适用于表达式和语句:
- >>> 1 + 2 + \
- 4 + 5
- 12
- >>> print \
- 'Hello, world'
- Hello, world
② 原始字符串(以r开头)
对于长路径,可能需要很多反斜线进行转义:
- path = 'C:\\Program Files\\fnord\\foo\\bar\\baz\\frozz\\bozz'
在这样的情况下,原始字符串就派上用场了。原始字符串不会把反斜线当作特殊字符。在原始字符串中输入的每个字符都会与书写的方式保持一致:
- >>> print r'C:\nowhere'
- C:\nowhere
- >>> print r'C:\Program Files\fnord\foo\bar\baz\frozz\bozz'
- C:\Program Files\fnord\foo\bar\baz\frozz\bozz
可以看到,原始字符串以r开头。注意:不能在原始字符串结尾输入反斜线,会报错。
如果最后一个字符(位于结束引号前的那个)是反斜线,Python就不清楚是否应该结束字符串:
是如果希望原始字符只以一个反斜线作为结尾的话,那该怎么办呢? 本质上就是把反斜线单独作为一个字符串来处理。以下就是一种简单的做法:
- >>> print r"This is illegal\"
- SyntaxError: invalid token
- >>> print r'C:\Program Files\foo\bar' '\\'
- C:\Program Files\foo\bar\
注意,可以在原始字符串中同时使用单双引号,即使三引号字符串也可以充当原始字符串。
③ Unicode 字符串(以u开头)
(或者称为Unicode对象--与字符串并不是同一个类型,访问Unicode的网站:http://www.unicode.org)
Python中的普通字符串在内部是以8位的ASCII码形成存储的,而Unicode字符串则存储为16位Unicode字符,这样就能够表示更多的字符集了,包括世界上大多数语言的特殊字符。
- >>> u'Hello, world!'
- u'Hello, world!'
20). 入门小结
算法。算法是描述如何完成一项任务的方法。实际上,在编写程序的时候,就是要使用计算机能够理解的语言(如Python)来准确地描述算法。这类对机器友好的描述就叫做程序,程序主要包含表达式和语句。
表达式。表达式是计算机程序的组成部分,它用于表示值。举例来说,2+2是表达式,表示数值4。简单的表达式是通过使用运算符(如+或者%)和函数(如pow)对字面值(比如2或者"Hello")进行处理而构建起来的。通过联合简单的表达式可以建立更加复杂的表达式(如 (2+2)*(3-1))。表达式也可以包含变量。
变量。变量是一个名字,它表示某个值。通过x=2这样的赋值可以为变量赋予新的值。赋值也是一类语句。
语句。语句是告诉计算机做某些事情的指令。它可能涉及改变变量(通过赋值)、向屏幕打印内容(如print "Hello, world!")、导入模块或者其他大量复杂的操作。
函数。Python中的函数就像数学中的函数:它们可以带有参数,并且返回值(第6章会介绍如何编写自定义函数,读者学习之后就会发现,在返回值之前可以做很多有趣的事情)。
模块。模块是扩展,它可以导入到Python中,从而扩展Python的功能。例如,math模块提供了很多有用的数学函数。
程序。本章之前的内容已经介绍过编写、保存和运行Python程序的实际操作了。
字符串。字符串非常简单--就是几段文本,不过,还有很多与字符串相关的知识需要了解。在本章中,你已经看到多种书写字符串的方法。第3章将会介绍更多使用字符串的方式。