一,函数名是什么?

  函数名是函数的名字,本质:变量,特殊的变量。

  函数名()执行此函数

'''
在函数的执行(调用)时:打散。
*可迭代对象(str,tuple,list,dict(key))每一个元素添加到args元组中。
**dict 将字典的键值对添加到kwargs字典中。 在函数的定义时: 聚合。
*args将所有的位置参数聚合到一个元组中。
**kwargs 将所有的关键字参数聚合到一个字典中。
'''

  #python 2 没有nonlocal

1.单独打印函数名

def func1():
print(666)
print(func1)

  执行输出:#(单独打印函数名为函数的内存地址)

2. 函数名的赋值:

def func2():
print(666) f = func2
print(f())

      #说明:这里主要告诉你的是函数名是可以赋值的。这里其实是没有返回值的,所以为None,而666 只是函数体内的print

3. 函数名可以作为容器类数据的元素

案例一:

def f1():
print(1211) def f2():
print(1222) def f3():
print(1233) def f4():
print(1233) f1()
f2()
f3()
f4()

  执行后输出:

说明:这里是不是很麻烦呢?这里每一次使用都要写一个函数?这样岂不是还是有重复性的代码呢?

案例二:(这里实现一个最简单的应用)

def f1():
print(1211) def f2():
print(1222) def f3():
print(1233) def f4():
print(1233) l1 = [f1,f2,f3,f4]
for i in l1:
i()

  

4 函数名可以作为参数。

def f1():
print(666) def f2(x):
x() f2(f1)

  

解析:

a = 1
def f1(x): #2. 这里这个时候f1(1)
print(x) # 3.打印f1的形参
f1(a) #1,将变量a =1 的值 1传入f1中

  执行后输出:1

5.函数名可以作为函数的返回值

def f11(x):  #2.第二步形参得到实参传入的值为:5
return x #3. 第三步返回给函数调用者 f11(5) ret = f11(5) # 1.第一步将5传入函数 f11中
print(ret)

#闭包

#闭包:就是内层函数对外层函数(非全局)变量引用

#实例一:将内层函数的666在外层打印出来
def wraaper():
def inner():
print(666)
inner()
wraaper() #打印后输出:666
#方法二:
def wraaper():
def inner():
print(666)
return inner
wraaper()()

 #如何检测闭包

def wraaperl():
name = '老男孩'
def inner():
print(name)
inner()
print(inner.__closure__) #cell 如何这里i为none 就是不是闭包
# wraaperl()

  #如何判断 内层函数名.__closure__ cell 就是闭包

  闭包:当函数开始执行时,如果遇到了闭包,他有一个机制,他会永远开辟一个内存空间,将闭包变量等值放入其中,不会随着函数的执行完毕而消失

 

装饰器的初始:

def add_b():
b = 42
def do_global():
b = 10
print(b) # 1.10
def dd_nonlocal():
nonlocal b
b = b + 20
print(b) # 2.30
dd_nonlocal()
print(b) # 3.30
do_global()
print(b) # 4.42
add_b()

 

 

python全栈学习--day11(函数高级应用)的更多相关文章

  1. python全栈学习--day10(函数进阶)

    一,引言 现在我有个问题,函数里面的变量,在函数外面能直接引用么? def func1(): m = 1 print(m) print(m) #这行报的错 报错了:NameError: name 'm ...

  2. python全栈学习--day9(函数初始)

    Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

  3. python全栈学习路线

    python全栈学习路线-查询笔记 查询目录 一,硬件                                                                    十一,数据 ...

  4. Python全栈学习:匿名函数使用规范

    匿名函数,当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x) ...

  5. Python全栈之路----函数----返回值

    函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句,把结果返回. def stu_register(name,age,course='PY',country='CN'): prin ...

  6. Python全栈day14-15-16-17(函数)

    一,数学定义的函数 函数的定义:给定一个数集A,对A施加对应法则f,记作f(A),得到另一数集B,也就是B=f(A).那么这个关系式就叫函数关系式,简称函数.函数概念含有三个要素:定义域A.值域C和对 ...

  7. python全栈学习--day3

    一.基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余  + - * / ** %...2.bool 布尔值 判断真假以及作为条件变量3. ...

  8. python全栈开发笔记---------函数

    一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...

  9. python全栈开发-Day8 函数基础

    python全栈开发-Day8 函数 一 .引子 1. 为何要用函数之不用函数的问题 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需 ...

随机推荐

  1. Dshell----开源攻击分析框架

    前言 随着互联网的高速发展,网络安全问题变得至关重要,随着网络的不断规模化和复杂化,网络中拒绝服务(Denial of Service,DoS)攻击和分布式拒绝服务(Distributed Denia ...

  2. Complete the Word CodeForces - 716B

    ZS the Coder loves to read the dictionary. He thinks that a word is nice if there exists asubstring  ...

  3. WPF基础篇之资源文件路径

    WPF资源文件的路径 关于WPF资源文件的路径 这几天在WPF中调用资源文件的Uri时,因为是在代码里调用Uri写的Uri总是不对,要么运行直接报异常,要么说找不到资源文件.下面是我解决的整个经过和碰 ...

  4. 基于Spring Boot的RESTful API实践(一)

    1. RESTful简述    REST是一种设计风格,是一组约束条件及原则,而遵循REST风格的架构就称为RESTful架构,资源是RESTful的核心,一个好的RESTful架构,通过URL就能很 ...

  5. AndroidStudio 集成litepal 报错

    E/AndroidRuntime(24972): org.litepal.c.b: can not find a class named org.litepal.model.Table_Schema ...

  6. 圆方树简介(UOJ30:CF Round #278 Tourists)

    我写这篇博客的原因 证明我也是学过圆方树的 顺便存存代码 前置技能 双联通分量:点双 然后就没辣 圆方树 建立 新建一个图 定义原图中的所有点为圆点 对于每个点双联通分量(只有两个点的也算) 建立一个 ...

  7. react-native导航器 react navigation 介绍

    开发环境搭建好之后,想要进一步了解react-native,可以先从react-native官网上的电影列表案例入手: https://reactnative.cn/docs/0.51/sample- ...

  8. Unity3D判断角色对敌人是否可见

    在编写敌人AI的状态机时 经常需要判断角色对敌人来说是不是可见的 如果是可见的,则做出追击或者攻击动作 如果是不可见的,则保持idle或者巡逻状态 判断是否可见 包括两个步骤 1.地方角色的视见向量和 ...

  9. cxGrid_Q31584 cxgrid 拖放移动记录

    cxgrid 拖放移动记录,cxgrid 拖放,cxgrid 拖动记录,cxgrid 鼠标拖动记录 这是cxgrid开发公司回复客户时所发送的源码项目,用于实现鼠标拖动记录,改变记录在表格中的位置,所 ...

  10. 如何写对kubernetes的模板文件

    kubernetes的模板配置文件随着版本更迭也会有相应的调整,正确配置模板关键字的方式是参考版本发布的doc,如下图 在docs\api-reference下面有不同功能的API目录,如下图 各个A ...