Advertisement

面试宝典三:python基础知识

阅读量:

目录

1 深copy 浅 copy

2 线程 进程

3 python def(*args,**kwargs)传参数:

4 python 类的定义和继承

5 匿名函数 :a= lambda x,y: (x*y+1,y**2)

6 global 全局局部变量定义使用

7 生成迭代器的iter() 和 next() 返回迭代器的下一个项目

8 yield(生成器是通过一个或多个yield表达式构成的函数)


1 深copy 浅 copy

2 线程 进程

如何快速掌握Python的线程与进程的编程代码_nlp_qidian的博客-博客

3 python def(*args,**kwargs)传参数:

传入元组,传入字典

复制代码
 def function(arg,*args,**kwargs):

    
     print(arg,args,kwargs)
    
     print(arg,[args],kwargs)
    
  
    
 function(6,7,8,9,a=1, b=2, c=3)
    
    
    
    
    代码解读

4 python 类的定义和继承

创建一个Animal类,该类的构造函数接收名称、分类和类型参数,均为字符串类型。接着创建一个Dog类,使其继承自Animal类,该类的构造函数接收名称、分类和颜色参数。

复制代码
 class Animal():# 定义类

    
      def __init__(self,name,category):
    
     self.name=name
    
     self.category=category 
    
  
    
 class Dog(Animal): # 继承类 
    
     def __init__(self,name,category,color) # 定义子类和父类继承的所有的参数 
    
         super().__init__(name,category) # 初始化父类的参数 要跟父类参数一一对应
    
         self.color=color 
    
     def print_color(self):# 定义一个函数 这个可以随便定义
    
         print('Dog color:',self.color)
    
  
    
 dog=Dog("狗","动物","黑色")
    
 dog.print_color()
    
    
    
    
    代码解读

2 树的定义:

复制代码
 class Node():

    
     def __init__(self, data,left= None , right= None ):  # 每次调用不用必须是三个值 可传可不传
    
     self._data = data
    
     self._left = left
    
     self._right = right
    
 tree =Node(1,Node(2,Node(3),Node(4)),Node(5,Node(6),Node(7)))# 实例化 树结构
    
 print(tree._left._data)
    
 print(tree._left)
    
 tree._left = Node(100)
    
 print(tree._data)
    
 print(tree._left)
    
 print(tree._right._data)
    
 print(tree._right._left)
    
    
    
    
    代码解读

3 定义单链表结构:

复制代码
 class Node():

    
     '''定义单链表节点类'''
    
     def __init__(self,data,next = None):
    
     '''data为数据项,next为下一节点的链接,初始化节点默认链接为None'''
    
     self.data = data
    
     self.next = next
    
 node1 = Node(3,Node(2,Node(1,None)))
    
 print(node1.data,node1.next.data ,node3.next.next.data)
    
    
    
    
    代码解读

4 定义类 实例化类所需要的参数和外部传参数

复制代码
 class aceshi():

    
     def __init__(self,sum):
    
         self.sum=sum
    
         
    
     def call(self,d):
    
         return self.sum*d
    
 a=aceshi(4).call(2)  # 实例化对象 
    
 print(a)
    
    
    
    
    代码解读

这里与在torch框架中构建模型不同,其中,forward函数是构建模型的一个固定方式,与通过普通类的实例化并传递参数的方式来构建模型不同。

5 匿名函数 :a= lambda x,y: (x*y+1,y**2)

复制代码
 a= lambda x,y: (x*y+1,y**2)

    
 #    输入变量:  输入的变量进行什么操作
    
 print(a(3,2))
    
  
    
 # 结果: 
    
 (7, 4)
    
    
    
    
    代码解读

6 global 全局局部变量定义使用

复制代码
 import threading

    
 def fun():
    
     a.append(1)
    
     a.append(1)
    
 def action():
    
     global a
    
     a = []
    
     fun()
    
     print(a)
    
     a=0
    
     return a
    
  
    
 try:
    
     print("a",a)
    
     # 这个a是函数 action中定义的函数内部的全局变量 所以在这里打印的时候 会报错。
    
 except:
    
     print(0)
    
  
    
 a=action()
    
 print(a)
    
    
    
    
    代码解读

7 生成迭代器的iter() 和 next() 返回迭代器的下一个项目

通过iter()函数,可以将某个列表等转换为一个可迭代的对象:
通过next()函数,可以依次输出可迭代对象的每一个值:

迭代机制是Python最为强大的功能之一,是实现集合元素遍历的一种方式。迭代器是一个能够记住位置信息的对象。迭代器对象从集合的起始位置开始遍历,直到所有元素都被完整遍历完毕。迭代器的遍历方向是单向的,不会倒退。迭代器两大核心功能是iter()和next()方法。字符串、列表或元组均可作为生成迭代器对象的基础。

复制代码
 # 列表生成式

    
 # next() 返回迭代器的下一个项目。
    
 # next() 函数要和生成迭代器的 iter() 函数一起使用。
    
 L = [x for x in range(5)]
    
 G = iter(L)# G就是一个生成器,也是一个迭代器,迭代器也是可迭代对象,所以这个G也可以说是可迭代对象
    
 print(next(G))
    
 print(next(G))
    
 print(next(G))
    
 print(next(G))
    
 print(next(G))
    
    
    
    
    代码解读

8 yield(生成器是通过一个或多个yield表达式构成的函数)

生成器函数通过一个或多个yield表达式来实现,每一个生成器函数都是一个迭代器(但迭代器不一定是生成器函数)。

复制代码
 def count1(n):

    
     while n > 0:
    
     print('before yield')
    
     yield n
    
     n -= 1
    
     print('after yield')
    
 g = count1(5)
    
 print(next(g))
    
 print("*"*20)
    
 print(next(g))
    
 print("*"*20)
    
 print(g.send(None))
    
 print("*"*20)
    
 print(next(g))
    
    
    
    
    代码解读

全部评论 (0)

还没有任何评论哟~