Python学习笔记1

【Dive  Into Python 1到3章】

书:Dive  Into Python 本书存放在 http://diveintopython.org/ (英文原版) 和 http://www.woodpecker.org.cn/diveintopython(中文版)。

工具:ActivePython、UliPad

Python 既是动态类型语言 (因为它不使用显示数据类型声明),又是强类型语言 (因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)

在三重引号中的任何东西都是这个函数的 doc string,它们用来说明函数可以做什么。如果存在 doc string,它必须是一个函数要定义的第一个内容 (也就是说,在冒号后面的第一个内容)。在技术上不要求给出函数的 doc string,但是您应该这样做。我相信在您上过的每一种编程课上都听到过这一点,但是 Python 带给您一些额外的动机:doc string 在运行时可作为函数的属性

import odbchelper : 模块

所有的函数都有一个内置的 __doc__ 属性,它会返回在函数源代码中定义的 doc string;

在 Python 中万物皆对象。字符串是对象。列表是对象。函数是对象。甚至模块也是对象

Python 函数没有明显的 begin 和 end,没有标明函数的开始和结束的花括号。唯一的分隔符是一个冒号 (:),接着代码本身是缩进的。

Python 使用硬回车来分割语句,冒号和缩进来分割代码块。C++ 和 Java 使用分号来分割语句,花括号来分割代码块。

可以在模块内部为您的模块设计一个测试套件,在其中加入这个 if 语句。当您直接运行模块,__name__ 的值是 __main__,所以测试套件执行。当您导入模块,__name__ 的值就是别的东西了,所以测试套件被忽略。这样使得在将新的模块集成到一个大程序之前开发和调试容易多了。
if __name__ == "__main__":

 

定义 Dictionary
>>> d = {"server":"mpilgrim", "database":"master"} 
当使用 dictionary 时,您需要知道:dictionary 的的。
 
定义 List
>>> li = ["a", "b", "mpilgrim", "z", "example"] 
List 可以作为以 0 下标开始的数组
从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 。
可以这样理解:li[-n] == li[len(li) - n]。所以在这个 list 里,li[-1] == li[5 - 1] == li[4]
>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li[-1]
'example'

list 的分片 (slice)


ContractedBlock.gifExpandedBlockStart.gifCode
>>> li
[
'a''b''mpilgrim''z''example']
>>> li[1:3]  
[
'b''mpilgrim']
>>> li[1:-1
[
'b''mpilgrim''z']
>>> li[0:3]  
[
'a''b''mpilgrim']
您可以通过指定 2 个索引得到 list 的子集,叫做一个 “slice” 。
返回值是一个新的 list,它包含了 list 中按顺序从第一个 slice 索引 (这里为 li[1]) 开始,直到第二个 slice 索引 (这里为 li[3]) 的所有元素。
如果一个或两个 slice 索引是负数,slice 也可以工作。

Slice 简写


>>> li
[
'a''b''mpilgrim''z''example']
>>> li[:3
[
'a''b''mpilgrim']
>>> li[3:]  
[
'z''example']
>>> li[:]  
[
'a''b''mpilgrim''z''example']

extend (扩展) 与 append (追加) 的差别

 

在 2.2.1 版本之前,Python 没有单独的布尔数据类型。为了弥补这个缺陷,Python 在布尔环境 (如 if 语句) 中几乎接受所有东西,遵循下面的规则:

  • 0 为 false; 其它所有数值皆为 true。
  • 空串 ("") 为 false; 其它所有字符串皆为 true。
  • 空 list ([]) 为 false; 其它所有 list 皆为 true。
  • 空 tuple (()) 为 false; 其它所有 tuple 皆为 true。
  • 空 dictionary ({}) 为 false; 其它所有 dictionary 皆为 true。

这些规则仍然适用于 Python 2.2.1 及其后续版本,但现在您也可以使用真正的布尔值,它的值或者为 True 或者为 False。请注意第一个字母是大写的;这些值如同在 Python 中的其它东西一样都是大小写敏感的。

List 运算符

Lists 也可以用 + 运算符连接起来。list = list + otherlist 相当于 list.extend(otherlist)。但 + 运算符把一个新 (连接后) 的 list 作为值返回,而 extend 只修改存在的 list。也就是说,对于大型 list 来说,extend 的执行速度要快一些。
Python 支持 += 运算符。li += ['two'] 等同于 li.extend(['two'])+= 运算符可用于 list、字符串和整数,并且它也可以被重载用于用户自定义的类中 。
* 运算符可以作为一个重复器作用于 list。li = [1, 2] * 3 等同于 li = [1, 2] + [1, 2] + [1, 2],即将三个 list 连接成一个。

使用 tuple 有什么好处呢?

  • Tuple 比 list 操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用 tuple 代替 list。
  • 如果对不需要修改的数据进行 “写保护”,可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句,说明这一数据是常量。如果必须要改变这些值,则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
  • 还记得我说过 dictionary keys 可以是字符串,整数和 “其它几种类型”吗?Tuples 就是这些类型之一。Tuples 可以在 dictionary 中被用做 key,但是 list 不行。实际上,事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的,但是如果您有一个 list 的 tuple,那就认为是可变的了,用做 dictionary key 就是不安全的。只有字符串、整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。
  • Tuples 可以用在字符串格式化中,我们会很快看到。

Tuple 可以转换成 list,反之亦然。内置的 tuple 函数接收一个 list,并返回一个有着相同元素的 tuple。而 list 函数接收一个 tuple 返回一个 list。从效果上看,tuple 冻结一个 list,而 list 解冻一个 tuple。

Python 与大多数其它语言一样有局部变量和全局变量之分,但是它没有明显的变量声明。变量通过首次赋值产生,当超出作用范围时自动消亡。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值