python学习-05【函数】

1、初始函数

函数的定义

Python 中使用 def 关键字开头定义函数

python 复制代码
def function_name(parameters):
    function body
    return value
  • function_name:函数的名称(函数名区分大小写)
  • parameters:函数的参数(参数可以可以有一个或多个,也可以没有参数,参数之间通过==逗号( , )==分隔)
  • function body:函数体(需要缩进四个空格或一个 Tab 键)
  • return value:函数的返回值(没有返回值时,可以省略)

在定义函数时,即使没有参数,函数名称后面也必须有一对空 ()。

函数体和函数的返回值相对于 def 关键字必须保持缩进。

python 复制代码
def helloFunction(name):
    print('Hello', name)
helloFunction('Python') #调用函数
函数的返回值

1、如果在函数中只有 return 关键字,后面没有返回值,返回 None。

如果不指定 return 关键字,结果同样会返回 None,即该函数没有返回值。

python 复制代码
def no_value():
    return
print(no_value())

2、Python 中的函数可以返回多个值,而且值的类型也可以不同,当有多个返回值时,默认返回的是一个元组

python 复制代码
def values():
    str1 = 'Python'
    num1 = 2222
    list1 = [1, 2, 3]
    return str1, num1, list1
print(values())

2、函数的参数

位置参数

即定义多少参数就要传入多少参数,并且顺序与类型要一致

关键字参数
python 复制代码
def area(height, width):
    total_area = height * width
    return total_arae
print(area(width = 11, height = 220))

如果传入的关键字参数在形参中没有定义,程序就会出错。

关键字参数的位置顺序对实际输出的结果没有影响,只要在函数调用时指定的是对应的参数即可。

默认参数
python 复制代码
def student(age, name = 'Spring'):
    print(age)
    print(name)
student(8)
  • 默认参数必须定义在所有形参之后
可变参数

1、基于元组可变参数

使用 *parameter 的形式定义函数中的参数,可以接受任意多个实参,并将其放入元组中。

python 复制代码
def print_name(*name):
    print(name)
print_name()
print_name('Spring')
print_name('A', "B")
print_name('Bob', 'Peter', 'Meg')

2、基于字典的可变参数

使用 **parameter 的形式定义函数中的参数。

使用这种方式在调用函数时,必须通过关键字参数的形式来传递参数。

python 复制代码
def student_info(**info):
    print(info)
student_info()
student_info(name = 'Mary')
student_info(name = 'Jack', age = 18)
student_info(name = 'Spring', age = 20, stu_id = 1123)

3、变量的作用域

局部变量
全局变量

通过关键字 global 在函数体内定义的变量也可以被称为全局变量

python 复制代码
str1 = 'ABC'
def var():
    global str1
    str1 = 'DEF'
    print(str1)
var()
print(str1)
# 两个str1输出结果相同

4、内置函数和匿名函数

内置函数

内置函数(BIF)是 Python 提供的函数

https://docs.python.org/zh-cn/3.8/library/functions.html

匿名函数

匿名函数也叫 Lambda 函数,指一种没有名字的函数

  • 程序只需要执行一次,不需要另外定义函数名
  • 需要以函数作为参数,但是函数本身十分简单,且只使用一次

参数可以有多个,使用逗号( , )分隔;

但是表达式只能有一个,即返回一个值。

python 复制代码
def sub(a, b):
    return a - b
print(sub(77, 7))

print(lambda x, y: x - y)

sub = lambda x, y: x- y
print(sub(88, 8))
函数文档

在实际开发中,个人的代码需要和其他人进行衔接,多数的时候需要先阅读文档,帮助理解代码功能和函数。(其意义与代码注释是相同的)

通过 """ """的形式,其中包括函数的功能、参数说明、返回值、日期等;

除了输出函数的返回值外,还可以通过函数调用 __doc__ 获取文档的字符串,即函数文档

python 复制代码
def score(a, b, c):
    """
    	A, B, C's scores
    """
    return a + b + c
print(socre.__doc__)

5、函数的递归

在函数内部可以调用自己。

简单的递归

1、求阶乘:

python 复制代码
def factorial_fun(n):
    if n == 1:
        return 1
   	return n * factorial_fun(n - 1)
num = int(input())
print(factorial_fun(num))

2、斐波那契数列

python 复制代码
def fibonacci_fun(n):
    if n <= 2:
        return 1
   	return fibonacci_fun(n - 1) + fibnacci_fun(n - 2)
num = int(input())
print(fibonacci_fun(num))

3、汉诺塔问题

python 复制代码
def hanoi(n, a, b, c):
    if n == 1:
        print(a, '--->', b)
    else:
        hanoi(n-1, a, c, b)
        print(a, '--->', c)
        hanoi(n-1, b, a, c)
num = int(input())
hanoi(num, 'A', 'B', 'C')
相关推荐
架构文摘JGWZ19 分钟前
Kafka 消息丢失如何处理?
学习
学步_技术32 分钟前
Python编码系列—Python组合模式:构建灵活的对象组合
开发语言·python·组合模式
ac-er88881 小时前
在Flask中处理后台任务
后端·python·flask
ac-er88881 小时前
Flask中的钩子函数
后端·python·flask
Book_熬夜!1 小时前
Python基础(六)——PyEcharts数据可视化初级版
开发语言·python·信息可视化·echarts·数据可视化
我的运维人生1 小时前
利用Python与Ansible实现高效网络配置管理
网络·python·ansible·运维开发·技术共享
毕设木哥1 小时前
计算机专业毕业设计推荐-基于python的汽车汽修保养服务平台
大数据·python·计算机·django·汽车·毕业设计·课程设计
m0_638971342 小时前
ARM概念
python
夜幕龙3 小时前
robomimic基础教程(三)——自带算法
人工智能·python·算法·机器人
linly12193 小时前
python学习笔记目录
笔记·学习