''''''
'''
一、函数
1、函数定义
对功能或者动作的封装
在类中定义,就是方法
在类之外定义,就是函数 2、函数写法
1、定义或者申明函数
def 函数名(形参列表):
函数体(return)
2、调用函数
函数名(实参) 3、函数名
1、定义
是一个变量的名字(函数名也属于变量) 2、用途
1、可以进行赋值。
2、可以作为参数,可以作为返回值。
3、可以作为集合类的元素。
集合类是狭义-集合数据类型set?还是广义list、tuple、set? 4、参数
1、形参
1、定义
在函数声明的位置定义的变量 2、分类
1、位置参数--最常见
2、默认值参数
3、动态参数
1、 *args 动态接收多个位置参数
2、**kwargs 动态接收多个关键字参数
3、* **在形参位置,表示聚合
* **在实参位置,表示打散 *列表 **字典 *li1 **dic1 3、参数顺序
位置参数 *args 默认值参数 **kwargs 4、无敌参数
1、定义
可以接收任何类型或者数量的参数
2、写法
def func(*args,**kwargs):
pass 2、实参
1、定义
在函数调用的时候,给函数传递的具体值 2、分类
1、位置参数
2、关键字参数
3、混合参数 3、传参
定义
把实参赋值(传递)给形参的过程 5、名称空间-命名空间
分类
1、内置名称空间 比如:print
2、全局名称空间
3、局部名称空间 6、作用域
分类
1、全局作用域
包含:内置名称空间和全局名称空间
2、局部作用域--函数内 globals()和locals()函数的区别
1、前者查看全局作用域中的内容
2、后者查看当前作用域中的内容 global和nonlocal关键字的区别
1、前者在局部引入全局变量,创建全局变量
2、后者,在局部引用离它最近的上一级变量 7、函数嵌套和闭包
1、嵌套
写法:
def func():
def inner():
pass
return inner #返回内层函数的函数名 2、闭包
1、概念-定义
内层函数用到了外层函数的变量 2、写法
def func():
a = 10
def inner():
return a #内层函数用到了外层函数的变量
return inner #返回内层函数的函数名 3、作用
1、保护变量不被修改
原因:内层函数用的的外层函数的变量,这个变量是外层函数内,所以不能直接修改
2、变量常驻内存
原因:外层函数定义的变量,内层函数可能会随时用到
如果不是常驻内存,一旦内层函数调用就会报错(类似缓存的机制) 二、迭代器
1、iterable-可迭代对象
定义:在该对象的方法中包含了__iter__ 2、iterator-迭代器
定义:访问对象的__iter__()方法,就可以得到该对象的迭代器 3、特点
1、节省内存
2、惰性机制(一步一步next)
3、只能向前不能退后 4、用迭代器写for循环的实现过程
li4 = [3,4]
it4 = iter(li4)
while 1:
try:
ret4 = next(it4)
print(ret4)
except StopIteration as e:
print('没有值可以取了',e)
break #跳出整个循环 三、生成器
1、概念
本质是迭代器 2、创建方式-3种
1、生成器函数
2、生成器表达式
3、类型转换-range 3、生成器函数
1、概念
函数体中包含yield的函数就是生成器函数
2、写法
def func():
yield xxx
func() #调用生成器函数,函数没有被执行,而是产生了生成器generator 例子:
def func(li): #1 定义生成器函数
for i in li:
yield i
li1 = ['jack', 'tom', 'bob']
gen1 = func(li1) #把iterable转成生成器
# print(next(gen1)) #jack 生成器的取值(单次取值) next() __next__()
for i in gen1:
print(i) 3、yield关键字
1、和return一样 表示返回
2、yield可以分段执行
4、生成器的使用
1、__next__()或者next()
每次调用上述方法,可以执行到写一个yield
2、send()
可以给上一个yield进行传值
5、yield from
把iterable-可迭代对象转换成生成器
def func3(li):
yield from li #实现把iterable转换成generator
li1 = [1,2,3]
gen3 = func3(li1) #把iterable转换成生成器-generator
print(gen3) #<generator object func3 at 0x000000E53FF24CC8>
for i in gen3:
print(i) 4、生成器表达式
写法:
生成器表达式格式 (结果 for循环)
例子:
gen = (i for i in range(10)) 5、产生生成器genarator的两种方式
1、生成器函数
函数体包含yield的函数就是生成器函数
2、生成器表达式
(结果 for循环)
gen = (i for i in range(10))
注意:
1、列表推导式 []
2、字典推导式 {}
3、生成器表达式 ()
没有-元组推导式 6、特点
1、生成器在内存中记录的是代码,而没有执行
2、生成器取值
1、单个取值: next()或者__next__()
2、循环取值: for循环
类比:
生成器:母鸡
生成器取值:下蛋
'''

Python【day 15-3】函数部分的更多相关文章

  1. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  2. python基础(15):内置函数(一)

    1. 内置函数 什么是内置函数? 就是python给你提供的,拿来直接⽤的函数,比如print,input等等,截⽌到python版本3.6.2 python⼀共提供了68个内置函数.他们就是pyth ...

  3. python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)

    1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...

  4. python中常用的函数与库一

    1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...

  5. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  6. python学习:匿名函数

    Python 函数 lambda   匿名函数 -lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方.   def fun(x,y):        return x*y fu ...

  7. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  8. Python基础(一)常用函数

    1.map() 此函数可以,将列表内每一个元素进行操作,并返回列表 原型 map(function,[list]) def fc(x): return x * 2 print(map(fc,[1,2, ...

  9. Python基础(协程函数、内置函数、递归、模块和包)-day05

    写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04  ...

  10. python中的生成器函数是如何工作的?

    以下内容基于python3.4 1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函 ...

随机推荐

  1. HBuildX报错此插件的使用依赖于外部应用程序eslint,本机未检测到此应用

    最近刚刚开始用HBuildX,结果保存时报错 解决方案: 打开HBuilderX 打开plugins 打开eslint-vue, 然后Git Bash Here,npm install 重新安装一下 ...

  2. .NET轻松实现支付宝服务窗网页授权并获取用户相关信息

    前言: 最近在开发一个商业街区的聚合扫码支付功能,其中需要用到的有支付宝,微信两种支付方式,当然对于开发微信支付而已作为自己的老本行已经比较熟悉了,然而对于我来说支付宝支付还是头一次涉及到.这次项目中 ...

  3. ASP.NET MVC IOC依赖注入之Autofac系列(一)- MVC当中应用

    话不多说,直入主题看我们的解决方案结构: 分别对上面的工程进行简单的说明: 1.TianYa.DotNetShare.Model:为demo的实体层 2.TianYa.DotNetShare.Repo ...

  4. WGS84、WebMercator、GCJ02和BD09坐标系简介与转换

    WGS84(GPS): 地心坐标系,空间直角坐标系,原点与地球质心重合,为GPS采用的坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系. 通过GPS可以直接获取WGS84下的坐标(B,L, ...

  5. 使用adb命令操控Android手机(adb命令)

    1) 手机连接电脑之前 首先,查看安卓手机是否已经连接上电脑 adb devices 让adb一直查找安卓设备,找到后才停止 adb wait-for-device 2) 手机连接电脑后的操作 2.0 ...

  6. 23种设计模式之Builder设计模式

    概述 建造者模式(Builder Pattern),是创造性模式之一,Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在 ...

  7. pymysql增删改查操作

    表结构 CREATE TABLE `students` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFA ...

  8. dd 工具使用; SSD 顺序写性能测试;

    dd 工具使用: dd 也是我们经常使用到的磁盘测试工具,Linux服务器装好系统之后,想要知道硬盘的读写是否能满足服务的需要,如果不满足硬盘的IO就是服务的一个瓶颈.我们可以使用dd命令简单进行测试 ...

  9. FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法

    出现问题场景:       作为刚接触FreeRTOS实时操作系统的菜鸟,我在练习一个程序功能:按键3按下,将LED闪烁的任务挂起:按键4按下,将LED闪烁的任务恢复到就绪.按键使用外部中断.恢复就绪 ...

  10. Python 定时任务的实现方式

    本文转载自: https://lz5z.com/Python%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96% ...