-------------PHP-----------------------

数据类型:

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), 

----------------python-----------------------

Number(数字)、String(字符串)、Tuple(元组)、List(列表)、Dictionary(字典)、Set(集合)。

1)list

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]

 跟php,key为自增长的数组差不多

2)元组

tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )

 内容不能改变

3)Set集合

student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}

 

4)Dictionary(字典)

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}

 跟php,key为非自增长数组差不多,括号不一样,一个是[],另一个是{}

迭代器:iter() 和 next()

>>>list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2

 

生成器:使用了 yield 的函数被称为生成器

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。 

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

#!/usr/bin/python3
 
import sys
 
def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

 执行以上程序,输出结果如下:

0 1 1 2 3 5 8 13 21 34 55

  

使用迭代器一个显而易见的好处就是:每次只从对象中读取一条数据,不会造成内存的过大开销。

/* 把文件一次加载到内存中,然后逐行打印。当文件很大时,这个方法的内存开销就很大了 */
for line in open("test.txt").readlines():
    print line

/* 这是最简单也是运行速度最快的写法,他并没显式的读取文件,而是利用迭代器每次读取下一行 */
for line in open("test.txt"):   #use file iterators
    print line

 

线程:threading

多进程:multiprocessing

····················C语言·······················

1、是编绎型语言

2、数据结构:整型(int)、浮点型(float)、字符串(cha)、枚举(enum)、void类型、指针类型、数组类型、结构类型、共用体类型

C 中的变量定义

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

 数组 

double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

double是指双精度浮点值。

指针

指针指向内存中的一个地址

type *var-name;

例如:

int *ip; /* 一个整型的指针 */

double *dp; /* 一个 double 型的指针 */

float *fp; /* 一个浮点型的指针 */

char *ch; /* 一个字符型的指针 */

结构体

C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项

例:

struct Books {

char title[50];

char author[50];

char subject[100];

int book_id;

} book;

共用体:

共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

例:

union Data {

int i;

float f;

char str[20];

} data;

共用体占用的内存应足够存储共用体中最大的成员。在上面的实例中,Data 将占用 20 个字节的内存空间,

关键字  typedef

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE

typedef unsigned char BYTE;

在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写,例如:

BYTE  b1, b2;

  

可变参数

int main()
{
   func(2, 2, 3);
   func(3, 2, 3, 4);
}

 

省略号之前的那个参数是 int,代表了要传递的可变参数的总数。

内存管理:

C语言可以动态分配内存