python基础知识点(精心整理),python 知识点
1.实用Python知识点1。一行代码实现了1-100的和,num=sum(range(1,101))
打印(编号)2。如何修改函数中的全局变量?使用Global在函数中声明并修改全局变量。
a=5
定义f1():
全球a
a=6
f1()
打印(a)3。清单8 Python标准库os:提供与操作系统相关的函数
Sys:通常用于命令行参数。
回复:常规匹配
随机:生成随机数
数学:数学运算
日期时间:处理日期时间
日志记录:日志处理模块
Json:数据序列化和反序列化4。func中的*args,**kwargs(* args,* * kwargs)是什么意思?*args和**kwargs用于函数定义,可以向函数传递不确定数量的参数。
*args:用于向函数发送可变数量的非键值对参数列表
**kwargs:允许将不确定长度的键值对作为参数传递给函数。5.用自己的话解释一下哪种语言可以使用decorators?作为参数传递的语言,可以使用装饰器。
6.Python内置的数据类型有哪些?integer:int Boolean:bool string:string list:list tuple:tuple dictionary:dict set:set 7。简介面向对象中的__new__和__init__是初始化方法。创建对象后,默认情况下会调用它,并且它可以接收参数。
__new__必须至少有一个表示当前类的参数cls。该参数在实例化__new__时被Python解释器自动识别,必须有返回值,实现__new__时要特别注意。可以返回父类的实例(通过super(当前类名,CLS)) _ _ new _或者直接从object的_ _ new _派生的实例__init__有一个参数self,就是这个__new__返回的实例。_ init _ _可以在__new__的基础上完成一些其他的初始化动作,而__init__不需要返回值。如果__new__创建了当前类的实例,那么实际创建并返回的是其他类的实例。实际上不会调用当前类的__init__函数,也不会调用其他类的__init__函数。8.用打开文件对我们有什么帮助?打开文件时,读写过程中可能会出现一些异常情况。如果按照常规的f.open写方法,需要尝试,除了,最后,进行异常判断,最后,不管文件发生什么情况,都要执行finally f.close()关闭文件。
用方法帮助我们实现最终的接近。
9.Python实现了列表去重的方法来打乱列表元素的顺序:可以用set去重。
l1=[1,4,9,11,19,5,9,11]
a=设置(l1)
l1=列表(a)
Print(l1)保持原始列表元素的顺序。
https://www.jianshu.com/p/dfba1e03e50f
l1=[1,4,9,11,19,5,9,11]
l1=排序(set(l1),key=l1.index)打印(l1)
10.Python2和Python3的范围(100)之差。Python2返回一个列表;Python3返回迭代器以节省内存
1.列出[1,2,3,4,5]。请用map()函数输出[1,4,9,16,25],用列表求导提取大于10的数。最终输出[16,25] map()将根据提供的函数映射指定的序列。
第一个参数函数用参数序列中的每个元素调用函数function,并返回一个包含每个函数返回值的新列表。
l1=[1,2,3,4,5]
定义f1(x):
返回x ** 2
res1=映射(f1,l1)
res=[i for i in res1 if i 10]
Print(res)12、python2和python3:不同的类别
python2
python3
打印功能
您可以使用括号或空格来分隔打印的内容。
例如:打印“hello world!”
您必须用括号将打印内容括起来。
例如:print(hello world!)
距离函数
Range(1,10)返回列表
Range(1,10)返回迭代器以节省内存。
编码
Ascii编码
Utf-8编码
顺序
Unicode字符串序列和字符串字节序列。
Str表示字符串序列,byte表示字节序列。
中文显示
要正常显示中文,需要引入编码语句。
不,中文可以正常显示
功能输入
函数的作用是
输入()函数
13.列出python中的可变数据类型和不可变数据类型:数值型、字符串型string和tuple tuple(变量的值是不允许改变的,如果改变了变量的值,就相当于创建了一个新的对象)
变量数据类型:list list和dictionary dict(变量的值是允许改变的,即如果对变量进行append和=这样的操作,只是改变了变量的值,而不是创建一个新的对象变量,变量引用的地址不会改变,但对于相同值但不同值的对象,内存中会有不同的对象,即每个对象都有自己的地址)
14.列表合并的结果。添加两个列表。扩展15。提高python运行效率的方法。使用生成器,因为它可以节省大量代码优化的内存周期,并避免代码的过度重复。执行核心模块使用Cython PyPy等。以提供效率。用多进程、多线程、协同倍数if elif条件来判断,可以把最有可能先发生的条件放在前面写。这样可以减少程序判断的次数,提高效率。16.简述cookie和session的区别。session在服务器端,cookie在客户端(浏览器)会话中的操作依赖于session id,Session id存在于cookie中,也就是说,如果浏览器禁用了cookie,同时,会话也会失效。存储会话时,键与Cookie中的sessionid相同,值是开发人员设置的键-值对信息。它是base64编码的,开发人员设置的cookie安全性比会话差。17.谈谈python的GILGIL是python的全局解释器锁。如果同一个进程中有多个线程在运行,那么其中一个线程在运行python程序的时候会占用python解释器(加一个锁,就是GIL),这样进程中的其他线程就不能运行了,其他线程也不能运行,直到这个线程运行了。如果一个线程在运行过程中遇到耗时的操作,解释器锁会被解锁,其他线程会运行。因此,在多线程中,线程仍然按顺序运行,而不是同时运行。
在多进程中,每个进程都可以被系统分配资源,相当于每个进程都有一个python解释器。所以多进程可以实现多个进程同时运行,但缺点是进程的系统资源开销高。
18.简述多线程多进程进程:操作系统进行资源分配和调度的基本单位。多个进程相互独立,稳定性好。如果一个进程崩溃,不会影响到其他进程,但是进程消耗大量资源,打开的进程数量有限。线程:CPU进行资源分配和调度的基本单位。线程是进程的一部分,比进程小,可以独立运行。一个进程下的多个线程可以共享该进程的所有资源。如果IO操作比较密集,可以用多线程高效运行。缺点是如果一个线程崩溃,会导致进程崩溃。应用:IO密集型使用多线程,当用户输入和睡眠时,可以切换到其他线程执行,减少等待时间。CPU密集型使用多个进程,因为如果IO操作少,使用多线程,因为线程共享一个全局解释器锁,当前运行的线程会占用GIL,而其他线程没有GIL。不能充分利用多核CPU 19的优势,IOError,AttributeError,ImportError,IndentationError,IndexError,KeyError,SyntaxError,名字代表什么异常?IOError:输入/输出异常属性错误:试图访问对象没有的属性。ImportError:无法引入模块或包,基本上是路径问题IndentationError:语法错误,代码没有正确对齐。IndexError:下标索引超出了序列边界。KeyError:试图访问字典中不存在的键。语法错误:Python代码逻辑语法错误,无法执行名称错误:使用尚未分配给对象的变量。20.python中的copy和deepcopy区分并复制不可变的数据类型。Copy和deepcopy是同一个地址。当浅拷贝的值为不可变对象(数值、字符串、元组)时,对象的id值与浅拷贝的原始值相同。
复制的值是一个可变对象(列表和字典)。浅复制有两种情况:第一种情况:被复制对象中没有复杂的子对象,原值的变化不会影响浅复制值,浅复制值的变化不会影响原值。原始值的id值与浅拷贝的原始值不同。第二种情况:复制的对象中有复杂的子对象(比如一个列表中的子元素就是一个列表)。更改原始值中复杂子对象的值会影响浅复制值。Deepcopy deepcopy:完全复制独立,包括内部列表和字典21。列举几种神奇的方法,简单介绍一下它们的用途__init__:对象初始化方法__new__:创建对象时执行的方法。单列模式会使用__str__:打印对象时,只需要自己定义__str__(self)方法。然后这个方法__del__中的数据返回会被打印出来:删除对象22执行的方法,字符串s=not 404 found 11.1张三12 in Shanghai,99 ,每个单词中间加一个空格,过滤掉有规律的英文和数字,最后输出“张三in Shanghai”import re。
S=不是404发现11.1张三12在上海,99
l=re.split([\d .\d (a-zA-Z) ],s)
p=[x.strip() for x in l if x.strip()!=]
打印()。join(p))23。找出列表中所有的奇数,用a=[1,3,5,7,9,10,11,12] a=[1,3,5,7,9,10,11,12]构造一个新的列表
res=[i for i in a if i%2==1]
Print(res)24、迭代器和生成器迭代器迭代是Python最强大的功能之一,是一种访问集合元素的方式。迭代器是一个可以记住遍历位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有元素都被访问。迭代器只能向前,不能向后。
迭代器有iter基本方法:iterator()和next()
可以使用正则for语句遍历迭代器对象;您也可以使用next()函数。
对于语句实现
l1=[1,2,3,4]
it=iter(l1)
因为我在里面:
Print(i,end=\n )是使用next()函数实现的。
导入系统
l1=[1,2,3,4]
it=iter(l1)
虽然正确:
尝试:
打印(下一页)
除了StopIteration:
Sys.exit()使用类作为迭代器需要在类中实现两个方法:__inter__()和__next__()
__inter__()方法返回一个特殊的迭代对象,该对象实现__next__()方法,并用StopIteration通过异常来标识迭代的完成。
__next__()返回迭代对象。
创建一个返回数字的迭代器,初始值为1,增量为1。
MyNumbers()类:
def __iter__(self):
self.a=1
回归自我
def __next__(自己):
x=自我
self.a=1
返回x
myclass=MyNumbers()
myiter=iter(myclass)
打印(下一个(myiter))
打印(下一个(myiter))
打印(下一个(myiter))
打印(next(myiter))查看代码
StopIteration异常用于标识迭代的完成,防止无限循环的发生。在__next__()方法中,可以将StopIteration异常设置为在完成指定数量的循环以结束迭代后触发。
MyNumbers()类:
def __iter__(self):
self.a=1
回归自我
def __next__(自己):
如果self.a=20:
x=自我
self.a=1
返回x
否则:
提升停止迭代
myclass=MyNumbers()
myiter=iter(myclass)
对我来说:
打印(I)查看代码
在Python中,使用yield函数的生成器就变成了一个生成器。
与普通函数不同,生成器是返回迭代器的函数,只能用于迭代运算。理解生成器是迭代器更简单。
在调用生成器运行的过程中,函数每次遇到yield都会暂停并保存当前所有运行信息,返回yield的值,下次执行next()方法时从当前位置继续运行。
调用一个生成器函数,它返回一个迭代器对象。
25.请将[i for i in range(5)]更改为generator。生成是一种特殊的迭代器。
表达式[]可以改为()成为生成器函数。当返回值出现时,它就变成了一个生成器而不是一个函数。a=(i for i in range(5))
Print(type(a))26,info=[-5,8,0,4,9,-4,-20,-2,8,2,-4]使用lambda函数从小到大排序。
信息=[-5,8,0,4,9,-4,-20,-2,8,2,-4]
a=已排序(info,key=lambda x:x)
打印(a)正数从小到大,负数从大到小
信息=[-5,8,0,4,9,-4,-20,-2,8,2,-4]
a=已排序(info,key=lambda x:(x 0,abs(x)))
打印(a)27。列表有很多层。要取出所有元素3354,请设置结束条件。使用递归isinstance()函数确定对象是否为已知类型,类似于type()。
isinstance()和type()之间的区别:
不管继承与否,Type()都不会将子类视为父类类型。
Isinstance()会把子类当作父类类型,并考虑继承关系。
如果要判断两个类型是否相同,建议使用isinstance()。
l=[1,2,列表,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15,[16,[17,]],19]]]]]
l=[1,2,列表,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15,[16,[17,]],19]]]]]
定义搜索(左):
对于l中的项目:
#如果类型(项目)是列表:
is instance(item,list): # #确定数据类型是否为列表。
搜索(项目)
否则:
打印(项目)
搜索(左)
转载请联系作者取得授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。