首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python基本常识

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。 是不是一个可迭代对象可以用 ? 函数来判断。...因为错误是class,捕获一个错误就是捕获到该class的一个实例。因此,错误并不是凭空产生的,而是有意创建并抛出的。Python的内置函数会抛出很多类型的错误,我们自己编写的函数也可以抛出错误。...错误的原因是Student对象不是一个可序列化为JSON的对象。 ? 因为通常class的实例都有一个dict属性,它就是一个dict,用来存储实例变量。...由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。...在多线程环境下,每个线程都有自己的数据。一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁。

1.1K51

Python3系统学习记录

2),int()函数默认是把str转为int型,是应为base参数默认为10。...r是读取 UTF-8编码的文本, rb是读取图片、视频等二进制文件,若要读取非UTF-8编码的文本,则需要添加一个参数指定编码方式,如encoding=gbk,读取文本文件过程中可能遇到编码错误,可以添加一个参数...__dict__) 13、进程和线程 -- 进程与线程之间的关系 -- 线程是最小的执行单元,而进程由至少一个线程组成,完全由操作兄决定,程序自己不能决定什么时候执行和执行多久。...-- Python 解释器由于设计时有GIL全局所,导致了多线程无法利用多核,多线程的并发在Python中即使一个美丽的噩梦 -- ThreadLocal变量虽然是全局变量,但每个线程都只能读写自己线程的独立副本...,他们的返回值不是list,而是Iterator,只有for 循环迭代的时候才真正计算 -- 并不是只有open函数返回的fp对象才能使用with语句。

90710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python名词解释

    例如,int(3.15) 是将原浮点数转换为整型数 3,但在 3+4.5 中,参数的类型不一致(一个是 int, 一个是 float),两者必须转换为相同类型才能相加,否则将引发 TypeError。...如果没有强制类型转换机制,程序员必须将所有可兼容参数归一化为相同类型,例如要写成 float(3)+4.5 而不是 3+4.5。...迭代器必须具有 iter() 方法用来返回该迭代器对象自身,因此迭代器必定也是可迭代对象,可被用于其他可迭代对象适用的大部分场合。一个显著的例外是那些会多次重复访问迭代项的代码。...Pythonic 指一个思路或一段代码紧密遵循了 Python 语言最常用的风格和理念,而不是使用其他语言中通用的概念来实现代码。...例如,Python 的常用风格是使用 for 语句循环来遍历一个可迭代对象中的所有元素。

    1.5K50

    Python内置函数详解【翻译自pyth

    若  它是一个遵循buffer接口的对象,对象的只读buffer将被用来初始化字节数组 若 它是一个可迭代对象,它必须是一个范围在0 的整数可迭代对象,被用做数组的初始内容。...默认的dir()机制对于不同类型的对象具有不同的行为,因为它尝试生成最相关,而不是完整的信息: 如果对象是模块对象,列表包含模块的属性名。...它总是当前模块的字典(在函数或者方法中,它指定义的模块而不是调用的模块)。 hasattr(object, name) 参数是一个对象和一个字符串。...) '-0x2a' 如果x不是Python int对象,它必须定义一个__index__()方法,返回一个整数。...结果是一个合法的Python表达式。如果x不是Python int对象,则必须定义一个返回整数的__index__()方法。

    1.5K20

    python核心知识汇总(精编版)

    ,而不是一个具体的值。...加了*的参数会以元组tuple的形式导入,而**的参数以字典形式导入。 匿名函数 python使用lambda来创建匿名函数。...对于容器,你可以很直观地想象成多个元素在一起的单元;而不同容器的区别,正是在于内部数据结构的实现方法。 容器是可迭代对象,可迭代对象调用 iter() 函数,可以得到一个迭代器。...迭代器可以通过 next() 函数来得到下一个元素,从而支持遍历。调用next()方法后,你要么得到这个容器的下一个对象,要么得到一个 StopIteration 的错误。...成员函数:是正常的类的函数,第一个参数必须是self;可通过此函数来实现查询或修改类的属性等功能。

    1.4K10

    python面试总结_python面试题总结(1)

    我们使用iter()函数创建迭代器。  list、dict、str等数据类型是可迭代对象,并不是迭代器。...;  4>进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率 ;  5>线线程不能够独立执行,必须依存在进程中  6>优缺点:线程和进程在使用上各有优缺点:线程执行开销小...为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。  1>Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。  ...Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。  ...Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。  Python2 range() 函数返回的是列表。

    1K20

    流畅的 Python 第二版(GPT 重译)(十一)

    需要flush=True参数,因为默认情况下,Python 输出是行缓冲的,这意味着 Python 仅在换行后显示打印的字符。...这些await链末端的低级可等待对象和生成器深入到库中实现,不是其 API 的一部分,可能是 Python/C 扩展。...同样,async for适用于异步可迭代对象:实现了__aiter__的对象。然而,__aiter__必须是一个常规方法——不是一个协程方法——并且必须返回一个异步迭代器。...回想一下,asyncio 是在 Python 3.4 中发布的,它使用 yield from 而不是 await,因此其 API 无法利用异步上下文管理器、异步迭代器以及 async/await 关键字所可能实现的一切...异步迭代和异步可迭代是接下来的主要话题,包括async for、Python 的异步控制台、异步生成器、异步生成器表达式和异步推导式。

    22710

    一份Python面试宝典

    集合中的元素必须是hashable对象,因此上面的代码在列表元素不是hashable对象时会失效,要解决这个问题可以给函数增加一个参数,该参数可以设计为返回哈希码或hashable对象的函数。...因为Python内置的max函数既可以传入可迭代对象找出最大,又可以传入两个或多个参数找出最大;最为关键的是还可以通过命名关键字参数key来指定一个用于元素比较的函数,还可以通过default命名关键字参数来指定当可迭代对象为空时返回的默认值...再比如Python中列表的extend方法,它需要的参数并不一定要是列表,只要是可迭代对象就没有问题。 “说明:动态语言的鸭子类型使得设计模式的应用被大大简化。...因为默认参数items引用了对象[],每次调用该函数,如果对items引用的列表进行了操作,下次调用时,默认参数还是引用之前的那个列表而不是重新赋值为[],所以列表中会有之前添加的元素。...每个Python文件就是一个模块,而保存这些文件的文件夹就是一个包,但是这个作为Python包的文件夹必须要有一个名为__init__.py的文件,否则无法导入这个包。

    1.2K20

    python常见问题

    8、闭包 1.必须有一个内嵌函数 2.内嵌函数必须引用外部函数的变量(该函数包含对外作用域而不是全局作用域名字的引用) 3.外部函数的返回值必须是内嵌函数...9、迭代器与生成器 迭代器:迭代可迭代对象对应_iter_(方法)和迭代器对应_next_(方法)的一个过程 在后台 for 语句 对容器象调用 iter()函数。...释放 GIL 可见,某个线程想要执行,必须先拿到 GIL,我们可以把 GIL 看 作是“通行证”,并且在一个 python 进程中,GIL 只有一个。...类方法:类方法是类对象所拥有的方法,需要用修饰器@classmethod 来标识 其为类方法,对于类方法,第一个参数必须是类对象,一般以 cls 作为第一个参 数(也可以用其他名称的变量作为其第一个参数...分割和传输数据,多个参数用&连接。url的编码格式采用的是ascii 编码,而不是uniclde,即是说所有的非字符都要编码之后再传输。

    1.1K22

    一篇文章梳理清楚 Python 多线程与多进程

    在Python 2.6版本的时候引入了multiprocessing包,它完整的复制了一套threading所提供的接口方便迁移。唯一的不同就是它使用了多进程而不是多线程。...如果p仍然运行,返回True join([timeout]):进程同步,主进程等待子进程完成后再执行后面的代码。线程等待p终止(强调:是主线程处于等的状态,而p是处于运行的状态)。...注意,虽然第二个参数是一个迭代器,但在实际使用中,必须在整个队列都就绪后,程序才会运行子进程。...multiprocessing 模块的区别:dummy 模块是多线程,而 multiprocessing 是多进程, api 都是通用的。...as_completed(fs, timeout=None):参数是一个 Future 实例列表,返回值是一个迭代器,在运行结束后产出 Future实例 。

    84710

    60道Python常见面试题,做对80% Offer任你挑!

    如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。...__new__和__init__区别 __init__是初始化方法,创建对象后,就立刻被默认调用了,可接收参数,如图 ?...34、x="abc",y="def",z=["d","e","f"],分别求出x.join(y)和x.join(z)返回的结果 join()括号里面的是可迭代对象,x插入可迭代对象中间,形成字符串,结果一致...36、举例说明zip()函数用法 zip()函数在运算时,会以一个或多个序列(可迭代对象)做为参数,返回一个元组的列表。同时将这些序列中并排的元素配对。...58、请将[i for i in range(3)]改成生成器 生成器是特殊的迭代器: 1、列表表达式的【】改为()即可变成生成器; 2、函数在返回值得时候出现yield就变成生成器,而不是函数了。

    1.1K30

    Python3.6学习笔记(二)

    Python中的迭代类似于Javascript,而与PHP或Java采用下标迭代的方式不同。对于Python来说,dict、set、字符串等都是可迭代对象,都可以使用for循环。...只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。 判断一个对象是否可迭代,通过collections模块的Iterable类型判断。...1,2,3], Iterable) # list是否可迭代 True >>> isinstance(123, Iterable) # 整数是否可迭代 False Python内置的enumerate函数可以把一个...而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。 Python对函数式编程提供部分支持。...每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。

    46840

    Python基础之序列构成的数组

    可迭代对象:实现迭代器协议的对象(实现方法:对象内部定义__iter__方法) 任何可迭代对象都可以使用for循环。由此看出Python的for循环抽象程度高于Java。...元组拆包可以应用到任何可迭代对象上,唯一的硬性要求是,被可迭代对象中的元素数量必须与接受这些元素的元组的空挡数一致。...注意:如果赋值对象是切片,赋值号另一端的对象也必须是可迭代对象。即使单独一个值,也要把它转换成可迭代的序列。...,仔细观察发现list2的赋值后在3个子列表中均有赋值,这是错误的初始化方法。...它接受任何形式的可迭代对象作为参数,返回一个列表。 两者都有两个参数供选择。一是reverse,默认False升序排列,设定为True会降序输出;二是key,设置比较的关键字参数。

    1.1K10

    110道python面试题

    __new__和__init__区别 __init__是初始化方法,创建对象后,就立刻被默认调用了,可接收参数,如图 ?...40、x="abc",y="def",z=["d","e","f"],分别求出x.join(y)和x.join(z)返回的结果 join()括号里面的是可迭代对象,x插入可迭代对象中间,形成字符串,结果一致...42、python中交换两个数值 ? 43、举例说明zip()函数用法 zip()函数在运算时,会以一个或多个序列(可迭代对象)做为参数,返回一个元组的列表。同时将这些序列中并排的元素配对。...69、请将[i for i in range(3)]改成生成器 生成器是特殊的迭代器, 1、列表表达式的【】改为()即可变成生成器 2、函数在返回值得时候出现yield就变成生成器,而不是函数了; 中括号换成小括号即可...100、python传参数是传值还是传址? Python中函数参数是引用传递(注意不是值传递)。

    2.8K40

    110道一线公司Python面试题,推荐收藏

    __new__和__init__区别 __init__是初始化方法,创建对象后,就立刻被默认调用了,可接收参数,如图 ?...40、x="abc",y="def",z=["d","e","f"],分别求出x.join(y)和x.join(z)返回的结果 join()括号里面的是可迭代对象,x插入可迭代对象中间,形成字符串,结果一致...42、python中交换两个数值 ? 43、举例说明zip()函数用法 zip()函数在运算时,会以一个或多个序列(可迭代对象)做为参数,返回一个元组的列表。同时将这些序列中并排的元素配对。...69、请将[i for i in range(3)]改成生成器 生成器是特殊的迭代器, 1、列表表达式的【】改为()即可变成生成器 2、函数在返回值得时候出现yield就变成生成器,而不是函数了; 中括号换成小括号即可...100、python传参数是传值还是传址? Python中函数参数是引用传递(注意不是值传递)。

    2.1K21

    NumPy 1.26 中文文档(四十七)

    这可能是由于复杂的广播而发生,并且将在设置迭代器范围、移除多索引或获取下一个函数时创建错误。但是,如果移除轴后大小足够小,则仍然可以再次移除轴并正常使用迭代器。...当前仅检查操作数,而不是强制形状。 NPY_ITER_REDUCE_OK 允许带有零步长和大小大于一的维度的可写操作数。请注意,此类操作数必须是可读/可写的。...通过将 errmsg 参数传递为非 NULL,可以安全调用 Reset* 和一些其他函数,这样函数将通过它传回错误,而不是设置 Python 异常。...Reset* 和一些其他函数可以安全调用,通过传递非 NULL 的 errmsg 参数,这样函数将通过它传回错误,而不是设置 Python 异常。...因此,为了获得良好的性能,必须将函数指针保存在变量中,而不是在每次循环迭代中获取它。 如果有错误则返回 NULL。

    23610

    Python学到什么程度可以面试工作(解答)

    exit():在执行with语句结束后,自动调用__exit__()方法,用户释放资源,若此方法返回布尔值True,程序会忽略异常。 使用环境:文件读写、线程锁的自动释放等。...Python是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库的一门强类型的动态,可移植,可扩展,可嵌入的解释型编程语言。...字符串:Python2中字符的类型,str:已经编码后的字节序列,unicode:编码前的文本字符;而Python3中字符的类型,str:编码过的unicode文本字符,bytes:编码前的字节序列。...import的理解: python2和python3 通过import导入模块和包的区别 input:Python3:input解析输入为str字符型;Python2:input解析输入为int型,raw_input...Python2的迭代器必须实现next方法,而Python3改成了__iter__()、next。

    64910

    Python|Google Python样式指南

    2 Python语言规则 2.1 Lint 对你的代码运行pylint 2.1.1 定义 pylint是用于在Python源代码中查找错误和样式问题的工具。...这些中断调用者按名称传递参数,而不强制实参实际上未使用。 2.2 导入 仅对包和模块使用导入 2.2.1 定义 从一个模块到另一个模块共享代码的可重用机制。 2.2.2 优点 命名空间管理约定很简单。...2.3.1 优点 避免由于模块搜索路径不是作者期望的模块名称冲突或导入错误。使查找模块更加容易。 2.3.2 缺点 由于必须复制程序包层次结构,因此使部署代码更加困难。...2.8.4 结论 如果类型支持, 就使用默认迭代器和操作符, 例如列表, 字典和文件. 内建类型也定义了迭代器方法. 优先考虑这些方法, 而不是那些返回列表的方法....对于乘法之类的常见操作,请使用operator 模块中的函数,而不要使用lambda函数。例如,推荐使用operator.mul而不是使用lambda x, y: x * y。

    1.6K20

    python学习笔记-基础

    python是动态语言,变量的类型是不固定的。而例如Java则是静态语言,变量在定义时必须指定类型,例如:int a = 123;,赋值时候如果类型不匹配, 则编译时会报错。...默认参数必须指向不可变对象 2)可变参数,传入函数的参数个数是可变的,可以是0, 1...个。...可以通过collections模块的Iterable类型判断一个对象是否是可迭代对象: >>> from collections import Iterable >>> isinstance('abc'...) 输出:11  1.1 map/reduce map()函数接收两个参数,第一个是函数,第二个是Iterable(可迭代对象)。...每个目下会有一个__init__.py文件,这个文件是必须的,否则python会将它看做是一个普通的目录,而不是一个包,init.py本身就是一个模块,模块名为mycompany。

    98790

    分享 Python 常见面试题及答案(上)

    ,等该线程运行完后其他线程才能运行。...如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。...__new__和__init__区别 __init__是初始化方法,创建对象后,就立刻被默认调用了,可接收参数,如图 ?...40、x="abc",y="def",z=["d","e","f"],分别求出x.join(y)和x.join(z)返回的结果 join()括号里面的是可迭代对象,x插入可迭代对象中间,形成字符串,结果一致...42、python中交换两个数值 ? 43、举例说明zip()函数用法 zip()函数在运算时,会以一个或多个序列(可迭代对象)做为参数,返回一个元组的列表。同时将这些序列中并排的元素配对。

    1.3K50
    领券