iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python的一些高级语法
  • 523
分享到

python的一些高级语法

语法高级python 2023-01-31 06:01:02 523人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

1.python 可迭代对象的写法a.循环版-迭代器通过实现类的属性方法实现class Fab(object):     def __init__(self, max):         self.max = max         sel

1.python 可迭代对象的写法

a.循环版-迭代器

通过实现类的属性方法实现

class Fab(object): 


    def __init__(self, max): 

        self.max = max 

        self.n, self.a, self.b = 0, 0, 1 


    def __iter__(self):   //返回迭代属性

        return self 


    def next(self):       //实现迭代方法

        if self.n < self.max: 

            r = self.b 

            self.a, self.b = self.b, self.a + self.b 

            self.n = self.n + 1 

            return r 

        raise StopIteration()


>>> for n in Fab(5): 

 ...     print n 

 ... 

遍历结束时抛出StopIteration异常

iter = (x**2 for x in rang(10) if x%2==0)生成迭代器,相当于yield

list = [x**2 for x in rang(10) if x%2==0]  生成列表

b.yield - 生成器(也属于迭代器:由解释器自动生成的迭代器,有助于保持代码简洁)

 def fab(max): 

    n, a, b = 0, 0, 1 

    while n < max: 

        yield b 

        a, b = b, a + b 

        n = n + 1 


 >>> for n in fab(5): 

 ...     print n 

 ... 


yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。也可以手动调用 fab(5) 的 next() 方法(因为 fab(5) 是一个 generator 对象,该对象具有 next() 方法)

 >>> f = fab(5) 

 >>> f.next() 

要注意区分 fab 和 fab(5),fab 是一个 generator function,而 fab(5) 是调用 fab 返回的一个 generator,好比类的定义和类的实例的区别

在一个 generator function 中,如果没有 return,则默认执行至函数完毕抛出 StopIteration ,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。


另一个 yield 的例子来源于文件读取。如果直接对文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。通过 yield,我们不再需要编写读文件的迭代类,就可以轻松实现文件读取:

 def read_file(fpath): 

    BLOCK_SIZE = 1024 

    with open(fpath, 'rb') as f: 

        while True: 

            block = f.read(BLOCK_SIZE) 

            if block: 

                yield block 

            else: 

                return

生成器或迭代器相比于列表可以更大限度的减小内存的开销

for line in open("test.txt"):   #use file iterators

    print line

能节省内存的地方就应该是用生成器(速度快,节省内存)

2.动态添加对象成员

class Info():

def __init__(self):

self.a=10

>>info = Info()

>>info.b=20

>>print info.b   #动态添加对象成员


--结束END--

本文标题: python的一些高级语法

本文链接: https://www.lsjlt.com/news/189375.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python的一些高级语法
    1.python 可迭代对象的写法a.循环版-迭代器通过实现类的属性方法实现class Fab(object):     def __init__(self, max):         self.max = max         sel...
    99+
    2023-01-31
    语法 高级 python
  • MYSQL 一些 高级语法
    从一个表中复制列插入到指定的表中: # 字段的值必须一样 INSERT INTO table2 SELECT * FROM table1; select 子查询 where子查询 # 必须针对一个字段进行查询 ...
    99+
    2020-06-01
    MYSQL 一些 高级语法
  • MySQL一些常用高级SQL语句
    MySQL高级SQL语句 use kgc; create table location (Region char(20),store_name char(20)); insert into l...
    99+
    2022-05-11
    mysql高级sql语句 mysql sql语句
  • 聊聊一些Golang的高级用法
    Go语言的出现,让我们的开发更加高效、安全、简单。代码风格简单,性能高效,它已经是许多开发者和公司的首选。然而,随着我们对Go语言的深入了解和使用,有些时候我们需要更高级、更灵活的写法来应对不同的工作需求。那么,下面就介绍一些Golang的...
    99+
    2023-05-14
  • gojs一些实用的高级用法
    目录1. 取消更新动画2. 导出图(含可视区外的部分)3. 禁用 ctrl 相关快捷键4. 画布滚动模式,无限滚动 or 局部滚动5. 展开收起多层嵌套的组6. 给图元素加动画7. ...
    99+
    2022-11-12
  • Python的高级用法有哪些
    本篇内容主要讲解“Python的高级用法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的高级用法有哪些”吧!Lambda 函数Lambda 函数是一种比较小的匿名函数&...
    99+
    2023-06-16
  • 有哪些C语言的高级用法
    本篇内容主要讲解“有哪些C语言的高级用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些C语言的高级用法”吧!整形溢出和提升大部分 C 程序员都以为基本的整形操作都是安全的其实不然,看下面这...
    99+
    2023-06-16
  • MongoDB高级语法
    and操作:    隐式and操作:        db.getCollection("the_table").find({"age":{"$gt":20},"sex":"男"})   //对age与sex...
    99+
    2022-10-18
  • MySQL一些常用高级SQL语句详解
    目录一、MySQL进阶查询二、MySQL数据库函数三、MySQL存储过程总结一、MySQL进阶查询 首先先创建两张表 mysql -u root -pXXX #登陆数据库,X...
    99+
    2022-11-13
  • CSS注释的一些高级用法介绍
    本篇内容介绍了“CSS注释的一些高级用法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!准修饰选择器(Q...
    99+
    2022-10-19
  • Bing必学的高级搜索语法有哪些
    这篇文章给大家介绍 Bing必学的高级搜索语法有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用以下关键字可以缩小搜索范围:关键字定义示例contains:只搜索包含指定文件类型的链接的网站。若要搜索包含 Mic...
    99+
    2023-06-12
  • python requests 高级用法
    本篇文档涵盖了 Requests 的一些高级特性。 会话对象会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling...
    99+
    2023-01-31
    高级 python requests
  • CSS高级语法的示例分析
    这篇文章主要介绍CSS高级语法的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 选择器的分组 你可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明。 用逗号...
    99+
    2022-10-19
  • Python初级面试语法
    可变对象与不可变对象 可变对象存的是地址,地址不变,但地址指向的值可以变(引用类型)。类型:list、dict、set等 不可变对象直接存值,值变了,就是另一个对象了(值类型)。int、float、tuple、string等 直接赋值,浅...
    99+
    2023-01-30
    语法 Python
  • 数据库insert高级语法用法
    这篇文章主要介绍“数据库insert高级语法用法”,在日常操作中,相信很多人在数据库insert高级语法用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库insert高...
    99+
    2022-10-18
  • Python的基础语法(一)
    0. 前言 最近正在重新整理Python的基础知识,以便更好地学习新知识。这一部分主要是讲述Python基础语法的演示。下面的语法都是基于Python3的语法。 1. 注释 注释:Python的注释方法有两种: 单行注释: # 你添加...
    99+
    2023-01-31
    语法 基础 Python
  • python高级语法之闭包和装饰器详解
    目录一、闭包二、一个简单的例子三、装饰器3.1 简单装饰器3.1.1 使用装饰器的语法糖3.1.2 装饰器的执行时机3.2 通用装饰器3.2.1 装饰带有参数的函数3.2.2. 装饰...
    99+
    2022-11-12
  • 有哪些高级的Python技巧
    本篇内容主要讲解“有哪些高级的Python技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些高级的Python技巧”吧!1.通过多个键值将对象进行排序假设要对以下字典列表进行排序:peop...
    99+
    2023-06-16
  • vim 的python 语法高亮
    周海汉 /文   vim支持大部分文件格式的语法高亮,而且可以自定义。不过缺省的python语法高亮感觉太少,修改一下。   1.修改语法高亮文件 /usr/share/vim/vim72/syntax/python.vim   将"  ...
    99+
    2023-01-31
    语法 vim python
  • MySQL高级查询语法分析
    目录一、排序二、分页查询三、聚合函数四、分组查询五、连接查询1. 内连接查询2. 左连接查询3. 右连接查询4. 自连接查询六、子查询一、排序 排序查询语法: select...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作