python学习,关于底层实现

bool

  1. python可对任意类型取布尔值
  2. 猜测:内存全0时为False
  3. 比较运算结果为bool

逻辑运算

  1. 逻辑运算左右操作数均为bool,如不是需要进行转化,即先将操作数转化为bool再逻辑运算

delete del del()

  1. c++中delete析构数据
  2. python中del删引用变量,我理解的是把变量从符号表中去掉。当数据引用数为0时,该数据内存无效。
  3. python中del()析构对象。

解释性语言

  1. python与java类似,都是C编写的解释器或虚拟机执行
  2. python标准库是C实现的。

tuple

  • 括号不是必须的,逗号是必须的

变量理解

  1. 变量理解为引用,可以改变指向

可变数据类型 不可变数据类型

  1. tuple是不可变数据类型,指针指向的第一层不可变
  2. set是可变数据类型,但是set是不可变数据类型的序列,第一层可变,第二层不可变

位运算符 逻辑运算符

  1. 位运算符为&
  2. 逻辑运算符,python中为and,c中为&&,逻辑运算结果为bool

pass关键字代替C语言中空语句块

  • pass == {}

生成器

  1. reversed()
  2. (x for x in range())

id()

  • 获得指向数据的地址

python中,没有变量,只有指针

  1. python把一切数据,一切的一切都看作对象,在python中,没有变量,只有指针,要说变量,也是指针变量。
  2. 对象都是在堆上存放的

None 是 NoneType 数据类型的唯一值

  1. 不能再创建其它 NoneType 类型的变量,但是可以将 None 赋值给任何变量
  2. 对于所有没有 return 语句的函数定义,Python 都会在末尾加上 return None,使用不带值的 return 语句(也就是只有 return 关键字本身),那么就返回 None。

python所有都是代码区,一切皆对象

  • python所有都是代码区,一切皆对象

函数对象

元类

对象 字典

  1. 对象能产生字典dict dir
  2. 作用域可生成字典。globals() locals()产生作用域字典

exec() eval()

  1. 执行结果,产生的变量加入local字典
  2. local字典可用于type(),这是类声明的原理。
    可用于module()参数,这是import的原理。

with

context理解

  1. 每一段程序都有很多外部变量。只有像Add这种简单的函数才是没有外部变量的。一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行。你为了使他们运行,就要给所有的外部变量一个一个写一些值进去。这些值的集合就叫上下文。
  2. 譬如说在C++的lambda表达是里面,[写在这里的就是上下文](int a, int b){ … }。

tensor op

  1. Nodes in the graph are called ops (short for operations).
    An op takes zero or more Tensors, performs some computation, and produces zero or more Tensors.
    类比:一个神经元有多个输入,一个或者多个输出。这里的OP可以看作神经元,tensor可以看作输入的数据。
  2. In TensorFlow terminology, a Tensor is a typed multi-dimensional array.
    For example, you can represent a mini-batch of images as a 4-D array of floating point numbers with dimensions [batch, height, width,channels].
    tensor是一个数组,每个数组元素是多维的,其实就是一个矩阵。
  3. 转载

Anaconda、Miniconda、Conda、pip的相互关系

迭代器 可迭代对象 for循环

  1. 理解迭代器和可迭代对象
  2. 迭代器就是能被next()调用得到下一次迭代值的对象,迭代器不直接保存迭代的序列值,而保存得到下一次迭代值的算法。可迭代对象就是能被iter()方法调用得到迭代器的对象,能进行for循环的必须是可迭代对象
  3. 迭代器或迭代器对象:实现了__next__()魔法方法的(类所实例化的)对象,该方法返回迭代器下一个值(保存得到下一个迭代值的算法),一般也实现了__iter__()非必须。可迭代对象:实现了__iter__()魔法方法的(类所实例化的)对象,该方法返回一个迭代器对象
  4. for循环的底层实现原理:
    for i in 可迭代对象:
    循环体
    
    实质是调用内建方法iter()得到迭代器对象,然后通过每次调用next(迭代器)得到i的迭代值。例如以下的代码:
    for i in x:
    	print(i)
    #完全可以改写为:
    iterator = iter(x)
    while True:
    	i = next(iterator)
    	print(i)
    
  5. for循环只能对可迭代对象进行,可迭代对象又需要迭代器的实现
  6. 实际上,为了简化和方便,完全可以在一个类中同时实现__iter__()和__next__()方法,也即该类实例化的对象既是一个可迭代对象也是迭代器,代码如下:
    class Fib:
    	def __init__():
        	self.a = 1
        	self.b = 2     sele.current = self.a
    	def __iter__(self):
            return self
    	def __next__():     
    		if(self.num-1>=0):
    			self.num = self.num-1
    			self.current = self.a
    			self.a = self.b
    			self.b = self.b+self.current   #以上两步赋值操作可省略中间变量直接写为self.a,self.b = self.b,self.a+self,b        
    			return self.curent      
    		else: 
    			raise StopIteration
    

迭代器 可迭代对象 生成器

  1. 生成器是一种迭代器
  2. Python中iteration(迭代)、iterator(迭代器)、generator(生成器)等相关概念的理解

cpython源码

1.教你阅读 Cpython 的源码(一)

bound method && function

  1. type(类中绑定的方法) = bound method
    type(未绑定的方法) = function
    class A:
    def b(self):
        pass
    @classmethod
    def c(cls):
        print('c')
        pass
    @staticmethod
    def d():
        pass
    a = A()
    
    print(A)
    print(a)
    
    print(A.b)
    print(a.b)
    
    print(A.c)
    print(a.c)
    
    print(A.d)
    print(a.d)
    
    '''
    <class '__main__.A'>
    <__main__.A object at 0x000001A94D491D08>
    <function A.b at 0x000001A94D499438>
    <bound method A.b of <__main__.A object at 0x000001A94D491D08>>
    <bound method A.c of <class '__main__.A'>>
    <bound method A.c of <class '__main__.A'>>
    <function A.d at 0x000001A94D4991F8>
    <function A.d at 0x000001A94D4991F8>
    '''
    
  2. 类实例化对象拥有全部类方法,实例方法须经绑定处理过

可调用对象

  1. Python中有七种可调用对象
  2. 暂时分开理解可调用对象和函数
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页