python第七节(函数)

本文深入探讨Python编程中的函数,包括函数参数的使用、如何设置返回值,以及函数作用域和递归的概念,为Python学习者提供全面理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数

函数参数

'''
函数:封装一个特定功能的代码块
避免重复造轮子,提高代码的复用性
函数如果不进行调用,只会载入内存
只有当函数调用时,才会执行函数体内的代码
'''
def multi_table():
    print("九九乘法表")
multi_table()
"""函数参数"""
def test(b):    # 形参(小号)
    a = 100   # 不可变对象参数,相当于重新赋值
    print('111',a)
a = 1
test(a)  # 实参
print('222',a)
def test1(li):
    li.extend([1,11])       # 可变对象参数传入,改变原有的值
    print('123',li)
li = [1,2,3]
test1(li)
print('234',li)
'''利用函数完成两个数值相加'''
def sum_nums(a,b):
    result = a+b
    print('a',a)
    print('b',b)
    print("{}+{}={}".format(a,b,result))
num1 = int(input("请输入num1:"))
num2 = int(input("请输入num2:"))
sum_nums(num2,num1)    # 位置参数 一一对应
# sum_nums(num1=num1,num2=num2)  # 关键字参数 不受位置影响,只与形参对应有关
def test2(a,b=3):   # 默认值参数 不传为默认值,传了则覆盖
    a = a + b
    print(a,b)
a = 1
# test2(a)
test2(a,10)
# range(1,10).index()会报错
'''*args --> 可传可不传,但是要传-->元组
**kwargs --> 可传可不传,但是要传-->dict字典'''
def test4(*args):
    print(args)  # 传的元组
test4(1,2,3)

def test5(**kwargs):
    print(kwargs)
test5(a=1,b=2,c=3)      # {'a': 1, 'b': 2, 'c': 3}
def test6(a,b,c):
    print(a,b,c)
tu = (1,2,3)
test6(*tu)
a,b,c = (1,2,3)   # 解包

返回值

'''
函数的返回值
return 返回值
当有多个return时,执行不会报错,但是只执行第一个
因为程序在遇到函数体内第一个return 就返回出去了
今天距离20号还有1320号距离春节 5'''
def holiday():
    dis_holiday = 13
    print("距离放假还有:{}".format(dis_holiday))
    return dis_holiday
def spring_fes(dis_holiday):
    dis_spr_fes = dis_holiday + 5
    print("距离春节还有:{}".format(dis_spr_fes))
res = holiday()
print(res)
spring_fes(res)
def test6():
    a,b,c =1,2,3
    return a
    return b
    return c
a,b,c = test6()   # (a,b,c)
print(a)

作用域

'''
函数作用域
'''
# if True:
#     a = 5
# print(a)   # 不影响
# for i in range(3):
#     print("hello")
# print(i)
# def test():
#     b = 5   # 局部变量  # 会报错
# print(b)
# test()
a = 100
def test1():
    print(f'a={a}')  # 当局部没有该变量时,去全部中找该变量
def tset2():
    a = 200
    print(f'a={a}')  # 当局部存在该变量时,则优先局部的
test1()
tset2()
'''
局部变量-->全局变量
global 局部变量名'''
# count = 10
# def test3():
#     print(count)   # 会报错
#     count = 5
# test3()
count = 10
def test3():
    global count
    print(count)
    count = 5
    print(count)
test3()
'''
LEGB
local --> 局部作用域
enclosing--> 夹在函数中间的作用域
global --> 全局作用域
built-in -->内建作用域
1.先从自己所在层级找,如果没有就向外层找
2.只要在某个层内找到,就停止寻找,即使外面有同名的'''
a = int(2.14)  # built-in int()
c = 11  # global
def outer():
    d = 5   # enclosing
    def inner():
        f = 6   # local

函数嵌套

'''
函数的调用
代码读写  从上至下
函数执行完毕会返回到函数调用处  '''
# def test():
#     print('5')
# def test2():
#     print(3)
#     test()
#     print(4)
# def test3():
#     print(1)
#     test2()
#     print(2)
# test3()
def multi_table():
    print("九九乘法表")
def print_tables():
    # i = 0
    # while i < 10:
    #     multi_table()
    #     i += 1	# 十个九九乘法表
    for i in range(10):
        multi_table()
        print(i)
print_tables()   # 十个九九乘法表

递归

'''
递归
5! -->5*4*3*2*1
4! -->4*3*2*1
'''
# i = 1
# res = 1
# while i <= 4:
#     res = res*i
#     i += 1
# print(res)
'''
1.调用自身函数
2.还没有自带的结束条件(设置结束条件)
3.凡是递归可以做到的,循环也可以做
4.递归效率低于循环
'''
def get_nums(num):
    print(num)  # 6*5
    if num >1:
        return num*get_nums(num-1)  # 6*5*4*3*2*1
    else:
        return 1
res = get_nums(6)
print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值