python函数的返回值、嵌套方式以及函数中的变量(一)

简介: python函数的返回值、嵌套方式以及函数中的变量(一)

函数的返回值

Python函数的返回值可以通过使用return关键字来指定。当调用该函数时,会将函数中所有被return语句后面跟着的表达式作为结果返回。

return 自定义函数的返回值

概念:return 把函数内部的数据返回到函数的外面,返回到函数的调用处

1.return + 六大标准数据类型 , 除此之外还可以 返回函数 或者 是类对象

2.return 在执行时,意味着终止函数,后面的代码不执行.

3.如果不定义return返回值,默认返回None

(1) return + 六大标准数据类型,每次只能返回一个数据

def func():
    # return 111
    # return 6.89
    # return "你好帅啊,我爱死你乐"
    # return [1,2,3]                         #如果要返回多个值,将数据放入列表或元祖中,返回个列表或元祖
    # return {"a":1,"b":2}
    return 1,2,3 # 返回元组
res = func()
print(res)

(2) return 在执行时,意味着终止函数,后面的代码不执行.

def func():
    print(1)
    print(2)
    return 3
    print(4)
res = func()
print(res)


后面的4没打印出来

def func():
    for i in range(5):
        if i == 3:
            return 4
        print(i)
res = func()
print(res)

i = 3的时候,返回4,后面的循环就没在执行

abc0b19426b740309b57c92ff9b30f33.png

(3) 如果不定义return返回值,默认返回None

def func():
    pass
    
res = func()
print(res) # None

#注意点 打印的数据和返回的数据不是等价的,返回的数据是可以自定义的;

res = print(1234)
print(res)  # None

没定义返回值,返回None

案例 模拟±*/计算器

"""
功能:   完成计算
参数:   2个数字和运算符
返回值: 计算后的结果
"""
def calc(num1,num2,sign):
    if sign == "+":
        return num1 + num2
    elif sign == "-":
        return num1 - num2
    elif sign == "*":
        return num1 * num2
    elif sign == "/":
        if num2 == 0:
            return "除数不能为零"
        return num1 / num2
    else:
        return "抱歉,超出了我的运算范围."
    
res = calc(3,5,"+")
res = calc(3,5,"-")
res = calc(3,5,"*")
res = calc(3,0,"/")
res = calc(3,0,"&")
print(res)

写函数谨记从三个方面去抓:功能,参数,返回值。这三个方面搞好了,就能写出优秀的函数

函数的变量

####全局变量和局部变量

“”"

1.概念

局部变量:在函数内部定义的变量就是局部变量

全局变量:在函数外部定义的变量 或者在函数内部使用global关键字声明是全局变量

2.作用域:

局部变量的作用范围仅仅在函数的内部,在函数外部无法调用,强制调用报错

全局变量的作用范围横跨整个文件

#作用域:作用范围

#命名空间 : 划分一块区域保存所有数据,以字典的方式存储(变量与值形成映射关系).一共三种.

(1)内建命名空间:解释器启动时创建,直到解释器运行结束,生存周期最长

(2)全局命名空间:文件运行时创建,直到解释器运行结束,生存周期较长

(3)局部命名空间:函数调用时,里面的局部变量才创建,调用结束后即释放,生存周期较短

#命名空间的提出是为了划分和控制变量是否可见,以及生存周期的长短.

#命名空间 创建顺序:(了解)

python解释器启动->创建内建命名空间->创建全局命名空间->创建局部命名空间

#命名空间 销毁顺序:(了解)

函数调用结束后->销毁函数对应的局部命名空间数据->销毁全局命名空间数据->销毁内建命名空间数据

内置的函数,关键字,属性等放到内置命名空间

全局变量 与 局部变量 及 其关键字的使用

#局部变量:函数内部的变量是局部变量,作用域仅在函数内部可见(局部命名空间)

#全局变量:函数外部的变量是全局变量,作用域横跨整个文件(全局命名空间)

#内置函数:内建命名空间

– globals() :返回字典,存放着全局作用域所有内容

– locals() :返回字典,当前作用域所有内容(locals调用之前的变量)

– global :关键字:声明全局变量获修改全局变量

– nonlocal :关键字:修改局部变量(当前函数上一层的局部变量)

LEGB原则(即就近原则找变量)

#找寻变量的调用顺序采用LEGB原则(即就近原则)

B —— Builtin(Python);Python内置模块的命名空间 (内建作用域)

G —— Global(module); 函数外部所在的命名空间 (全局作用域)

E —— Enclosing function locals;外部嵌套函数的作用域 (嵌套作用域)

L —— Local(function);当前函数内的作用域 (局部作用域)

依据就近原则,从下往上 从里向外 依次寻找

3.生命周期:该变量的作用时长

内置命名空间 -> 全局命名空间 -> 局部命名空间 (开辟空间顺序)

内置属性 > 全局属性 > 局部属性 (作用时长:长->短)

“”"

1 局部变量

def func():
    # 定义一个局部变量
    a = 1
    # 获取当前的局部变量
    print(a)
    # 修改一个局部变量
    a = 2
    print(a)
    
func()
# print(a) error

局部变量在函数外部调用报错

2.全局变量

# 定义一个全局变量
b = 10
# 获取当前的全局变量
print(b)
# 修改一个全局变量
b = 20
print(b)

def func():
    print(b)
func()

全局变量,函数内部外部都能调用

3.函数内部定义全局变量

在函数内部要想定义全局变量,使用global关键字

def func():
    global c
    c =30
func()
print(c)

4.函数内部修改全局变量

需要先用global关键字修饰

d = 50
def func():
    global d
    d = 51
func()
print(d)

总结:global的使用

如果当前不存在全局变量,可以在函数内部通过global关键字来定义全局变量

如果当前存在全局变量,可以在函数内部通过global关键字来修改全局变量

函数名的使用

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

def func():
    print( "我是func函数")

(1)动态创建

a = 1
print(a)
a = func
a()

如下,通过函数名赋值的方式,相当于创建了与func功能一样的a函数

(2)动态销毁

del a
#a()
#func()

(3)当参数传递

def func2():
    return "我是func2函数"

def func1(f):
    return f() # "我是func2函数"

res = func1(func2)
print(res)

(4)作为值返回

def func3():
    print( "我是func3函数" )
    
def func4(f):
    return f
res = func4(func3)    
print(res)
res()

print("<===>")

返回的是个函数名,函数对象,再调用,打印出func1()函数的输出

(5)函数名可以作为容器类型数据的元素

lst = [func,func3]
for i in lst:
    i()

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

变量可以怎么用,函数就可以怎么用

__doc__ 或者help查看文档。可以给自定义的函数写说明文档,告诉别人怎么更方便的使用,__doc__可以帮我们获取到函数内部自定义的文档
一般是三个引号包裹着的注释,__doc__只能查看到三个引号注释的部分

help查看的更全面,包含函数名和以及定义的参数

def big_chang_cishen(something):
    """
    功能: 教你怎么吃大肠
    参数: 吃的内容
    返回值: 是否满意
    """
    print("把{}洗一洗".format(something))
    print("直接找肠子头,放嘴里,吸一下")
    print("擦擦嘴,满意的放下肠子头")
    return "吃完了,真好吃~"
    
big_chang_cishen("生肠子")
# 方法一
res = big_chang_cishen.__doc__
print(res)
# 方法二
help(big_chang_cishen)

python函数的返回值、嵌套方式以及函数中的变量(二):https://developer.aliyun.com/article/1495714

相关文章
|
7天前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
2天前
|
Python
python的时间操作time-函数介绍
【10月更文挑战第19天】 python模块time的函数使用介绍和使用。
13 4
|
3天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
11 1
|
3天前
|
安全 数据处理 数据安全/隐私保护
python中mod函数怎么用
通过这些实例,我们不仅掌握了Python中 `%`运算符的基础用法,还领略了它在解决实际问题中的灵活性和实用性。在诸如云计算服务提供商的技术栈中,类似的数学运算逻辑常被应用于数据处理、安全加密等关键领域,凸显了基础运算符在复杂系统中的不可或缺性。
7 0
介绍返回值 | Python从入门到精通:高阶篇之七
本节重点介绍了返回值是什么,以及return、break、continue的区别。
介绍返回值 | Python从入门到精通:高阶篇之七
|
13天前
|
存储 程序员 开发者
Python编程基础:从入门到实践
【10月更文挑战第8天】在本文中,我们将一起探索Python编程的奇妙世界。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。我们将从Python的基本概念开始,然后逐步深入到更复杂的主题,如数据结构、函数和类。最后,我们将通过一些实际的代码示例来巩固我们的知识。让我们一起开始这段Python编程之旅吧!
|
1天前
|
弹性计算 安全 小程序
编程之美:Python让你领略浪漫星空下的流星雨奇观
这段代码使用 Python 的 `turtle` 库实现了一个流星雨动画。程序通过创建 `Meteor` 类来生成具有随机属性的流星,包括大小、颜色、位置和速度。在无限循环中,流星不断移动并重新绘制,营造出流星雨的效果。环境需求为 Python 3.11.4 和 PyCharm 2023.2.5。
20 9
|
7天前
|
设计模式 开发者 Python
Python编程中的设计模式:从入门到精通####
【10月更文挑战第14天】 本文旨在为Python开发者提供一个关于设计模式的全面指南,通过深入浅出的方式解析常见的设计模式,帮助读者在实际项目中灵活运用这些模式以提升代码质量和可维护性。文章首先概述了设计模式的基本概念和重要性,接着逐一介绍了几种常用的设计模式,并通过具体的Python代码示例展示了它们的实际应用。无论您是Python初学者还是经验丰富的开发者,都能从本文中获得有价值的见解和实用的技巧。 ####
|
14天前
|
机器学习/深度学习 数据采集 数据挖掘
探索Python编程的奥秘
【10月更文挑战第7天】本文将带你走进Python的世界,探索其背后的逻辑与魅力。我们将从基础语法开始,逐步深入到函数、面向对象编程等高级特性,最后通过实际项目案例,让你体验Python的强大与便捷。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启发。
|
15天前
|
IDE 开发工具 Python
Python 编程入门:打造你的第一个程序
【10月更文挑战第6天】编程,这个听起来高大上又充满神秘感的领域,其实就像学习骑自行车一样。一开始你可能会觉得难以掌握平衡,但一旦你学会了,就能自由地穿梭在广阔的道路上。本文将带你走进 Python 的世界,用最简单的方式让你体验编写代码的乐趣。不需要复杂的理论,我们将通过一个简单的例子——制作一个猜数字游戏,来实践学习。准备好了吗?让我们开始吧!