26
2017
10

python 元类理解

python 元类理解

1、https://stackoverflow.com/questions/46502885/why-does-using-super-in-a-call-method-on-a-metaclass-raise-typeerror

23
2017
10

python 学习笔记之需要注意的事项

1、在编写程序的时候,千万不要把实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。


21
2017
10

python map 学习笔记

map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的 Iterator 返回。注意返回的是 Iterator 这是一个迭代器,就是可以被 next()函数调用并不断返回下一个值的对象。看下面代码

21
2017
10

python中 __name__及__main()__的妙处

#hello.py
def sayHello():
    str="hello"
    print(str);

if __name__ == "__main__":
    print ('This is main of module "hello.py"')
    sayHello()

python作为一种脚本语言,我们用python写的各个module都可以包含以上那么一个累死c中的main函数,只不过python中的这种__main__与c中有一些区别,主要体现在:

20
2017
10

python 的生成器(generator)

要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。看下面的例子,杨辉三角:

C:\Users>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def yanghui():
...     L=[1]
...     while True:
...         yield L
...         L.append(0)
...         L = [L[i-1] + L[i] for i in range(len(L))]  # i 是从 0 开始,range 返回的范围是 0 ... len(L) - 1
...
>>> n = 0
>>> for t in yanghui():
...     print(t)
...     n+=1
...     if n == 10:
...         break
...
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
>>>

因为 generator 和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而 generator 的函数,在每次调用next()的时候执行,遇到 yield 语句返回,再次执行时从上次返回的 yield 语句处继续执行。所以 yanghui() 一遇到 yield 就暂停,让后输出 L 。再次循环调用他会继续执行下面的语句,再次循环 到 yield 然后输出 L, 此时的 L 是经过计算的 下一行列表。

20
2017
10

python中的函数的参数 - 学习笔记

可变参数

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

我们以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……。

要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,这样,函数可以定义如下: