python学习-05【函数】

1、初始函数

函数的定义

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

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

在定义函数时,即使没有参数,函数名称后面也必须有一对空 ()。
函数体和函数的返回值相对于 def 关键字必须保持缩进

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

1、如果在函数中只有 return 关键字,后面没有返回值,返回 None。
如果不指定 return 关键字,结果同样会返回 None,即该函数没有返回值。

def no_value():
    return
print(no_value())

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

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

2、函数的参数

位置参数

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

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

如果传入的关键字参数在形参中没有定义,程序就会出错。
关键字参数的位置顺序对实际输出的结果没有影响,只要在函数调用时指定的是对应的参数即可。

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

1、基于元组可变参数

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

def print_name(*name):
    print(name)
print_name()
print_name('Spring')
print_name('A', "B")
print_name('Bob', 'Peter', 'Meg')

2、基于字典的可变参数

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

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 在函数体内定义的变量也可以被称为全局变量

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 函数,指一种没有名字的函数

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

参数可以有多个,使用逗号( , )分隔;
但是表达式只能有一个,即返回一个值。

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__ 获取文档的字符串,即函数文档

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

5、函数的递归

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

简单的递归

1、求阶乘

def factorial_fun(n):
    if n == 1:
        return 1
   	return n * factorial_fun(n - 1)
num = int(input())
print(factorial_fun(num))

2、斐波那契数列

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、汉诺塔问题

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')
  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值