首页 > 其他分享 >面试4.13

面试4.13

时间:2023-04-14 17:01:59浏览次数:38  
标签:__ 4.13 函数 迭代 生成器 Django 面试 信号

1 什么是迭代器,生成器,装饰器
2 django的信号用过吗?如何用,干过什么
3 Dockerfile用过吗?常永命令有哪些
1 什么是迭代器,生成器,装饰器
迭代器(Iterator)是一个对象,它可以迭代一组值,也就是逐个访问一个集合中的元素,而无需知道集合的内部结构。Python 中的迭代器可以通过 iter() 和 next() 函数实现。其中,iter() 函数返回一个迭代器对象,而 next() 函数用于逐个返回迭代器的元素.

'''
迭代:不依赖于索引取值的方式,我们不需要关注它的位置,只要能够一个一个的取值,他就称之为迭代(语句中含有for循环,或者函数中含有next())

可迭代对象:可以迭代的Python中的对象称之为可迭代对象

迭代器:可迭代对象调用__iter__,就得到了迭代器,迭代器有__iter__和__next__方法

自定义迭代器:自己写一个类,类中重写__iter__和__next__方法,这个类的对象就是迭代器
'''

生成器(Generator)是一种特殊的迭代器,它可以在迭代过程中动态生成数据。Python 中的生成器可以通过函数和生成器表达式创建。函数生成器使用 yield 关键字来生成数据,并且每次调用 yield 语句时,函数的状态都会被保存,以便下次迭代时可以继续执行。

'''
生成器的本质就是迭代器
	函数中只要有关键字yield,这个函数被调用函数加括号,它就变成了生成器
	生成器表达式也可以做成生成器,(i+1 for i in [1,2,3])
	我们常用的for i in range(10)这种,就是典型的生成器
'''

装饰器(Decorator)是一种语法糖,它可以用于修改或增强函数或类的功能。装饰器本身是一个函数或类,它可以接受一个函数或类作为参数,并返回一个新的函数或类。在不修改函数或类定义的情况下,动态地增加、删除或修改其行为。装饰器可以使代码更加简洁、易于维护,并且可以避免重复代码。

'''
装饰器:本身就是一个闭包函数,作用是在不改变被装饰对象源代码和调用方式的基础上,为它加入新功能
	flask的路由就是基于装饰器
	Django的信号也可以用装饰器方式注册
	django中局部取出csrf认证
    为接口记录访问日志
    request

'''
2 django的信号用过吗?如何用,干过什么
Django 的信号是一种观察者模式的实现,它允许一个应用程序中的组件在另一个组件发生某些操作时获得通知。在 Django 中,信号通常被用于在某些事件发生时触发一些逻辑,比如当一个模型被保存时自动更新缓存,当一个用户注册成功时自动发送欢迎邮件等等。

使用 Django 的信号需要进行以下步骤:
'''1.导入需要的信号和信号处理函数。
2.定义信号处理函数,该函数通常包含一个 sender 参数和一些其他参数,用于处理信号触发时的逻辑。
3.注册信号处理函数,可以使用 @receiver 装饰器将信号处理函数注册到信号上。在装饰器中指定信号和可选的发送器(sender),以便只有在特定模型的实例被触发时才会调用信号处理函数。'''

image

在上面的代码中,我们定义了一个名为 my_handler 的信号处理函数,它会在 MyModel 模型实例保存时被调用。@receiver 装饰器将 my_handler 函数注册到 post_save 信号上,并指定了信号的发送器为 MyModel。

除了 post_save 信号之外,Django 还提供了许多其他的信号,如 pre_save、post_delete、pre_delete 等等,您可以根据需要选择合适的信号来完成您的业务需求。
Django的用过的地方:
	Django提供的一种通知机制,他是设计模式观察者模式(发布订阅),在发生某种变化的时候,通知某个函数执行。
内置信号:内置信号用起来很简单,只需要写个函数,跟内置信号绑定,当信号被触发,函数就会执行
    绑定信号在Django中的方法------>@receiver   connect连接
自定义信号:1.定义信号  2.触发信号--->信号.send
3 Dockerfile用过吗?常永命令有哪些
Dockerfile 是 Docker 的镜像构建文件,它是一个文本文件,包含一系列构建镜像所需的命令和参数。使用 Dockerfile 可以自动化地构建 Docker 镜像,从而简化了镜像构建的流程。

Dockerfile 中常用的命令包括:

FROM:指定基础镜像,用于构建新镜像。
RUN:在容器内执行命令,用于安装软件、配置环境等操作。
COPY / ADD:将本地文件或目录复制到容器内。
WORKDIR:设置工作目录,后续的命令会在该目录下执行。
EXPOSE:声明容器内部使用的端口号。
CMD / ENTRYPOINT:设置容器启动后执行的命令或脚本。

标签:__,4.13,函数,迭代,生成器,Django,面试,信号
From: https://www.cnblogs.com/zx0524/p/17318840.html

相关文章

  • AWS面试宝典
    AWS组件有哪些:简单存储服务: S3是存储文件的aws服务。它是基于对象的存储,即可以存储图像、word文件、pdf文件等。S3中可以存储的文件大小从0Bytes到5TB。它是一种无限的存储介质,即可以随心所欲地存储数据。S3包含一个存储文件的存储桶。存储桶就像存储文件的文件夹。......
  • CSS面试题
    一、4.14基础1.1、隐藏元素的方法有哪些●display:none:渲染树不会包含该渲染对象,因此该元素不会在页面中占据位置,也不会响应绑定的监听事件。●visibility:hidden:元素在页面中仍占据空间,但是不会响应绑定的监听事件。●opacity:0:将元素的透明度设置为0,以此来实现元素......
  • 从ajax到跨域引发的相关面试题总结
    转载请注明出处:1.ajax异步和同步的区别Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新。同步和异步是指客户端发送请求时,主线程是否会阻塞等待服务器的响应返回。同步请求在发送请......
  • 面试
    jvm方法区(永久代/元空间)类信息静态变量堆实例对象本地法栈c语言方法虚拟机栈每个线程会创建一个虚拟机栈每个方法会创建一个栈帧每个栈帧包含程序计数器程序执行到哪一行老年代2/3新生代1/3伊甸区8/10from1/10to1/10引用计数法和可达性分析算法强引用、软......
  • 4.13今日总结
    今天学习了PyQt5的水平排列与垂直排列,学完就tm明年了fromPyQt5.QtCoreimportQtfromPyQt5.QtGuiimportQFontfromPyQt5.QtWidgetsimportQApplication,QWidget,QLabel,QLineEdit,QPushButton,QVBoxLayout,QHBoxLayout,\QMessageBox,QGridLayoutclassLo......
  • 2023.4.13
    1//c++语言程序设计第二章习题2//2-293//在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。4#include<iostream>5usingnamespacestd;6#include<ctime>7intmain()8{9srand((unsignedin......
  • 4.13
    在这个神经网络(图3.1.2)对应的3个节点,首先计算第一层网络中的各个节点相关的数......
  • 2023.4.13软工日报
    今天熟悉了熟悉vue脚手架和vue路由和部署。并且把那个python报告交了,是时候学一学python,很强大python。但是还是以建民的作业为主,偶尔看看python视频。了解springboot写后端和vue写前端。前后分离很不舒服。还是做全栈吧。可以挣多一些。......
  • 2023.04.13 定时测试随笔 T1
    T1P1133教主的花园传送门:洛谷P1133这是一道DP的题,定义状态\(dp[i][j][k]\)表示前\(i\)棵树所能达到的最大价值,且第\(i\)棵树为第\(j\)种树,\(j=0\)高度是\(10\),\(j=1\)高度是\(20\),\(j=2\)高度为\(30\),如果\(k=0\)它的高度小于相邻两颗,\(k=1\)则......
  • 4.13每日总结
     表格结构化重建,需要使用一些技术工具和方法,例如:1.数据清洗:对表格中的数据进行清洗、去重、格式化等操作,确保数据的准确性和一致性。2.数据标准化:对表格中的数据进行标准化处理,使其符合特定的数据模型或规范。3.数据抽取:使用自然语言处理、OCR等技术将非结构化数据(如P......