函数之命名关键字
Posted ioipchina
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数之命名关键字相关的知识,希望对你有一定的参考价值。
命名关键字
命名关键参数: 在函数定义阶段,写在* 和**可变长参之间的形参,称之为命名关键字
在给命名关键字参数传值的时候,只能用关键字为其传值
def func(x,y=1,*args,z=3,m,**kwargs): print(x,y) print(args) print(z,m) print(kwargs) func(1,2,1,2,3,4,5,6,7,78,8,9,0,z=69,m=999,o=666999,l = 999666)
函数是第一类对象:
函数名指向的值可以被当做参数传递
1.函数名可以被传递
正常的命名:
name = ‘yulong‘ # 声明一个变量名 name = ‘yulong‘ x = name # 重新指定x = name print(x,id(x)) # 输出x的值和id print(name,id(name)) # 输出name 的值和id 发现x 和name的值和id 都相同
那么建立一个函数呢?
def func(): print(‘from func‘) print(func) # <function func at 0x00000238D4C1C048> # print(id(func)) # 2443110891592 f = func # 给函数名指定一个值,让这个值当做函数传递 f() # 其实指向的也是函数在内存中的地址 func() print(f) # <function func at 0x0000020152A0C048> print(func)
2、函数名可以被当做参数传递给其他函数
def func(): print("阿西吧") def index(age): # print(age) age() print(‘卡卡西‘) # index(2) index(func) # 把函数func传递到index函数 那么func就等与age 那么age()就等与在index函数里面运行了func函数
3、函数名可以被当做函数的返回值
def ceshi(): print(‘ceshi‘) def ceshi1(): print(‘ceshi1‘) return ceshi # 把ceshi函数名当做ceshi1的返回值 res = ceshi1() # 运行函数ceshi1 那么res就等与ceshi res()和ceshi()同等功能能 # res = ceshi() print(res) res()
4、函数名可以被当做容器类型的参数
def fuc(): print(‘你大爷‘) print(fuc) #输出的是这个函数的地址 l= [1,2,fuc,fuc] #输出也是函数的地址 print(l) print(l[2]()) cao = l[2] print(cao) cao()
函数执行的顺序:
函数的嵌套调用
函数的嵌套定义:该函数用户可以通过传参的不同控制函数执行不同的功能
def my_max(x, y): if x > y: return x return y def my_max_and_mini(a, b, c, d): res = my_max(a, b) res1 = my_max(res, c) res2 = my_max(res1, d) return res2
嵌套示意图:
空间名
名称空间是什么? 名称空间就是一个放置名字的地方
详细解释:存放的是变量名与变量值的内存地址得绑定关系的地方
要想访问一个变量的值 必须先去名称空间中拿到对应的名字 才能够访问变量的值
空间的理解图:
名称空间的分类:
1.内置空间
2.全局空间
3.局与空间\\局部空间
1:内置空间就是python解释器定义好的名字,也可以说自带的
2.全局空间就是文件级别的代码比如直接命名的a=1 那么a就是全部空间中的名字
3、局部空间就是包含在全局空间里面的一个小块,好比函数体内所创建的名字,都属于局部空间的
名称空间的生命周期:
内置名称空间:
只要python解释器已启动立马创建关闭python解释器的时候内置名称空间自动销毁
全局名称空间:
只要你右键运行py文件会自动创建py文件程序运行结束自动销毁
局部名称空间:
函数被调用的时候自动创建函数指向结束立即销毁(动态创建动态销毁)
内置名称空间:
只要python解释器已启动立马创建关闭python解释器的时候内置名称空间自动销毁
全局名称空间:
只要你右键运行py文件会自动创建py文件程序运行结束自动销毁
局部名称空间:
函数被调用的时候自动创建函数指向结束立即销毁(动态创建动态销毁)
函数在定义阶段查找名字的顺序就已经固定了 不会因为函数的调用位置变化而改变(******)
名字的查找顺序呢
首先我们先确定我们的当前位置在哪?
1.站在全局空间: 全局空间>>>>内置空间
2.站在局部空间: 局部空间>>>>全局空间>>>>>内置空间
示例:
以上是关于函数之命名关键字的主要内容,如果未能解决你的问题,请参考以下文章