python中的函数 #2
2023-12-14 19:41:17
一.空间名与作用域
1.名称空间
名称空间就是存放变量名与变量值关系的地方
空间地址的分类:分为三种:
1.内置的名称空间:在python解释器中自带的,可以直接拿来使用
-
__doc__
:用于存储模块文档字符串的命名空间。 -
__file__
:用于存储当前模块的文件名。 -
__name__
:用于存储当前模块的名称。等
2.全局的名称空间:在py文件中,顶格编写的变量名都是全局的名称空间
username = 'jerry'
def name():
pass
name()##jerry就是全局的变量
3,局部名称空间:在函数的内部里的就是局部变量
def index():
a = 1
b = 2
print(a, b)## a,b就是局部变量
index()
总结:全局变量就是函数之外的变量就是全局变量,在函数里的变量就是局部变量,局部变量在全局是无法使用的
2.局部名称空间的嵌套
def f1():
# x = 111
def f2():
print('f2')
# x = 222
def f3():
print('f3')
# x = 444
def f4():
x = 555
print(x)
f4()
f3()
f2()
f1()
3.名称空间的作用域
域:范围,作用域:变量的作用范围
1.内置名称空间:在全局的任意位置都可以使用
2.全局内存空间:在全局的任意位置都可以使用
3.局部的内存空间:一般在局部空间内使用
def index():
x = 554
print(x)
index()##x就是在局部的空间中
4.global和nonlocal的使用
global:
x = 100
def index():
x = 122
print(x)
index()### x=122
x = 222
def index():
global x
x = 122
index()
print(x) ###x =222 在变量不可变时,使用global来声明这是全部的值
注:如果是可变类型的,则不需要global去声明直接就可以修改。
nonlocal:
def outer():
x = 555
def inner():
x = 444
inner()
print(x)
outer()### x = 555
def outer():
x = 555
def inner():
nonlocal x
x = 444
inner()
print(x)
outer()###x = 444
注:如果是可变类型的,则不需要nonlocal去声明直接就可以修改。
二. 函数对象
函数对象就是函数的名字。
1.函数对象的四种用法
1.函数名可以当成变量赋值
def index():
print(index)
return 123
index()## <function index at 0x000001D76E2EF820>
#得到的就是函数的内存地址
def index():
return 123
a = index
print(a())
index() ##这就是变量值
2.函数名可以当做函数的实参?
def index():
print('index')
return None
def func(a):
a = index
print('a')
res = a()
print(res)
func(index)
3. 函数名可以当场函数的返回值
def index():
print('index')
return 'index'
def func():
print('func')
return index
res = func()
print(res)
res1 = res()
print(res1)
4. 函数可以当成容器类元素
def index():
print('index')
return None
ll = [11,2,334,54,index]
res = ll[4]()
print(res)
2.函数的嵌套与调用
def my_max(a,b):
if a > b:
return a
return b
res = my_max(1, 2)
print(res)
def many(a,b,c,d):
res =my_max(a,b)
res1=my_max(res,c)
res2 =my_max(res1,d)
return res2
res = many(11, 22, 33, 44)
print(res)
3.闭包函数
闭:函数内部定义的函数,至少有两层函数
包:内部函数要要使用函数外部的函数名称空间的变量名
def index():
x=555
print(555)
def k():
print('hello', x)
return k
index()
闭包函数就是传参的两种方式!
第一种:
def name(username):
print(username)
name('jerry')
第二种:
比较两个数的大小
def index(a,b):
if a > b:
return a
return b
res = index(121, 233)
print(res)
多次传值:
def outer(a,b):
def my_max():
if a > b:
return a
return b
return my_max
res = outer(11,22)
print(res())
文章来源:https://blog.csdn.net/weixin_49210718/article/details/132737809
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!