转 Python 2.7 学习摘记

来源:互联网 发布:jackson json 官网 编辑:程序博客网 时间:2024/05/17 02:22

原文链接:(51CTO python 基础知识)

基于 IDLE 交互式解释器执行的 Python :

1).可以不要语句末尾的分号(除非一行写多条语句,但这并不常见)

2).可以推导数据类型,默认除法与 C++ 一致 :整数除法 1/2=0,浮点数除法 1.0/2=0.5 

3).如果希望Python只执行普通的除法(费整除1/2=0.5),那么可以在程序(后面会讲到编写完整的程序)前加上以下语句,或者直接在解释器里面执行它:

  1. >>> from __future__ import division 

注意 为了清晰起见,在此说明一下,上述代码中的future前后是两个下划线:__future__。

还有另外一个方法,如果通过命令行(比如在Linux系统上)运行Python,可以使用命令开关-Qnew。通过使用上述两种方法,除法都会变得更为合理:

  1. >>> 1 / 2  
  2. 0.5 

当然,单斜线不再用作前面提到的整除了,但是↓

4).Python提供了另外一个用于实现整除的操作符--双斜线

  1. >>> 1 // 2  

就算是浮点数,双斜线也会执行整除:

  1. >>> 1.0 // 2.0  
  2. 0.0 

5).** 乘幂运算符。注意负号(算数取反运算符 -)的优先级比乘幂运算符 ** 低

  1. >>> -3**2  
  2. -9
  3. >>> (-3)**2
  4. 9
    6) .可以处理非常大的整数(数字末尾带 L)。普通整数不能大于2 147 483 647(也不能小于 2 147 483 648),可以混合使用,解释器会自动进行类型检查,例如普通整数的乘法运算上溢后自动转换为正确的长整数结果。

  1. >>> 2147483647+0 
  2. 2147483647
  3. >>> 2147483647+1
  4. 2147483648L
  5. >>> 1987163987163981639186L * 198763981726391826L + 23
  6. 394976626432005567613000143784791693659L

7). 十六进制 (0x数字)八进制(0数字)

  1. >>> 0xAF  
  2. 175 
  3. >>> 010
  4. 8

    8). 变量。命名规则:与C语言同。使用:类似 bash 但使用时不需要美元符 $ ,直接使用

  1. >>> x = 3
  2. >>>x * 2  

9). 表达式。表达式是某事,而语句是做某事

  1. >>> print 2*2  

*注意 在Python 3 中,print是函数,需要编写 print(2*2) 而不是 print 2*2

拓展小阅读:

语句特性的一般定义:它们改变了事物。比如,赋值语句改变了变量,print语句改变了屏幕显示的内容。

(赋值语句可能是任何计算机程序设计语言中最重要的语句类型,尽管现在还难以说清它们的重要性。变量就像临时的"存储器" (就像厨房中的锅碗瓢盆一样),它的强大之处就在于,在操作变量的时候并不需要知道它们存储了什么值。比如,即使不知道x和y的值到底是多少,也会知道x*y的结果就是x和y的乘积。所以,可以在程序中通过多种方法来使用变量,而不需要知道在程序运行的时候,最终存储(或引用)的值到底是什么。)

10). 获取用户输入。(输入字符串时加单引号或双引号) 

  1. >>> input("The meaning of life: ")  
  2. The meaning of life: "cc" 
  3. 'cc' 

  4. >>> x = input(" x: ")
  5. x: 24
  6. >>> y = input("y: ")
  7. y: 62
  8. >>> print x + y
  9. 86

11). 函数

  1. >>> pow(2,3)  
  2. 8
  3. >>> 10 + pow(2, 3*5)/3.0
  4. 10932.666666666666

12). 模块。增强的扩展功能

① 使用命令 "import 模块" 导入特定模块。然后就可以按照"模块.函数"的格式使用这个模块的函数。

  1. >>> import math  
  2. >>> math.floor(32.9)  
  3. 32.0 
  4. >>> int(math.floor(32.9))
  5. 32

② "from 模块 import 函数":在确定自己不会导入多个同名函数(从不同模块导入)的情况下使用,然后就可以直接使用函数,而不需要模块名作为前缀:

  1. >>> from math import sqrt  
  2. >>> sqrt(9)  
  3. 3.0 
    ③ 使用变量引用函数(或者Python之中大多数的对象)。

比如,通过foo=math. sqrt进行赋值,然后就可以使用foo来计算平方根了:foo(4)的结果为2.0


13). cmath (complex math)复数模块

math 模块里的 sqrt 等只能处理浮点数,而虚数(以及复数,即实数和虚数之和)是完全不同的--这也是由另外一个叫做cmath(即complex math,复数)的模块来实现这些功能的原因。

  1. >>> import cmath  
  2. >>> cmath.sqrt(-1)  
  3. 1j 

*注意,这里并没有用 from...import... 语句。否则就没法使用普通的sqrt函数了。这类命名冲突很讨厌,除非真的需要from这个形式的模块导入语句,否则应该坚持使用普通的import。

j 或大写的 J 是虚数的后缀。Python语言本身就提供了对复数的支持。

  1. >>> (1+3j) * (9+4j)  
  2. (-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 批处理脚本

如果还没来得及看结果,程序窗口就已经关闭了。可以在添加一行代码:

  1. raw_input("Press <enter>") 


16). 注释。 # 开头

使用注释是非常有效的--即使是自己回头再看旧代码也一样。据说程序员的第一戒律就是"汝应注释"(Thou Shalt Comment)(尽管很多刻薄的程序员的座右铭是"如果难写,就该难读")。程序员应该确保注释说的都是重要的事情,而不要重复代码中显而易见的内容。无用的、多余的注释还不如没有。例如,下例中的注释就不好

  1. # 获得用户名:  
  2. user_name = raw_input("What is your name?") 
   即使没有注释,也应该让代码本身易于理解。幸好,Python是一门出色的语言,它能帮助程序员编写易于理解的程序。


17). 字符串。"lg"+"cc"=="lgcc" 可以直接用“+”把两个字符串连接起来

① raw_input() 原始字串输入,读到什么就输出什么。

② 字符串是值,就像数字一样。P

③ 单引号字符串: python 打印字符串时都是用单引号括起来的。双引号:的作用是简单的时候可以和单引号相互包含,不需要转义:如"cc""c'cc'c"'l"gl"g',不能再嵌套自己:"c"cc"c", 会出错;但是'"''"'没问题,因为引号的作用就是匹配+定界,所以它可以被 python 解释器正确的分解为'"'+'"',类似的'lll''ggg'、'ccc'"ccc"都正确

④ 转义引号:更多复杂的引号包含就需要转义了。

  1. >>> "\"Hello, world!\" she said"  
  2. '"Hello, world!" she said' 

⑤ 拼接字符串:

  1. >>> "Let's say " '"Hello, world!"'  
  2. 'Let\'s say "Hello, world!"' 

这种机制用得不多,有时却非常有用。不过,它只是在同时写下两个字符串时才有效,而且要一个紧接着另一个:

  1. >>> x = "Hello, " 
  2. >>> y = "world!" 
  3. >>> x y  
  4. SyntaxError: invalid syntax 

换句话说,这仅仅是书写字符串的一种特殊方法,并不是拼接字符串的一般方法。通用情况还是加号

  1. >>> "Hello, " + "world!"  
  2. 'Hello, world!'  
  3. >>> x = "Hello, " 
  4. >>> y = "world!" 
  5. >>> x + y  
  6. 'Hello, world!' 


18). 字符串表示,str和repr

实际上是值被转换为字符串的两种机制。一是通过 str 函数,它会把值转换为合理形式的字符串,以便用户可以理解;而 repr 会创建一个字符串,它以合法的Python表达式的形式来表示值 。下面是一些例子:

  1. >>> print repr("Hello, world!")  
  2. 'Hello, world!'  
  3. >>> print repr(10000L)  
  4. 10000L  
  5. >>> print str("Hello, world!")  
  6. Hello, world!  
  7. >>> print str(10000L)  
  8. 10000 

由此可见,python 打印默认使用 repr 函数机制,print 等语句会使用 str() :

  1. >>> "Hello, world!"  
  2. 'Hello, world!'  
  3. >>> 10000L  
  4. 10000L  
  5. >>> print "Hello, world!"  
  6. Hello, world!  
  7. >>> print 10000L  
  8. 10000 
 

19). 特殊字符串

① 长字符串:

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

  1. print '''This is a very long string.  
  2. It continues here.  
  3. And it's not over yet.  
  4. "Hello, world!"  
  5. Still here.''' 

也可以使用三个双引号,如"""Like This"""。注意,因为这种与众不同的引用方式,你可以在字符串之中同时使用单引号和双引号,而不需要使用反斜线进行转义。

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

  1. print "Hello, \  
  2. world!"  
  3. 这句会打印Hello, world!。这个用法也适用于表达式和语句:  
  4. >>> 1 + 2 + \  
  5.         4 + 5  
  6. 12  
  7. >>> print \  
  8.         'Hello, world'  
  9. Hello, world 

② 原始字符串(以r开头)

对于长路径,可能需要很多反斜线进行转义:

  1. path = 'C:\\Program Files\\fnord\\foo\\bar\\baz\\frozz\\bozz'

在这样的情况下,原始字符串就派上用场了。原始字符串不会把反斜线当作特殊字符。在原始字符串中输入的每个字符都会与书写的方式保持一致:

  1. >>> print r'C:\nowhere'  
  2. C:\nowhere  
  3. >>> print r'C:\Program Files\fnord\foo\bar\baz\frozz\bozz'  
  4. C:\Program Files\fnord\foo\bar\baz\frozz\bozz 

可以看到,原始字符串以r开头。注意不能在原始字符串结尾输入反斜线,会报错。

如果最后一个字符(位于结束引号前的那个)是反斜线,Python就不清楚是否应该结束字符串:

  1. >>> print r"This is illegal\"  
  2. SyntaxError: invalid token

是如果希望原始字符只以一个反斜线作为结尾的话,那该怎么办呢?本质上就是把反斜线单独作为一个字符串来处理。以下就是一种简单的做法:
  1. >>> print r'C:\Program Files\foo\bar' '\\'  
  2. C:\Program Files\foo\bar\  

注意,可以在原始字符串中同时使用单双引号,即使三引号字符串也可以充当原始字符串

③ Unicode 字符串(以u开头)

(或者称为Unicode对象--与字符串并不是同一个类型,访问Unicode的网站:http://www.unicode.org)

Python中的普通字符串在内部是以8位的ASCII码形成存储的,而Unicode字符串则存储为16位Unicode字符,这样就能够表示更多的字符集了,包括世界上大多数语言的特殊字符。

  1. >>> u'Hello, world!'  
  2. 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章将会介绍更多使用字符串的方式。


0 0
原创粉丝点击