内容大纲

  一:  函数的运行

  二:  闭包

  三:  迭代器

  四:  生成器

  五:  列表生成器

  六:  列表推导式

  七:  生成器表达式 

  八:  匿名函数

一:  函数的运行

  1:函数名是一个特殊变量

  

 def func():
# print(666)
# print(func)

  2:函数名可以当做变量进行赋值

# f1 = 2
# f2 = f1
# f3 = f2
# print(f3) # def func():
# print(666)
# func1 = func
# f2 = func1
# f3 = f2
# # print(f3)
# f3()

  3:函数名可以当做容器类的元素

# def func1():
# print('in func1')
#
#
# def func2():
# print('in func2')
#
#
# def func3():
# print('in func3')
#
# l1 = [func1, func2, func3]
# for i in l1:
# i()

  4:函数名可以当做函数的参数

# def func(x):
# # print(x)
# x()
# print('in func')
#
# def func1():
# print('in func1')
#
# func(func1)

  5:函数名可以当做返回值

def func(x):  # x ---> func1
return x # func1 def func1():
print('in func1') # ret = func(func1) # func1
# ret()
func(func1)()

二:闭包

  >1    

    1:内层函数对外层函数(非全局)变量的引用

    2:闭包只存在内部函数中

    3:函数都要逐层返回,最终返回给最外层

  >2

# def func(n):
# n = name
# def inner():
# print(n)
# return inner
# name = '太白'
# f = func(name)
# print(f.__closure__[0].cell_contents)

 

  >3

# def func(step):
# num = 1
# num += step
# print(num)
# j = 0
# while j < 5:
# func(3)
# j += 1 # 闭包:解释器执行程序时,如果遇到函数,随着函数的结束而关闭临时名称空间,但是!!!
# 如果遇到闭包,有一个机制:那么闭包的空间不会随着函数的结束而关闭。

三:迭代器

  >1 可迭代带对象

    # 内部含有__iter__方法的就是可迭代对象,遵循可迭代协议。   

  >2 迭代器

    # 迭代器:内部含有'__iter__'并且含有'__next__'方法的就是迭代器,遵循迭代器协议。

  >迭代器的作用

    # 1,节省内存.
    # 2,惰性机制.
    # 3, 一条路走到黑,不走回头路.

四:生成器

  >1

    # 生成器本质就是迭代器,生成器是自己用python代码写的迭代器。

  

# 生产衣服

# def cloth():
# for i in range(5001):
# print('我写的代码没有bug 衣服%s号' % i)
# cloth()
#
# def cloth2():
# for i in range(5001):
# yield '有志青年 衣服%s号' % i #用的时候才调用
#
# genor = cloth2()
# for i in range(100):
# print(next(genor))
#
# for i in range(50):
# print(next(genor))

  > send    next

   1: send   ,  有返回值,返回给上一个迭代器. 如果为开头则报错

#
# def func():
# count = yield 666
# print(count)
# num = yield '三包春药'
# print(num)
# yield '太白金星'
# n1 = yield '小虎'
# print(n1)
# genor = func()
# print(next(genor))
# print(next(genor))
# send不仅能对应yield取值,而且可以给上一个yield发送一个值
# print(genor.send(None))
# print(genor.send('alex'))
# print(genor.send('111'))
# print(genor.send('111'))
# print(genor.send('111'))
# 第一次取值能否用send传参? 不能
# 最后一个yield 永远也得不到send的传的值

  2:yeild from    把列表变成迭代器

# def func():
# lst = ['明亮', '容先', '王子', '万赵']
# yield from lst
# genor = func()
print(genor.__next__())
 

 五:列表推导式

# 列表推导式:用一行代码构建简单,较复杂的列表。
# 减少代码量,装逼。
#三种:
# 1,循环模式。 [变量(加工后的变量) for 变量 in iterable ]
# print([i for i in range(1,101)])
# 构建一个列表:['python1期', 'python2期',....'python25期']
# l1 = ['python%s期' %i for i in range(1,26)]
# print(l1) # 2 ,三元模式(循环模式)
# 构建一个列表:列表里面的元素是1~20,但是能被3整除元素替换成*。
# ret = '*' if 3>2 else 1
# print(ret)
# print(['*' if i % 3 == 0 else i for i in range(1,21)]) # 3,筛选模式 [变量(加工后的变量) for 变量 in iterable if 条件]
# 三十以内所有的偶数留到列表中
# print([i for i in range(1,31) if i % 2 == 0])

六: 匿名函数

func2 = lambda x,y: x + y
print(func2(3,4)) # 写一个匿名函数:需要三个数字参数,返回值为三个数相乘

  

总结day11 ----函数的学习(2)的更多相关文章

  1. Hive自定义函数的学习笔记(1)

    前言: hive本身提供了丰富的函数集, 有普通函数(求平方sqrt), 聚合函数(求和sum), 以及表生成函数(explode, json_tuple)等等. 但不是所有的业务需求都能涉及和覆盖到 ...

  2. (转载)prepare函数的学习,我要学习php第二天

    (转载)http://www.boyuan78.com/htm/company/2012_1030_60.html prepare函数的学习,我要学习php第二天 $mysqli = new mysq ...

  3. QT QObject::connect函数的学习

      从Qobject(QObject.h)源码中可以看到QObject::connect的定义是这样的: static bool connect(const QObject *sender, cons ...

  4. Matlab中常见的神经网络训练函数和学习函数

    一.训练函数 1.traingd Name:Gradient descent backpropagation (梯度下降反向传播算法 ) Description:triangd is a networ ...

  5. python函数基础学习

    函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定  义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...

  6. day11——函数名的使用、f格式化、迭代器、递归

    day11 函数名的第一类对象及使用 1.可以当作值被赋值给变量 def func(): print(1) print(func) a = func a() 2.当作元素存放在容器中 def func ...

  7. R语言函数化学习笔记6

    R语言函数化学习笔记 1.apply函数 可以让list或者vector的元素依次执行一遍调用的函数,输出的结果是list格式 2.sapply函数 原理和list一样,但是输出的结果是一个向量的形式 ...

  8. R语言函数化学习笔记3

    R语言函数化学习笔记3 R语言常用的一些命令函数 1.getwd()查看当前R的工作目录 2.setwd()修改当前工作目录 3.str()可以输出指定对象的结构(类型,位置等),同理还有class( ...

  9. day11 函数

    day11 函数 一.函数基础 """ 1 什么是函数 函数是盛放代码的容器:把实现某一功能的代码放到一个函数内就制造一个工具 2 为何要用函数 没有用函数之前程序的问题 ...

随机推荐

  1. unity5-GI是什么?

    GI是什么? GI =直接光照+间接光照+环境光+反射光.直接光照先不用说了,间接光照是光线在物体上反射所带来的光照. 核心参数: 每个光源上的Bounce Intensity.环境光可以直接理解为你 ...

  2. 6-关于#include<bits/stdc++.h>

    万能头文件#include<bits/stdc++.h> (转载)   最近在打cf时赛后翻阅别人的代码总是会发现一个陌生而奇怪的头文件#include<bits/stdc++.h& ...

  3. rtx自定义面板不更新

    服务器和客户端自定义面的文件分别在下列xml中. 程序员的基础教程:菜鸟程序员

  4. SqlMapConfig配置文件中的typeAliases标签用于自定义别名

    1.mybatis支持别名: 别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _flo ...

  5. 配置Linux防火墙

    配置防火墙(服务器安全优化)(转) 安全规划:开启 80  22 端口并 打开回路(回环地址 127.0.0.1) # iptables –P INPUT ACCEPT # iptables –P O ...

  6. Centos 7 安装和配置Redis

    一. 安装 操作系统:Centos 7. 最小化安装 redis版本: 4.0.6 服务器地址:*** 第一步:下载redis安装包(如果有新的,下载最新的redis安装包) wget http:// ...

  7. ForwardPriceSimulationService

    using System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Coll ...

  8. js的prototype(2)

    1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javasc ...

  9. UVa 1606 Amphiphilic Carbon Molecules (扫描法+极角排序)

    题意:平面上有 n 个点,每个点不是黑的就是白的,现在要放一个隔板,把它们分成两部分,使得一侧的白点数加上另一侧的黑点数最多. 析:这个题很容易想到的就是暴力,不妨假设隔板至少经过两个点,即使不经过也 ...

  10. 引入jQuery

    用于测试和开发(未压缩,是可读的代码)  uncompressed, 用于实际的网站中,已被精简和压缩.  minified   jQuery 1.xjQuery Migrate  过渡版jQuery ...