基础概念
- 常量:具备了字面的意义,代表着自己,不能改变它的值
- 数:在python中有4种类型的数,整数,长整数,浮点数,复数
- 2 是整数的例子
- 大一些的整数 是长整数
- 3.2 ,34.3E-4浮点数的例子,这里 34.3E-4 表示34.5 * 10四次方
- (-5+4j)和(2.3-4.6j)是复数的例子。
- 字符串: 是 字符的序列 。字符串基本上就是一组单词。
- 关于单引号'':指数指定字符串,所以的空格字符都保留
- 关于双引号"":与单引号的功能一模一样
- 关于三引号(''' or """): 指示多行字符
- 关于转义符 \ :把有特殊意义的字符串,转化为普通字符串。
\
用于最底部代表,换行的意思。 - 自然字符串:给字符串加上R或r,指示不被处理成特殊意义。例如
r"Newlines are indicated by \n"
。 - Unicode字符串:加上u处理,unicode文本,
u"This is a Unicode string."。
- 字符串是不可变的:
- 按字面意义级连字符串:两个链接的字符串放一起,例如,
'What\'s' 'your name?'
会被自动转为"What's your name?"
。
变量
命名变量,并存储信息到内存,可以进行修改操作,给予访问操作。
标识符的命名
标识符 是用来标识 某样东西 的名字。使用规则如下:
- 第一个字母必须有字母组成,或者一个下划线
_
- 非第一个字母可以使用,字母(a-zA-Z),数字(0-9),
-
下划线组合 - 区分对大小写
数据类型
变量处理不同类型的值,称数据类型。
对象
在python中,程序用到的东西(这里指 数,字符串,函数),都称之为对象
逻辑行与物理行
物理行是相对于自己看得见的一行,而逻辑行相对于python,是单个语句。为了让代码更易读,每个物理行,只用一个逻辑行,如果需要一个物理行多个逻辑行,可以使用;来标明
缩进
对于python首行的空白,称为缩进,是非常重要的,再每个缩进层次使用四个空格。
运算符与表达式
一个语句的表达式,可以分解为运算符跟操作数,运算符的功能是完成某件事,运算符需要数据来进行运算,数据被称为操作数,
- 运算优先级
运算符通常左有结合,相同优先级的运算符是从左向右计算,可以使用括号来颠倒他们的顺序
控制流
python的三种控制流
- if 语句
用来检查一个语句,如果条件为真,就执行if块,否则就执行另外一块语句else,
通过缩进的形式告知python每个语句分别属于哪个一个块。
if 语句也可以在里面再套入一个语句,称为嵌套的if语句。
elif 与else 部分是可以选的,if最简单的语句是:
if True: print ‘yes’
- while语句
主要是循环用,只要在一个条件为True的,while运行你再重复执行一次,
True 和 False 的布尔类型,分别代表为 1与0 这里的数值不是真正意义上的数值。
- for循环
for..in 也属于循环语句,递归方式,逐一使用列队的方式进行循环,
- break 语句
用来终止循环语句,不管条件是否有False 或者有没有把完成递归,都停止循环。
- continue语句
告知python当前剩余的循环块,继续下一轮循环。
Functions 函数
数据丢失。。。。。。。。。。。。
模块
模块用来调用,其他程序的函数,其他程序文件是包含了所有已经定义的函数跟变量文件,模块必须以.py结尾的文件扩展名。
使用import 告诉python 要使用这个模块
关于字节编译文件.pyc
为了让输入的模块更快一些,当第二次运行输入模块,已经把需要处理的模块处理完成,这样能加快处理速度。
The from … import statement,用于想要某个程序直接使用这个模块,这样能避免程序冲突,代码更容易阅读。
A module’s name
当模板被第一次imported 时,模块的主块就会被运行,如果只想程序本身被运行的时候运行主块,当被其他程序运行时是运行主模块。可以使用name模块
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
输出
$ python module_using_name.py
This program is being run by itself #程序本身被运行的时候只想主模块main
$ python
>>> import module_using_name
I am being imported from another module #而被其他模块运行的时候不运行主模块。
>>>
how it work
每个模块都有模块名定义name,如果它是main 就单独用户被运行。
Making Your Own Modules 定制自己的模块
每个python 程序都是一个模块,模块扩展名为.py。
def say_hi():
print 'Hi, this is mymodule speaking.'
__version__ = '0.1'
写一个小模块,定函数名say_hi
再写一段代码,来调用上面的函数
import mymodule
mymodule.say_hi()
print 'Version', mymodule.__version__
输出结果
$ python mymodule_demo.py
Hi, this is mymodule speaking.
Version 0.1
这里使用的是import 来导入mymodule所有的模块。
使用from...import 模块
from mymodule import say_hi, __version__
say_hi()
print 'Version', __version__
输出的结果是相同的,第二相比第一种更好,可以使用相同的变量名。方便阅读。
from mymodule import *
导入所有的模块。但尽量避免使用from mymodule import *
的方式。
- The dir function 关于dir()
可以使用内建的函数dir()来列出模块定义标识符,标识符有函数,类,和变量。
当给予dir()提供一个模块名,它会返回模块名的默认列表。如果不提供,它返回的是当前的模块中定义的名称列表。
- Packages
如何去定制程序的层级关系 。
Variables usually go inside functions. Functions and global variables usually go inside modules
如何创建一个世界各个国的结果目录
- <some folder present in the sys.path>/
- world/
- __init__.py
- asia/
- __init__.py
- india/
- __init__.py
- foo.py
- africa/
- __init__.py
- madagascar/
- __init__.py
- bar.py
- Summary
类似函数的重用功能,模块能够让你在别的程序重复使用它的功能,Packages用组织定制模块的层级关系。
Data Structures 数据结构
they are structures which can hold some data together. In other words, they are used to store a collection of related data.
用来存储收集相关数据。
python内置四个结构,
- list: 列表
- tuple: 元组
- dictionary: 字典
set :集
关于list
是一组有序的数据结构,可以在一个列表中存储一个序列的项目。
列表中的项目放于方括号[],项目之际用逗号隔开,列表中的项目是可以添加,删除搜索的,称之为:mutable data type
可变数据类型
- 关于tuple元组
元组与列表很像,不同的是,元组的字符串是不可以变的immutable,是通过括号来定义项目,逗号分割,通常用在需要安全的使用一组值,的用户函数或者语句里面。
- Dictionary 字典
dictionary 类似ddress-book ,key相对于名字,values相当于地址,key必须是唯一的不可变的字符串immutable,valuse是可变的mutable
key于valuse直接用分号隔开(:),而各个key跟valuse跟逗号隔开(,)
- Sequence 序列
序列的主要作用,索引操作符,和切片符号。membership tests and indexing operations
操作符可以从序列抓起一个特定的项目,切片符用来获取序列的一个切片或者一部分序列。
- Set
Sets are unordered collections of simple objects. These are used when the existence of an object in a collection is more important than the order or how many times it occurs.
- References
When you create an object and assign it to a variable, the variable only refers to the object and does not represent the object itself
- More About Strings