引用模块
- 形式1:import module-name。import后面跟空格,然后是模块名称
- 形式2:from module1 import module11。module1是一个大模块,里面还有子模块module11,只想用module11,就这么写
脚本定义
- 计算机程序要经过编译和链接而成为一种人们不易看清而计算机可解读的格式,然后运行。未经编译就可运行的程序,通常称之为脚本程序(script)
- 程序,简而言之,就是指令的集合。但是,有的程序需要编译,有的不需要。python编写的程序就不需要,因此它也被称之为脚本程序
Mac终端运行.py文件
- python 2:OS X 自带 Python 2,所以直接输入
python "python"文件夹的绝对路径/文件名.py
可以通过直接将 .py 文件拖入终端的方式来获取该文件的绝对路径
绝对路径是相对于盘符的路径
- 使用 Python 3 来运行此文件,需在Mac上安装
1-7 玩转字符串(1)
->>> print 'what's your name?'
what's your name?
此处的斜杠为转义字符。所谓转义,就是不采用符号现在之前的含义,而采用另外一含义了
1-8 玩转字符串(2)
- 占位符
在python里面规定了一些占位符,通过这些占位符来说明那个位置应该填写什么类型的东西,这里暂且了解两个占位符:%d——表示那个位置是整数,%s——表示那个位置应该是字符串
>>> a=1
>>> type(a)
<type 'int'> #a是整数
>>> b="1"
>>> type(b)
<type 'str'> #b是字符串
>>> print "one is %d"%a
one is 1
>>> print "one is %d"%b #报错了,这个占位符的位置应该放整数,不应该放字符串。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
1-9 玩转字符串(3)
- 去掉字符串的空格
1 . S.strip() 去掉字符串的左右空格
2 . S.lstrip() 去掉字符串的左边空格
3 . S.rstrip() 去掉字符串的右边空格
1-11 从if语句开始的征程
- raw_input:接受用户输入,返回字符串形式
/#! /usr/bin/env python
这句话以#开头,表示本来不在程序中运行。这句话的用途是告诉机器寻找到该设备上的python解释器,操作系统使用它找到的解释器来运行文件中的程序代码。有的程序里写的是/usr/bin python,表示python解释器在/usr/bin里面。但是,如果写成/usr/bin/env,则表示要通过系统搜索路径寻找python解释器。不同系统,可能解释器的位置不同,所以这种方式能够让代码更将拥有可移植性。对了,以上是对Unix系列操作系统而言
1-12 一个免费的实验室
- 交互模式
当给一个变量a赋值于一个字符串之后,输入变量名称,就能够打印出字符串,和print a具有同样的效果。这是交互模式下的一个特点,如果在文件模式中,则不能,只有通过print才能打印变量内容 - 报错
->>>表示后面可以输入指令,...表示当前指令没有结束。要结束并执行,需要敲击两次回车键。
1-14 有容乃大的list(2)
- append/extend的区别
append是整建制地追加,extend是个体化扩编 - 元素在list位置
list.index(x)
Return the index in the list of the first item whose value is x. It is an error if there is no such item.
1-15 有容乃大的list(4)
- 排序
list.sort(cmp=None, key=None, reverse=False)
sorted(iterable[, cmp[, key[, reverse]]])
1-16 list和str比较
- 相同点
1 . 都属于序列类型的数据
所谓序列类型的数据,就是说它的每一个元素都可以通过指定一个编号,行话叫做“偏移量”的方式得到,而要想一次得到多个元素,可以使用切片。偏移量从0开始,总元素数减1结束 - 区别
1 . list和str的最大区别是:list是可以改变的,str不可变
2 . 在str中,里面的每个元素只能是字符,在list中,元素可以是任何类型的数据 -
list和str转化
1 .str.split():
将str转换成list
2 . "[sep]".join(list)
将list转变成字符串
1-18 画圈还不简单吗?
- print每打印一个之后,就自动换行。如果要让打印的在一行,可以在打印的后面加一个逗号(英文)
1-19 再深点,更懂list
- list解析
- enumerate
同时得到元素编号和元素
1-20 字典,你还记得吗?
- 了解str的属性、方法
help(str)
得到所有内容
> dir(str)
也能得到相同结果,不过更简单
- 概述
>dict是可变的
dict可以存储任意数量的Python对象
dict可以存储任何python数据类型
dict以:key:value,即“键:值”对的形式存储数据,每个键是唯一的。
dict也被称为关联数组或哈希表。
- 知识
1 . 关联数组
>在计算机科学中,关联数组(英语:Associative Array),又称映射(Map)、字典(Dictionary)是一个抽象的数据结构,它包含着类似于(键,值)的有序对。一个关联数组中的有序对可以重复(如C++中的multimap)也可以不重复(如C++中的map)
2 . 哈希表
>散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。也就是说,它通过把键值通过一个函数的计算,映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表
### 1-21 字典的操作方法
- 获取键、值
> dict.keys
dict.values
dict.items #获取字典键值对,list形式,里面的键值对为元组形式
### 1-22 有点简约的元组
- list()和tuple()能够实现两者的转化
### 1-23 一二三,集合了
> 交互模式下用dir()或者help()
google(不推荐Xdu,原因自己体会啦)
1 . ***是否为序列类型:即该数据的元素是否能够索引.其中序列类型的包括str/list/tuple***
2 . ***是否可以原处修改:即该数据的元素是否能够原处修改(特别提醒看官,这里说的是原处修改问题,有的资料里面说str不能修改,也是指原处修改问题.为了避免误解,特别强调了原处).能够原处修改的是list/dict(特别说明,dict的键必须是不可修改的,dict的值可原处修改)***
- 创建set
tuple算是list和str的杂合;
set则可以堪称是list和dict的杂合
- {}这个东西,在dict和set中都用
### 1-25 Python的数据类型总结
- print obj.__doc__
查看某个数据类型的含义
### 1-26 深入变量和引用对象
- is和==的效果
1 . == 指内容一样
2 . is 是比较两个引用对象在内存中的地址是不是一样
### 1-27 赋值,简单也不简单
- 变量名称格式
(下划线或者字母)+(任意数目的字母,数字或下划线)
- 注意
1 . 区分大小写
2 . 禁止使用保留字
3 . 遵循通常习惯
- 以单一下划线开头的变量名(_X)不会被from module import *语句导入的。
- 前后有下划线的变量名(*X*)是系统定义的变量名,对解释器有特殊意义。
- 以两个下划线开头,但结尾没有两个下划线的变量名(__X)是类本地(压缩)变量。
- 通过交互模式运行时,只有单个下划线变量(_)会保存最后的表达式结果
### 1-28 坑爹的字符编码
- python中如何避免中文是乱码
1 . 提倡使用utf-8编码方案,因为它跨平台不错
> # -*- coding: utf-8 -*-
2 . 遇到字符(节)串,立刻转化为unicode,不要用str(),直接使用unicode()
> unicode_str = unicode('中文', encoding='utf-8')
print unicode_str.encode('utf-8') #print不能去除,否则又是乱码形式
3 . 如果对文件操作,打开文件的时候,最好用codecs.open,替代open
> import codecs
codecs.open('filename', encoding='utf8')
### 1-30 不要红头文件(1)
- 创建文件
| 模式 | 描述 |
|:-------------:| -----:|
| r | 以读方式打开文件,可读取文件信息 |
| w| 以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容 |
| a | 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建 |
| r+ | 以读写方式打开文件,可对文件进行读和写操作 |
| w+ | 消除文件内容,然后以读写方式打开文件 |
| a+| 以读写方式打开文件,并把文件指针移到文件尾 |
- with
在对文件进行写入操作之后,一定要牢记一个事情:file.close()
或者使用with方法,实现安全的关闭文件
```
with open("filename","a") as f
f.write()
```
### 1-30 不要红头文件(2)
- 文件的属性
所谓属性,就是能够通过一个文件对象得到的东西。
- 文件的内置函数
> dir(file)
1 . file.read()
将文件中的内容全部读取过来。返回一个字符串,而且是将文件中的内容全部读到内存中。故不要去读大个的文件
2 . file.readline()
一行一行地读取,每次返回一行,然后指针向下移动
3 . file.readlines()
将文件内容一次性读出来,存放在内存,返回的是list
4 . 读取大文件
```
for i in file:
print i
```