python局部变量获取_Python 基础之返回值与函数使用与局部变量和全局变量locals() 和 globals()...

本文详细介绍了Python中的函数返回值,包括不同数据类型的返回,以及return的使用规则。此外,还讨论了函数的使用,如作为变量赋值、作为容器类型数据的元素、作为参数和返回值。接着,讲解了局部变量和全局变量的概念及如何获取和修改。最后,探讨了locals()和globals()函数,用于获取当前作用域和全局变量的信息。
摘要由CSDN通过智能技术生成

一.函数的返回值return

return:自定义返回值,返回到哪里?返回到函数的[调用处]1.return后面可以跟上六个标准数据类型,除此之外,可以跟上 类对象,函数,如果不写return,默认返回None2.return如果执行了return,意味着,return后面的所有代码,通通不执行,函数终止了

#(1)return后面的数据类型

#例:

def func():

#return 1        #整型

#return 3.14     #浮点型

#return True     #bool类型

#return 4j       #复数

#return [1,2,3,4]  #列表

return {"a":1,"b":2} #字典

res = func() # res = {"a":1,"b":2}

print(res)

#(2)如果不写return,默认返回None

def func():

a = 1

res = func()

print(res)  #None

#(3)执行完return之后,函数立刻终止,后面的代码不执行

#例:

def func():

print("执行到1")

print("执行到2")

return 1

print("执行到3")

print("执行到4")

return 2

res = func()

print(res)

结果:

执行到1

执行到2

1

#(4)计算器

#例:

print("")

def calc(sign,num1,num2):

if sign == "+":

res = num1 + num2

elif sign == "-":

res = num1 - num2

elif sign == "*":

res = num1 * num2

elif sign == "/":

if num2 == 0:

return "大兄弟,除数不能为0"

res = num1 / num2

else:

return "不会,别问我!!!!!!你是个有趣的灵魂."

return res

res2 = calc("^",5,0)

print(res2)

print("=============")

res3 = calc("+",5,32)

print(res3)

结果为:

不会,别问我!!!!!!你是个有趣的灵魂.

=============

37

二.函数的使用

#python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为返回值,叫第一类对象,其他语言功能有限

#例:

def func():

print(1)

#输出:1

1.函数名是个特殊的变量,可以当做变量赋值

#变量的赋值操作

func2 = func

func2() #func()

#动态的销毁变量

del func2#del关键字 用来删除变量的

#func2() #error

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

print("<=============>")

def func1():

print(1)

def func2():

print(2)

def func3():

print(3)

def func4():

print(4)

#也可以这样:法一:

#lst = [func1(),func2(),func3(),func4()]

#for i in lst:

#     i

结果为:

1

2

3

4

#法二:

lst = [func1,func2,func3,func4]

for i in lst:

#print(i)

i()  #函数的调用

结果为:

1

2

3

4

3.函数名可以作为函数的参数

#例1:

def func(a): #a = func2

res = a()

print(res)

def func2():

return 123

func(func2)

#结果解析:

#func2 => 123 => res = 123

4.函数名作为函数的返回值

#例:

def func(a): #a =>

return a

def func2():

return 456

#函数的调用

res = func(func2) #func2是一个函数地址

print(res)   #的地址

total = res() #res() ==> func2()

print(total)

结果为:

456

#__doc__或者help查看文档#(1)help#help (print)#(2)__doc__魔术属性res = print.__doc__print(res)

#(3)自定义函数文档

print("-==================")

def kao_qiezi(qimin):

'''

功能:告诉你如何做茄子

参数:是一个器皿

返回值:返回烧烤状态

'''

print("从中间抛开,扔到烧烤架子上面")

print("扔胡椒面,扔孜然,扔蒜蓉,扔香菜")

print("用一个%s来盛放" %(qimin))

return "这个茄子做好了"

kao_qiezi("盘")

print("====-------=======")

help(kao_qiezi)

print('4567==============')

res =kao_qiezi.__doc__

print(res)

结果为:(第一个输出函数的结果,第二和第三输出都是帮助文档内容)

从中间抛开,扔到烧烤架子上面

扔胡椒面,扔孜然,扔蒜蓉,扔香菜

用一个盘来盛放

====-------=======

Help on function kao_qiezi in module __main__:

kao_qiezi(qimin)

功能:告诉你如何做茄子

参数:是一个器皿

返回值:返回烧烤状态

==================

功能:告诉你如何做茄子

参数:是一个器皿

返回值:返回烧烤状态

三.局部变量 与 全部变量

局部变量:在函数内部声明的变量就是局部变量全局变量:在函数外部声明的变量或用global关键字在函数内部声明的变量作用域:作用的范围局部变量:作用范围在函数的内部全局变量:作用范围横跨整个文件

1.局部变量的获取和修改

def func():

a = 1

#获取局部变量

print(a)

#修改局部变量

a = 2

print(a)

func()

2.全局变量的获取和修改

#例1:

c = 15

#获取

#修改

c = 78

print(c)

#在函数内部通过global修改全局变量

def func():

#如果不加global c只能获取 不能修改#加了global c告诉系统在函数内部允许修改全局变量c

global c

print(c)

c = 90

func()

print("======全局变量=====")

print(c)

结果:

78

78

======全局变量=====

90

#例2:

#在函数内部通过global 定义全局变量

def func():

global ff

ff = 908

print(ff)

func()

print(ff)

输出:

908

908

python特有:如果外部存在该全局变量,那么利用golbal关键字,可以允许在函数内部修改全局变量如果外部不存在该全局变量,那么利用global关键字,可以允许在函数内部定义全局变量在使用global关键字的时候,一般写在函数内部的第一行

四.locals()和globals()

#locals和globals

1.locals获取当前作用域的所有变量

locals如果在函数外面,获取locals()返回值打印之前,所有的内容locals如果在函数的里面,获取locals调用之前,所有的内容

#例1:

#获取打印返回值之前的所有内容

a = 10

b = 20

res = locals()

c = 20

print(res)

d = 30

运行后可知d没有被存到locals()的内存中c是有的,如下为res的打印,是一个字典,没有d的键值对:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.sourcefileloader object at>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'C:/pystu/pystudy/Knight/test.py', '__cached__': None, 'a': 10, 'b': 20, 'res': {...}, 'c': 20}

#例2:

#获取locals调用之前的所有的内容

def func():

f1 = 11

f2 = 12

res = locals()

f3 = 13

print(res)

func()

输出的结果:(f3没有到res内存中的)

{'f2': 12, 'f1': 11}

2.globals只获取全局变量(无论在函数内外都只获取全局变量)

globals如果在函数的外面,获取globals()返回值打印之前,所有内容globals如果在函数的里面,获取globals调用之前,所有的内容

#例1:

a = 15

b = 15

res = globals()

c = 26

print(res)

d =27

#res的结果中,有c没有d

#例2:

z1 = 5

z2 = 6

def func():

f1 = 1

f2 = 2

f3 = 3

res = globals()

f4 = 6

print(res)

z4 = 8

func() #res = globals()

z3 = 7

#因为f1,f2,f3,f4是局部变量所以都没有,然后是获取打印之前的所以没有z3

3.globals动态创建全局变量

globals返回的是系统的 全局命名空间的字典 在空间里面放的全局变量

#例:

dic = globals()

print(dic,type(dic))

dic['wangwen'] = 188

print(dic['wangwen'])

#已经在dic字典中了

#例2:

#globals 可以批量创建全局变量

def func():

res = globals()

for i in range(5):

res["a%d" % (i)] = i

'''

"a%d" % (i) #字符串的格式化

res['a0'] = 0

res['a1'] = 1

res['a2'] = 2

res['a3'] = 3

res['a4'] = 4

'''

func()

print(a0)

print(a1)

print(a2)

print(a3)

print(a4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值