首页 > 编程语言 >PYTHON 函数

PYTHON 函数

时间:2022-12-04 11:11:39浏览次数:42  
标签:return 函数 PYTHON sum 参数 print def

1.1 函数

函数是可以反复执行的代码块,具有函数名,参数,返回值。

1.2 定义函数

函数必须先定义后执行。

def 函数名(参数列表):
    函数体
    return 返回值

没的返回数据时,返回None

def circle_area(radius: float) -> float:
    return 3.14 * radius * radius

radius = 15
area = circle_area(radius)
print("半径是{}圆的面积是:{}.".format(radius, area))

1.3 函数的参数

传递参数有多种形式

1.3.1 使用关键字参数

在调用时写上参数的名称。

  • 调用时可以不按定义顺序,指定名称就可以。
  • 如果一个参数用关键字参数,后面的参数都需要用关键字参数
def rect_area(width: float, height: float) -> float:
    return width * height


print(rect_area(width=100,height=30))

1.3.2 参数默认值

在定义函数时为参数指定一个默认值,调用时不传递数据则按默认值计算。

def rect_area(width: float, height: float = 30.0) -> float:
    return width * height


print(rect_area(width=100, height=30))
# 结果同上,height按默认值30计算
print(rect_area(width=100))

1.3.3 可变参数

一个函数可以接收不确定数量的参数。

1.3.3.1 *可变参数

可以传递任意数量的参数(位置参数)

# *args会被包装成一个元组
def calc_sum(*args) -> float:
    print(type(args))  # tuple
    _sum = 0
    for value in args:  # 遍历元组获取里面的值
        _sum += value
    return _sum

print(calc_sum(1,2,3,4,5))

# 如果传递的是一个元组对象,必须解包: *元组对象
print(calc_sum(*(3,4,5)))

对于可变参数后面有普通参数的的调用:

def calc_sum(*args, multiple:int) -> float:
    print(type(args))
    _sum = 0
    for value in args:
        _sum += value
    return _sum * multiple

# 在调用时必须按关键字参数指定其名称
print(calc_sum(1,2,3,4,5, multiple=10))
1.3.3.1 **可变参数

这些参数会被包装成一个字典(关键字参数)

def put_student(**info) -> None:
    print(type(info))  # dict
    for key, value in info.items():
        print("{} -> {}".format(key, value))


put_student(name="张三", sex="男", age=10)

# 如果传递的是字典对象,必须解包: **字典对象
put_student(**{'name': '李四', 'sex': '男', 'age': 10})

1.3.4 强制位置参数

Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。

在以下的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 和 f 要求为关键字形参:

def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

以下使用方法是正确的:

f(10, 20, 30, d=40, e=50, f=60)

以下使用方法会发生错误:

f(10, b=20, c=30, d=40, e=50, f=60)   # b 不能使用关键字参数的形式
f(10, 20, 30, 40, 50, f=60)           # e 必须使用关键字参数的形式

1.4 函数返回值

返回值有三种形式:

  • 无返回值
  • 返回单一值: return 5
  • 返回多个值:return 5,6

1.4.1 无返回值

无返回值实际上返回一个None,表示没有。

Python中的None 是什么?

  • python中的None是一个特殊的常量

  • 它既不是0,也不是False,也不是空字符串。它只是一个空值的对象,也就是一个空的对象

  • None可作为一个对象,该对象的类型为:NoneTye

  • None 表示的含义,更多的是一种不存在,是真正的空,而不是空列表([])的空,也不是空的字符串

def test():
    return
    return None  # 这两个返回意义一样。

1.4.2 返回单一值

def test():
    return 3

1.4.3 返回多个值

多个值之间用逗号分隔,会被打包成元组。

import random

def random_value():
    a = random.randint(0, 100)
    b = random.randint(0, 100)
    return a, b

v = random_value()
print(v, type(v))  # 输出两个值的元组

1.5 递归函数

就是自己调用自己

  • 要有一个出口,防止死循环。(结束条件)
def r_sum(n: int) -> int:
    if n == 1:
        return 1  #出口
    else:
        return n + r_sum(n - 1)

print(r_sum(100))

1.6 匿名函数

就是一个没有名称的函数,所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

匿名函数有许多参数,但只能有一个程序码表达式,然后将结果返回。

lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

匿名函数一般与高阶函数一同使用。

1.6.1 定义匿名函数

lambda:参数1,参数2,... : 一个表达式
f_add = lambda x, y: x + y  # 匿名函数赋值给一个变量,这个变量就是一个函数对象

print(type(f_add))  # <class 'function'>
print(f_add(3,4))

1.7 嵌套函数

默认定义的函数都是全局的,在一个函数内定义函数称为“嵌套函数”

def calc_fun(op):
    # 定义两个嵌套函数
    def add(a, b):
        return a + b

    def sub(a, b):
        return a - b

    # 返回函数对象
    if op == '+':
        return add
    else:
        return sub

f1 = calc_fun('+')
f2 = calc_fun('-')

print(f1(3,3,))  # 6
print(f2(3,3,))  # 0

1.8 高阶函数

1.8.1 filter()过滤函数

filter(function, iterable)

iterable是可迭代对象,函数执行时iterable会被遍历,它的元素逐一传入function函数,function函数返回布尔值,如果为True留下。

返回filter可迭代对象

users = ['Tony', 'Tom', 'Den', 'Alex']
a = filter(lambda x: x.startswith('T'), users)
print(list(a))  # ['Tony', 'Tom']
print(users)  # ['Tony', 'Tom', 'Den', 'Alex']

1.8.2 map()映射函数

map(function,iterable)

iterable是可迭代对象,函数执行时iterable会被遍历,它的元素逐一传入function函数,function函数对传递的元素进行变换, 返回map可迭代对象。

users = ['Tony', 'Tom', 'Den', 'Alex']
a = map(lambda x: x.lower(), users)
print(list(a))  # ['tony', 'tom', 'den', 'alex']

标签:return,函数,PYTHON,sum,参数,print,def
From: https://www.cnblogs.com/three-sheep/p/16949529.html

相关文章

  • Python标准库-Configparser-配置文件解析器
    简介官方文档开发中INI格式的配置文件使用还是有必要的。如果某些配置项需要在运行时由用户来修改指定,比如数据库用户信息等等,这种配置项如果使用INI格式的配置文件来操......
  • Python - Scrapy
    1.安装第三方包pipinstallScrapy2.创建项目#生成文件夹scrapydemo1PSE:\PyProject>scrapystartprojectscrapydemo1NewScrapyproject'scrapydemo1',using......
  • Python的PyQt框架的使用-创建主窗体篇
    Python的PyQt框架的使用-构建环境篇​​一、前言​​​​二、创建主窗体​​一、前言个人主页:​​ζ小菜鸡​​大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习Python的PyQ......
  • Python实现两个excel数据匹配
    Python实现两个excel数据匹配本文结合他人文章写成参考文章:https://blog.csdn.net/u010034713/article/details/110921270https://www.cnblogs.com/puresoul/p/7520198......
  • Python sql转字典
    问题返回给前端需提供键值对格式,原本查询数据库只返回值。 解决创建游标对象时填入参数cursor=pymysql.cursors.DictCursorsql="SELECTuser_id,email,nati......
  • 3、使用 TVMC Python 入门:TVM 的高级 API
    本节将介绍针对TVM初学者设计的脚本工具。开始前如果没有下载示例模型,需要先通过终端下载resnet模型:cdmyscripts/mvresnet50-v2-7-frozen.onnxmy_model.onnx......
  • PYTHON 判断引用路径的类型
    PYTHON判断引用路径的类型如下方法,用于实现在不加载模块的前提下,判断某一个python引用路径是否存在,以及属于什么类型(模块目录,模块文件,类名).用于在一些不便......
  • AI人工智能-python
    AI概念语音合成可将文字信息转化为声音信息语音识别可将语音识别为文字百度ai平台页面熟悉              创建应用     ......
  • sqlserver计算时间差DATEDIFF 函数
    https://www.cnblogs.com/shuilangyizu/p/6296440.htmlDATEDIFF函数[日期和时间]功能返回两个日期之间的间隔。语法DATEDIFF(date-part,date-expr......
  • 字符串-00002-堆上字符串-函数实现
    myString.c,常用函数的实现头文件定义请参考:https://www.cnblogs.com/kxwslmsps/p/16949213.html#include"myString.h"/*****************************************......