python核心编程(二&三)— python简介&Python基础

python简介

Python 有两种主要的方式来完成你的要求:语句和表达式(函数、算术表达式等)。

程序输出,print语句及“HelloWorld!”

  1. 通常当你想看变量内容时,你会在代码中使用 print 语句输出。不过在交互式解释器中, 你可以用 print 语句显示变量的字符串表示,或者仅使用变量名查看该变量的原始值。
  2. 在仅用变量名时,输出的字符串是被用单引号括起来了的。这是为了让非字符串对象也能以字符串的方式显示在屏幕上–即它显示的是该对象的字符串表示,而不仅仅是字符串本身。引号表示你刚刚输入的变量的值是一个字符串。
  3. print 语句调用 str()函数显示对象,而交互式解释器则调用 repr()函数来显示对象。

程序输入和 raw_input()内建函数

  1. 下划线_在解释器中有特别的含义,表示最后一个表达式的值。
  2. Python的print语句,与字符串格式运算符%结合使用,可实现字符串替换功能,这一点和 C 语言中的printf()函数非常相似。
  3. 从用户那里得到数据输入的最容易的方法是使用raw_input()内建函数。它读取标准输入,并将读取到的数据赋值给指定的变量。

注释

和大部分脚本及 Unix-shell 语言一样,Python 也使用 # 符号标示注释,从 # 开始,直
到一行结束的内容都是注释。

有一种叫做文档字符串的特别注释。你可以在模块、类或者函数的起始添加一个字符串,
起到在线文档的功能。与普通注释不同,文档字符串可以在运行时访问,也可以用来自动生成文档。

运算符

+ - * / // % **

  1. Python 有两种除法运算符,单斜杠用作传统除法, 双斜杠用作浮点除法(对结果进行四舍五入)。传统除法是指如果两个操作数都是整数的话, 它将执行是地板除(取比商小的最大整数),而浮点除法是真正的除法,不管操作数是什么类型,浮点除法总是执行真正的除法。
  2. Python 目前支持两种“不等于”比较运算符, != 和 <>。
  3. Python 也提供了逻辑运算符: and or not

变量和赋值

  1. 变量名仅仅是一些字母开头的标识符–所谓字母开头–意指大写或小写字母,另外还包括下划线( _ ). 其它的字符可以是数字、字母或下划线。
  2. Python 变量名是大小写敏感的
  3. Python 是动态类型语言,也就是说不需要预先声明变量的类型。变量的类型和值在赋值那一刻被初始化。
  4. Python 也支持增量赋值,也就是运算符和等号合并在一起。
  5. Python 不支持 C 语言中的自增 1 和自减 1 运算符, 这是因为 + 和 - 也是单目运算符, Python 会将 --n 解释为-(-n) 从而得到 n , 同样 ++n 的结果也是 n。

数字

Python 支持五种基本数字类型:

  • int (有符号整数)
  • long (长整数)
  • bool (布尔值)
  • float (浮点值)
  • complex (复数)

字符串

  1. Python 中字符串被定义为引号之间的字符集合。
  2. Python 支持使用成对的单引号或双引号, 三引号(三个连续的单引号或者双引号)可以用来包含特殊字符。
  3. 使用索引运算符( [ ] )和切 片运算符( [ : ] )可以得到子字符串。
  4. 字符串有其特有的索引规则:第一个字符的索引是 0, 最后一个字符的索引是 -1。
  5. 加号( + )用于字符串连接运算,星号( * )则用于字符串重复。

列表和元组

可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的 Python 对象。和数 组一样,通过从 0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。

列表和元组有几处重要的区别:

  1. 列表元素用中括号([ ])包裹,元素的个数及元素的值可以改变。
  2. 元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以)。元组可以看成是只读的列表。
  3. 通过切片运算( [ ] 和 [ : ] )可以得到子集。
  4. 元组也可以进行切片运算,得到的结果也是元组(不能被修改)。

字典

字典是 Python 中的映射数据类型,工作原理类似 Perl 中的关联数组或者哈希表,由键- 值(key-value)对构成。几乎所有类型的 Python 对象都可以用作键,不过一般还是以数字或者字符串最为常用。

代码块及缩进对齐

代码块通过缩进对齐表达代码逻辑而不是使用大括号,因为没有了额外的字符,程序的可读性更高。而且缩进完全能够清楚地表达一个语句属于哪个代码块。当然,代码块也可以只有一个语句组成。

if语句

 if expression1:
            if_suite
    elif expression2:
             elif_suite
     else:
             else_suite

while 循环

while expression:
  while_suite

for循环和range()内建函数

Python 中的 for 循环与传统的 for 循环(计数器循环)不太一样, 它更象 shell 脚本里 的 foreach 迭代。Python 中的 for 接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中一个元素。

因为我们要使用的数值范围可能会经常变化,Python提供了一个 range()内建函数来生成这种列表。

range()函数经常和 len()函数一起用于字符串索引。

这些循环有一个约束, 你要么循环索引, 要么循环元素。这导致了 enumerate() 函数的推出(Python2.3 新增)。例如:

for i, ch in enumerate(foo):
... print ch, '(%d)' % i
...
a (0)
b (1) c (2)

列表解析

>>> squared = [x ** 2 for x in range(4)] >>> for i in squared:
... print i
0
1
4
9

列表解析甚至能做更复杂的事情:

>>> sqdEvens = [x ** 2 for x in range(8) if not x % 2]
>>>
>>> for i in sqdEvens:
 ... print i
 0
 4
 16
 36

文件和内建函数open()、file()

如何打开文件

handle = open(file_name, access_mode = 'r')

file_name变量包含我们希望打开的文件的字符串名字,access_mode'r' 表示读取, 'w' 表示写入, 'a' 表示添加。其它可能用到的标声还有 '+' 表示读写, 'b'表示二进制访问. 如果未提供 access_mode , 默认值为 'r'。如果 open() 成功, 一个文件对象句柄会被返回。所有后续的文件操作都必须通过此文件句柄进行。当一个文件对象返回之后, 我们就可以访问它的一些方法, 比如 readlines()close().文件对象的方法属性也必须通过句点属性标识法访问。

print 语句中使用逗号来抑制自动生成的换行符号。

错误和异常

可以给代码添加错误检测及异常处理, 只要将它们封装在 try-except 语句当中。 try之后的代码组, 就是你打算管理的代码。 except 之后的代码组, 则是你处理错误的代码。

通过使用 raise 语句故意引发一个异常。

函数

类似其它的语言, Python 中的函数使用小括号( () )调用。函数在调用之前必须先定义。 如果函数中没有 return 语句, 就会自动返回 None 对象。

Python 是通过引用调用的。 这意味着函数内对参数的改变会影响到原始对象。不过事实上只有可变对象会受此影响, 对不可变对象来说, 它的行为类似按值调用。

如何定义函数

def function_name([arguments]):
    "optional documentation string"
    function_suite

默认参数

函数的参数可以有一个默认值, 如果提供有默认值,在函数定义中, 参数以赋值语句的形式提供。事实上这仅仅是提供默认参数的语法,它表示函数调用时如果没有提供这个参数,它就取这个值做为默认值。

类是面向对象编程的核心, 它扮演相关数据及逻辑的容器角色。它们提供了创建“真实”对象(也就是实例)的蓝图。

如何定义类

 class ClassName(base_class[es]):
            "optional documentation string"
             static_member_declarations
             method_declarations

使用 class 关键字定义类。可以提供一个可选的父类或者说基类; 如果没有合适的基类,
那就使用 object 作为基类。class 行之后是可选的文档字符串, 静态成员定义, 及方法定义。

模块

模块是一种组织形式, 它将彼此有关系的 Python 代码组织到一个个独立文件当中。模块可以包含可执行代码, 函数和类或者这些东西的组合。

如何导入模块

import module_name 如何访问一个模块函数或访问一个模块变量

一旦导入完成, 一个模块的属性(函数和变量)可以通过熟悉的 .句点属性标识法访问。

实用的函数

函数 描述
dir([obj]) 显示对象的属性,如果没有提供参数, 则显示全局变量的名字
help([obj]) 以一种整齐美观的形式显示对象的文档字符串, 如果没有提供任何参数, 则会进入交互式帮助。
int(obj) 将一个对象转换为整数
len(obj) 返回对象的长度
open(fn, mode) 以 mode(‘r’ = 读, ‘w’= 写)方式打开一个文件名为 fn 的文件
range([[start,]stop[,step]) 返回一个整数列表。起始值为 start, 结束值为 stop - 1; start 默认值为 0, step默认值为1。
raw_input(str) 等待用户输入一个字符串, 可以提供一个可选的参数 str 用作示提信息。
str(obj) 将一个对象转换为字符串
type(obj) 返回对象的类型(返回值本身是一个 type 对象!)

Python基础

语句和语法

  • 井号(#)表示之后的字符为 Python 注释
  • 换行 (\n) 是标准的行分隔符(通常一个语句一行)
  • 反斜线 ( \ ) 继续上一行
  • 分号 ( ; )将两个语句连接在一行中
  • 冒号 ( : ) 将代码块的头和体分开
  • 语句(代码块)用缩进块的方式体现
  • 不同的缩进深度分隔不同的代码块
  • Python文件以模块的形式组织

注释( # )


Python 注释语句从 # 字符开始,注释可以在一行 的任何地方开始,解释器会忽略掉该行 # 之后的所有内容。

继续( \ )

Python 语句,一般使用换行分隔,也就是说一行一个语句。一行过长的语句可以使用反斜 杠( \ ) 分解成几行。

有两种例外情况一个语句不使用反斜线也可以跨行。在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号、中括号、花括号时可以多行书写。另外就是三引号包括下的字
符串也可以跨行书写。

多个语句构成代码组(:):

缩进相同的一组语句构成一个代码块,我们称之代码组。

模块

变量赋值

  1. 赋值运算符
  2. 链式赋值 y = x = x + 1
  3. 增量赋值 x += 1
  4. 多重赋值 x = y = z = 1

“多元”赋值

另一种将多个变量同时赋值的方法我们称为多元赋值(multuple)。
x, y, z = 1, 2, 'a string'

标识符

标识符是电脑语言中允许作为名字的有效字符串集合。

Python 还有称为 built-in 标识符集合,虽然它们不是保留字,但是不推荐使用这些特别 的名字。

合法的 Python 标识符

  • 第一个字符必须是字母或下划线(_)
  • 剩下的字符可以是字母和数字或下划线
  • 大小写敏感

关键字

内建

专用下划线标识符

  • _xxx 不用'from module import *'导入
  • __xxx__系统定义名字
  • __xxx 类中的私有变量名

模块结构和布局

  1. 起始行(Unix)
  2. 模块文档
  3. 模块导入
  4. 变量定义
  5. 类定义
  6. 函数定义
  7. 主程序

python核心编程(二&三)— python简介&Python基础_第1张图片

内存管理

  • 变量无须事先声明
  • 变量无须指定类型
  • 程序员不用关心内存管理
  • 变量名会被“回收”
  • del 语句能够直接释放资源

变量定义

动态类型

内存分配

引用计数

一个内部跟踪变量,称为一个引用计数器。至于每个对象各有多少个引用, 简称引用计数。当 对象被创建时, 就创建了一个引用计数, 当这个对象不再需要时, 也就是说, 这个对象的引用计数变为 0 时, 它被垃圾回收。

备注:引用计数还有一个致命的缺陷,当程中出现序循环引用时,引用计数算法无法检测出来,被循环引用的内存对象就成了无法回收的内存。从而引起内存泄露。

增加引用计数
  1. 对象被创建
  2. 或另外的别名被创建
  3. 或被作为参数传递给函数(新的本地引用)
  4. 或成为容器对象的一个元素
减少引用计数

当对象的引用被销毁时,引用计数会减小。最明显的例子就是当引用离开其作用范围时, 这种情况最经常出现在函数运行结束时,所有局部变量都被自动销毁,对象的引用计数也就随之减少。

  1. 一个本地引用离开了其作用范围。
  2. 对象的别名被显式的销毁。del y # or del x
  3. 对象的一个别名被赋值给其它的对象。x = 123
  4. 对象被从一个窗口对象中移除。myList.remove(x)
  5. 窗口对象本身被销毁。del myList

垃圾收集

不再被使用的内存会被一种称为垃圾收集的机制释放。一个循环引用发生在当你有至少两个对象互相引用时, 也就是说所有的引用都消失时, 这些引用仍然存在, 这说明只靠引用计数是不够的。Python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。 当一个对象的引用计数变为 0,解释器会暂停,释放掉这个对象 和仅有这个对象可访问(可到达)的其它对象。作为引用计数的补充, 垃圾收集器也会留心被 分配的总量很大(及未通过引用计数销毁的那些)的对象。


参考资料:
Python核心编程
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/53573644
作者:WSYW126

你可能感兴趣的:(Python,python)