实际应用中遇到多种数据类型混在一起的情况可使用JSON序列化处理: json.dumps() 函数,接受 Python 的基本数据类型,然后将其序列化为 string。...返回的函数通常赋予一个变量,这个变量可以在后面被继续执行调用。 不定长参数 当参数个数不确定时使用不定长参数,有两种类型分别为*args和**kwargs。...通过一个函数来改变某个变量的值,通常有两种方法:第一种直接将可变数据类型(比如列表,字典,集合)当作参数传入,直接在其上修改;第二种是创建一个新变量,来保存修改后的值,然后将其返回给原变量。...成员函数:是正常的类的函数,第一个参数必须是self;可通过此函数来实现查询或修改类的属性等功能。...如何规避GIL影响: CPU密集可以使用多进程+进程池 IO密集使用多线程/协程 将关键性能代码放到C中实现 为什么有了GIL还要关注线程安全:python中只有原子操作是可以保证线程安全的,即一个操作如果是一个字节码指令可以完成就是原子的
字典Dict Python内置了字典,使用key-value存储,具有极快的查找速度。和list相比,查找速度要高很多。 为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。...传值还是传引用 Python在参数传递时遇到的一个有趣的问题是:函数的传参是传值还是传引用?...yield就是将函数变成了一个生成器,函数执行过程中使用yield就好像是用yield将执行中断多次,每次中断都会通过yield返回当前的迭代值。 当数据量较大时,使用生成器的效率更高。...装饰器 函数是一个对象,函数对象也可以被赋值给变量,所以,通过变量也能调用该函数。在代码运行期间动态增加功能的方式,称为装饰器。使用Python的@语法,把装饰器置于函数的定义处。...也就是在Python中,可以动态的创建类,类也是对象,这就是使用关键字class时Python在幕后做的事情,这些都是通过元类实现的。 那么到底什么是元类呢?
,除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。...if lang is None: lang = [] lang.append('python') return lang 总结: 定义函数默认参数时,函数默认参数必须指向不变对象,建议使用...None,str 这些不可变对象处理 可变参数 可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。...#6 关键字参数 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。...在调用该函数时,可以只传入必选参数,也可以传入任意个数的关键字参数。
list) 映像类型: 字典(dict) 集合类型: 可变集合(set) 不可变集合(frozenset) python数据类型(按可变性划分) 可哈希的,不可变数据类型: 数字类型 不可变集合(frozenset...) 字符串(str) 元组(tuple) 可变数据类型: 字典(dict) 列表(list) 可变集合(set) python中引号的作用: ‘ ‘ “ “ ''' ''' 单引号和双引号基本没区别...私有方法 也是通过在内部定义一个公有的方法,该公有的方法调用该私有方法,在外部调用该公有的方法间接的访问该私有方法。 强制访问私有方法的办法是:对象调用这个类的私有方法。具体是: 对象名...._class__privateFunctionName() 私有字段 在类中定义了私有字段,外部是不能访问的,只能通过在内部定义函数访问这个私有字段,外部调用该函数间接的访问该私有字段。...也可以使用Value和Array 进程池:通过Pool创建多进程。
4.列出 Python 中可变数据类型和不可变数据类型,为什么? # 不可变数据类型:即数据被创建之后,数据的值将不再发生改变,有数值、字符、元祖类型。...另辟蹊径:方法总比困难多,在进行快速开发时,我们应该优先实现功能而不是拘泥于运行效率,所以遇到一些暂时不能解决的BUG可以考虑另外的实现方法。...是静态方法:不访问类属性和实例属性,通过类或实例调用,相当于一个普通函数。...Python内存池:内存池的概念就是预先在内存中申请一定数量的,大小相等 的内存块留作备用,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申请新的内存。...python中的内存管理机制——Pymalloc:python中的内存管理机制都有两套实现,一套是针对小对象,就是大小小于256bits时,pymalloc会在内存池中申请内存空间;当大于256bits
需要注意的是,当使用某个引用作为参数,传递给getrefcount()时,参数实际上创建了一个临时的引用。因此,getrefcount()所得到的结果,会比期望的多1。...内存池机制 Python的内存机制以金字塔行: -1,-2层主要由操作系统进行操作, 第0层是C中的malloc,free等内存分配和释放函数进行操作 第1层和第2层是内存池,有Python的接口函数...PyMem_Malloc函数实现,当对象小于256K时有该层直接分配内存 第3层是最上层,也就是我们对Python对象的直接操作 在 C 中如果频繁的调用 malloc 与 free 时,是会产生性能问题的...的大块内存 经由内存池登记的内存到最后还是会回收到内存池,并不会调用 C 的 free 释放掉,以便下次使用。...总结表格: 注意:可变指的是可变数据类型,比如:dic, list等;不可变指不可变数据类型,比如 数值,字符串,元组 参考:https://blog.csdn.net/Elon15/article/
Python给我最大的印象就是语法简洁,就像写伪代码一样,很多其他语言要用很多行才能实现的操作Python可能几行就搞定了,这让人摆脱了繁杂的语法而专注于问题本身,这也正是我为什么不太喜欢Java的原因之一...3.定义默认参数需要牢记:默认参数必须指向不变对象。否则第一次调用和第二次调用结果会不一样,因为可变的默认参数调用后改变了。 4.可变参数:传入的参数个数是可变的,可以是0个或多个。...这样可以使代码更简短,同时可对参数进行必要的检查。 6.通过多重继承,可使子类拥有多个父类的所有功能。 7.在类中__call__方法可使实例对象像函数那样直接调用,作用即是该方法定义的过程。...七、进程与线程 1.Python用mutiprocessing模块来实现多进程。 2.如果要大量创建子进程,可以使用进程池,示例如下: ?...要使用进程池需新建Pool对象,对Pool对象调用join()使等待池中所有子进程运行完毕,调用join()方法之前必须调用close(),且此后无法再新加子进程。
1、为什么学习Python? 人生苦短?人间不值得?想想自己的初心吧! 2、通过什么途径学习的Python?...a = [1,2,3]正常的列表 b = [(1),(2),(3)] 虽然列表的每个元素加上了括号,但是当括号内只有一个元素并且没有逗号时,其数据类型是元素本身的数据类型 b = [(1,),(2,...Python的类可以继承多个类,那么其寻找类方法的方式有两种: 当类是经典类时(主要在python2版本中的没有主动继承object的类),多继承情况下,会按照深度优先方式查找 当类是新式类时(python3...静态方法:是既不是用类中的属性又不使用对象中的属性,由类或者对象调用的方法,依赖python装饰器@staticmethod来实现 类方法:只使用类中的静态变量,一般都是由类调用,依赖python装饰器...对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。 二、垃圾回收 1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。
os:提供了不少与操作系统相关联的函数 sys: 通常用于命令行参数 re: 正则匹配 math: 数学运算 datetime:处理日期时间 Python的可变数据类型和不可变数据类型分别有?...dict 的 key 值进行排序,最后返回的结果是一个对 key 值排序好的list; sorted 对 tuple, dict 依然有效,而 sort 不行; 解释 Python 中的可变类型和不可变类型...1.Python中的可变类型有list,dict;不可变类型有string,number,tuple. 2.当进行修改操作时,可变类型传递的是内存中的地址,也就是说,直接修改内存中的值,并没有开辟新的内存...类方法:是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为 cls ,表示类对象,类对象和实例对象都可调用 类实例方法:是类实例化对象的方法,只能由实例对象调用,形参为...可以通过加入默认参数来避免退化 一个函数只做一件事,就要尽量保证抽象层级的一致性,所有语句尽量在一个粒度上。若在一个函数中处理多件事,不利于代码的重用; 请阐述同步,异步,阻塞,非阻塞的概念?
Python中的函数在其他语言中也叫做过程或子例程,那么这些被包装起来的语句通过一个函数名称来调用。 有了函数,我们可以在很大程度上减少复制及粘贴代码的次数了(相信很多人在刚开始时都有这样的体验)。...除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。 1. 默认参数 默认参数使得API简洁,但不失灵活性。...当一个参数有默认值时,调用时如果不传递此参数时,会使用默认值。...lst 通常来说,当默认参数是可变的时候,需要特别注意作用域的问题,我们需要上述的技巧(不可变的数据类型是值传递,可变的数据类型是引用传递。)。...# 传递了与上不同的数据类型 'PythonPythonPythonPython' 四、总结 Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。
无append(),insert()等函数 为区别与(1)区别,当只有一个元素并且会有歧义时,后面加一个逗号,即(1,) ---- 条件判断 条件判断 python使用if语句实现配合elif,else...和list比较,dict有以下几个特点: 查找和插入的速度极快,不会随着key的增加而变慢; 需要占用大量的内存,内存浪费多。 key必须是不可变的整数或字符串,不可使用list。...--- ## 函数 - 处理有规律的重复等问题,使用函数。 --- ### 调用函数 - 对于内置函数,调用时需要知道函数`名称`和`参数`。...除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。 默认参数的作用是降低函数的调用难度。...在计算机中,函数调用时通过栈(stack)这种数据结构来实现的。进入函数调用,栈就会增加一个栈帧,函数返回就会减一层栈帧。由于栈的大小是无限的。所以,递归调用次数过多,回导致溢出。
1.python 常见的数据类型 int string dict list tuple 2.上面常见的数据类型有哪些是可变的,哪些是不可变的,为什么?...dict list 是可变的 int string tuple是不可变的 本质 可以作为字典的key,就是不可变的 3....字典是通过哈希表实现的。也就是说,字典是一个数组,而数组的索引是经过哈希函数处理后得到的。...认为 list 的参数会在 extendList 每次被调用的时候会被设置成它的默认值 []。 尽管如此,实际发生的事情是,新的默认列表仅仅只在函数被定义时创建一次。...随后当 extendList 没有被指定的列表参数调用的时候,其使用的是同一个列表。这就是为什么当函数被定义的时候,表达式是用默认参数被计算,而不是它被调用的时候。
2、__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以 return 父类(通过 super(当前类名, cls))__new__出来的实例,或者直接是...4、如果__new__创建的是当前类的实例,会自动调用__init__函数,通过 return 语句里面调用的__new__函数的第一个参数是 cls 来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例...,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数。...3.列出 Python 中可变数据类型和不可变数据类型,为什么?...1、可变数据类型:list、dict、set 2、不可变数据类型:int/float、str、tuple 原理:可变数据类型即公用一个内存空间地址,不可变数据类型即每产生一个对象就会产生一个内存地址。
Python 并发库 1.6数据库 1.MySQL 数据库、索引优化 2.关系型和 NoSQL 的使用场景 3.Redis 缓存(常用的数据类型以及使用场景,底层实现了解会更好) 1.7Python Web...2.1.2 Python 作为后端语言的优缺点 为什么使用 Python ? 答:它是一门胶水语言,轮子多,应用广泛;语言灵活,生产力高,是一些创业公司以及外包项目节省时间的首选语言。...也就是函数在传参的时候,我们可以通过关键字参数方式,指定参数名传参,避免参数太多时候搞混。...2.3.3 Python 中 *args 和 **kwargs 函数传递中,他们处理可变参数。如果使用 *args那么会将所有的参数打包成一个 tuple 对象。...**kwargs 则是将所有的关键字参数打包成一个 dict 对象。 2.4 Python 异常机制 2.4.1什么是 Python 的异常? 答:异常就是一种错误处理机制。
除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。 默认参数 默认参数使得API简洁,但不失灵活性。...当一个参数有默认值时,调用时如果不传递此参数时,会使用默认值。...lst 通常来说,当默认参数是可变的时候,需要特别注意作用域的问题,我们需要上述的技巧(不可变的数据类型是值传递,可变的数据类型是引用传递。)。...L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。...: *之后必须有参数 非命名参数有默认值时,命名参数可以没有默认值 默认参数应该在每段参数的最后 使用参数槽时,不能使用可变位置参数,可变关键之参数必须放在命名参数之后 总结 Python的函数具有非常灵活的参数形态
python 跟 java 一样时强类型语言,也就是说它不会根据环境变化自动改变数据类型 python 是动态语言,而 java 是静态语言。...在这个范围内所有的整数都只会被建立一次 与 java 类似,java 叫常量池,[-128,127],通过 IntegerCache 来实现的 ( Integer [-128,127) 大整数池: python...类似 python中的字典 key 不能是可变的,可变的会报错,而java中没有此限制,虽然说可能不应该以可变对象为 key python 的序列( list )、字典( dict )、集合( set...,符合动态语言的标识,而java 只能返回特定的类型 Python 函数的参数可以通过关键字指定,而 java 方法不可以。...Python 函数有默认参数,而 java方法 没有 当我们在函数中引用一个变量时,Python 将隐式地默认该变量为全局变量。
函数参数可以是任意的数据类型,只要函数内部逻辑可以处理即可。...,默认参数的意思是当这个参数没有传递的时候,参数就使用定义时的默认值。...,却报错了,这是因为在使用可变参数时,没有考虑周全导致的,因为可变参数的长度可能是0,当长度为0的时候,就会出现除0错误。...五一、函数使用可变关键字参数 可变参数在使用上确实方便,函数会把可变参数当作tuple去处理,tuple在使用上有一定的局限性,比如有时候想找到特定位置的参数,只能通过下标的方式去寻找,如果顺序发生变化得时候...是的没错,dict,Python会把可变关键字参数当作dict去处理;对于可变关键字参数,一般使用**kwargs来表示。
我们使用iter()函数创建迭代器。 list、dict、str等数据类型是可迭代对象,并不是迭代器。...可以用方法isinstance()来进行判断 为什么list、dict、str等数据类型不是Iterator? ...可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。 ...*args是将参数作为一个tuple传入函数中。**kwargs是将参数作为一个dict传入函数中。 44、python中match()和search()的区别? ...换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。 85、python适合的场景有哪些?
可以使用int函数 如 int(‘3’) 结果由字符串’3’变为整型3 (2)python内建数据类型有哪些?...列表是可变的,能添加修改删除元素;而元组是不可变的,不能添加修改删除元素。 元组比列表的访问和处理速度快 列表不能为字典的键,而元组可以。...(13)列出python中可变数据类型和不可变数据类型? 可变数据类型:列表、字典 不可变数据类型:数值型、字符串、元组 (14)字典如何删除键?...__init__时初始化方法,创建对象后,就立刻被默认调用了, 可接收参数 __new__至少要一个参数cls,代表当前类,次参数在实例化时由python解释器自动识别。...datetime —- 处理日期时间 (32)用lambda函数实现两个数相乘 sum = lambda a,b:a*b print(sum) (33)如何在python中使用多进制数字
领取专属 10元无门槛券
手把手带您无忧上云