python基础学习2

列表生成式 [x*x for x in range(1,11)]

生成器()小括号 表示生成器g            []表示list    g保存的是算法 用next()函数可以查看下一个生成器的值 用for循环迭代出结果 如果函数中有yield 表示该函数为生成器 yield()有打印print的功能

遇到yield就中断,下次又继续执行generator函数的“调用”实际返回一个generator对象

可以直接作用于for循环的数据类型有以下几种:

一类是集合数据类型,如listtupledictsetstr等;

一类是generator,包括生成器和带yield的generator function。

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

可以使用isinstance()判断一个对象是否是Iterable对象

可以被 next() 函数调用并不断返回下一个值的对象称为迭代器: Iterator

生成器都是Iterator对象,但listdictstr虽然是Iterable,却不是Iterator

listdictstrIterable变成Iterator可以使用iter()函数

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python的for循环本质上就是通过不断调用next()函数实现的

直接调用 abs() 函数和调用变量 f() 完全相同

既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数

map每一个对应元素 全部用指定函数计算

reduce函数 将前两个值进行函数f运算,运算的结果再和第三个参数运算,以此类推下去

filter 过滤参数 依次作用于参数 判断结果是否为true 然后保留

Python内置的sorted()函数就可以对list进行排序sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序

sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回

闭包 返回函数不懂

装饰器 调用now()函数,不仅会运行now()函数本身,还会在运行now()函数前打印一行日志: 输出一行日志

>>> now()
call now():
2015-3-25
要让函数是可导入的,得先创建模块。模块 是扩展名为.py的文件,包含要导入到程序中的代码。下面来创建一个包含函数make_pizza() 的模块。为此,我们将文件pizza.py中

除函数make_pizza() 之外的其他代码都删除

import 模块    调用模块内函数  (模块名.py文件)   模块名.函数名

导入特定函数 from 模块 import 函数 

别名  as 模块与函数均可别名

使用*号导入所有模块中的函数时 如果有重名 最好只导入想使用的函数 避免出错

给形参指定默认值时,等号两边不要有空格:
def function_name(parameter_0, parameter_1='default value')

建议代码行的长度不要超过79字符,这样只要编辑器窗口适中,就能看到整行代码。如果形参很多,导致函数定义的长度超过了
79字符,可在函数定义中输入左括号后按回车键,并在下一行按两次Tab键,从而将形参列表和只缩进一层的函数体区分开来。

编写类。类将函数和数据整洁地封装起来,能够灵活而高效地使用它们

在Python中,首字母大写的名称指的是类

方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突

将方法__init__() 定义成了包含三个形参:self 、name 和age 。在这个方法的定义中,形参self 必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self 呢?因为Python调用这个__init__() 方法来创建Dog 实例时,将自动传入实参self 。每个与类相关联的方法调用都自动传递实参self ,它是一个指向实例本身
的引用,让实例能够访问类中的属性和方法。我们创建Dog 实例时,Python将调用Dog 类的方法__init__() 。我们将通过实参向Dog() 传递名字和年龄;self 会自动传递,因此我们不需要传递它。每当我们根据Dog 类创建实例时,都只需给最后两个形参(name 和age )提供值

在Python 2.7中创建类时,需要做细微的修改——在括号内包含单词object

可以以三种不同的方式修改属性的值:直接通过实例进行修改;通过方法进行设置;通过方法进行递增(增加特定的值)

继承  继承时使用super()继承并初始化父类

首先是Car 类的代码(见❶)。创建子类时,父类必须包含在当前文件中,且位于子类前面。在❷处,我们定义了子类ElectricCar 。定义子类时,必须在括号内指定父类的名称。方法__init__() 接受创建Car 实例所需的信息(见❸

❹处的super() 是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar 的父类的方法__init__() ,让ElectricCar 实例包含父类的所有属性。父类也称为超类 (superclass),名称super因此而得名

重写父类的方法

打开文件 with open

关键字with的用法

以写入('w' )模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。

Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str() 将其转换为字符串格式

函数write() 不会在你写入的文本末尾添加换行符

模块json 来存储数据 json.dump()存储数据 json.load()

重构

你经常会遇到这样的情况:代码能够正确地运行,但可做进一步的改进——将代码划分为一系列完成具体工作的函数。这样的过程被称为重构 。重构让代码更清晰、更易于理解、更容易扩展

使用Python模块unittest 中的工具来测试代码

unittest Module中的断言方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值