基础概念

  • 常量:具备了字面的意义,代表着自己,不能改变它的值
  • 数:在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?"

变量

命名变量,并存储信息到内存,可以进行修改操作,给予访问操作。

标识符的命名

标识符 是用来标识 某样东西 的名字。使用规则如下:

  1. 第一个字母必须有字母组成,或者一个下划线_
  2. 非第一个字母可以使用,字母(a-zA-Z),数字(0-9),- 下划线组合
  3. 区分对大小写

数据类型

变量处理不同类型的值,称数据类型。

对象

在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内置四个结构,

  1. list: 列表
  2. tuple: 元组
  3. dictionary: 字典
  4. set :集

  5. 关于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