python--函数的返回值、函数的参数

简介: python--函数的返回值、函数的参数

函数的返回值


特性:

  • 减少重复代码
  • 使程序变的可扩展
  • 使程序变得易维护

函数名:命名规则和变量一样

函数的返回值:

return, 函数执行完毕. 不会执行后面逻辑

  • 如果函数中不写return返回None
  • 只写return 返回None
  • return 返回值. 返回一个值
  • return 值1, 值2,... 返回多个值. 调用方接收到的是元组

遇到return结束函数里的语句,下面的不会执行

没有return,返回None

def foo():
    print('foo')
foo  # 表示是函数
foo()  # 表示执行foo函数
def sayhi():  # 函数名
    print("Hello, I'm nobody!")
sayhi()  # 调用函数

结果:

Hello, I'm nobody!

之前写的乘法是这样的

a, b = 5, 8
c = a ** b
print(c)

改成函数之后是这样的

a, b = 5, 8
# 改成用函数写
def calc(x, y):
    res = x ** y
    return res  # 返回函数执行结果
c = calc(a, b)  # 结果赋值给c变量
print(c)

函数和过程

函数有return 过程没有return

# 函数
def func1():
    print('in the func1')
    return 0
# 过程
def func2():
    print('in the func2')
x = func1()
y = func2()
print('from func1 return is %s' % x)
print('from func2 return is %s' % y)

结果:

in the func1
in the func2
from func1 return is 0
from func2 return is None
import time  # 导入time模块
def logger():  # 定义了函数名为logger
    time_format = '%Y-%m-%d %X'  # 时间格式,Y年m月d日X时分秒
    time_current = time.strftime(time_format)  # time.strftime引用上面的时间格式
    with open('ccc.txt', 'a+') as f:
        f.write('%s end action\n' % time_current)  # 将日期时间和end action写入到f里
def aaa():
    print('in the test1')
    logger()
def bbb():
    print('in the test2')
    logger()
def ccc():
    print('in the test3')
    logger()
aaa()
bbb()
ccc()

结果:

in the test1
in the test2
in the test3
ccc.txt里写入
2020-06-15 22:17:37 end action
2020-06-15 22:17:37 end action
2020-06-15 22:17:37 end action
def test():
    print('in the test')
    return 0
    print('end test')
test()

结果:

in the test
# 遇到return结束函数里的语句,下面的不会执行
def test():
    print('in the test')
    return 0
x = test()
print(x)

结果:


         

x=test()先执行函数里的内容,最后将函数里的返回值赋给x

def test():
    print('in the test')
    return 1
print(test())  # 相当于x=test()  print(x)

结果:

in the test
1

没有 return 返回 None

def test():
    print('in the test')
x = test()
print(x)

结果:

in the test
None
def test1():
    print('in the test1')
def test2():
    print('in the test2')
    return 0
def test3():
    print('in the test3')
    return 1, 'hello', {'name': 'zouzou'}
    return test2
x = test1()
y = test2()
z = test3()
print(x)
print(y)
print(z)

结果:

in the test1
in the test2
in the test3
None
0
(1, 'hello', {'name': 'zouzou'})

先执行x,y,z,在打印他们的返回值


函数的参数


  • 关键字参数不能写在位置参数前面(定义函数时)
  • 参数组不能在位置参数和关键字参数前面
  • 默认参数放在最后面

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

def test(x, y):  # x,y叫形参
    print(x)
    print(y)
test(2, 4)  # 位置参数,实参

         
def test(x, y=3):  # y为默认参数
    print(x)
    print(y)
test(2)


参数组


*args接收的位置参数,转换成元组的形式,没有传参返回空元组

**kwargs接收的关键字参数,转换成字典的形式,没有传参返回空字典

def test(**kwargs):  # 参数组,接收的参数不确定时用**
    print(kwargs)
test()

结果:

{}
def test(*args):  # 参数组,接收的参数不确定时用*
    print(args)
test()

结果:

()
def test(x, *args):
    print(x)
    print(args)  # 打印的是一个元组
test(2, 4, 6, 8)
test(*[6, 8, 9, 45, 5])  # args=tuple[6,8,9,45,5]

结果:

2
(4, 6, 8)
6
(8, 9, 45, 5)
def test(**kwargs):  # 参数组,接收的参数不确定时用*  
    print(kwargs)  # 打印的是一个字典
    print(kwargs['name'])
    print(kwargs['age'])
    print(kwargs['job'])
test(name='zou', age=18, job='IT')  # 接收的是关键字参数

结果:

{'name': 'zou', 'age': 18, 'job': 'IT'}
zou
18
IT

相关文章
|
18天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
123 67
|
12天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
38 18
|
3天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
30 8
|
19小时前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
13天前
|
Python
Python中的函数
Python中的函数
28 8
|
20天前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
27天前
|
Python
Python中的`range`函数与负增长
在Python中,`range`函数用于生成整数序列,支持正向和负向增长。本文详细介绍了如何使用`range`生成负增长的整数序列,并提供了多个实际应用示例,如反向遍历列表、生成倒计时和计算递减等差数列的和。通过这些示例,读者可以更好地掌握`range`函数的使用方法。
40 5
WK
|
1月前
|
Python
Python数返回值
在Python中,函数可以通过`return`语句返回一个值或多个值(通过元组)。返回值可以是任何数据类型,如整数、字符串、列表、字典等。如果没有`return`语句或返回`None`,函数将返回`None`。多个值通过返回元组并解包来实现。函数中的多个`return`语句会导致函数在执行到第一个时立即结束。
WK
18 4
|
1月前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。
|
1月前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
33 2