​​​​Python基础学习--(7)

本文深入探讨了Python中的函数概念,包括函数的基本定义、参数传递、返回值处理、默认参数设置、参数类型总结等内容,并通过实例解释了变量作用域及递归函数的应用。

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

一、引言

        Python作为一门流行的编程语言,其前景一直是编程界的热门话题。Python简洁的语法、强大的标准库和丰富的第三方库使其在众多领域都有广泛的应用,从网站开发、数据分析、人工智能到科学计算等。随着数据科学和人工智能的兴起,Python的需求持续增长,成为了许多初学者和转行人士的首选语言。 

        根据业界调查,Python的流行度持续位于顶尖位置。技术发展的趋势表明,Python在未来仍然是一个值得投资学习的语言,不仅因为其在当前的技术市场中的需求,还因为它在教育、科研和自动化等领域的扩展性。

二、第七章

 1.函数

# Author : zzd
# Date : 2016/3/4 17:22

# 函数
"""
什么是函数:
    函数是执行特定任务和完成特定功能的一段代码
为什么需要函数:
    提高代码可复用性
    隐藏实现细节
    提高可维护性
    提高可读性
函数的创建:
    def 函数名([输入参数]):
        函数体
        [return xxxx]
"""

"""
    在函数调度过程中,进行参数的传递
    如果是不可变对象,在函数体的修改不会影响实参的值
    如果是可变对象,在函数体的修改会影响到实参的值
"""
def cale(a,b): # a,b为形参
    return a + b

if __name__ == '__main__':
    a = cale(10,20) # 10,20 是实参
    print(a)
    b = cale(b=100,a=10) # 指定参数赋值
    print(b)

2.函数返回值

# Author : zzd
# Date : 2016/3/4 18:55
# 函数返回值
"""
函数返回值:
    如果函数没有返回值 return可以不写
    函数的返回值,如果是一个,直接返回类型
    函数返回值,如果是多个,返回结果为元组
"""
# 函数返回多个值,结果为元组
def fun(num):
    odd = []
    even = []
    for i in num:
        if i % 2 == 0 :
            odd.append(i)
        else:
            even.append(i)
    return odd,even

if __name__ == '__main__':
    lists = [10,23,45,23,85,12]
    print('元组:',fun(lists))
    # 函数返回多个值,可以使用下标取值
    print('列表1',fun(lists)[0])
    print('列表2',fun(lists)[1])
    # for i,j in fun(10):
    #     print(i)
    #     print(j)

3.函数默认值

# Author : zzd
# Date : 2016/3/4 19:49


def fun(a,b=20):
    # 这里的为end='\t'也是给end指定传参,这样就不会使用默认值end='\n'
    # def print(self, *args, sep=' ', end='\n', file=None):
    print('begin1',end='\t')
    print('beigin2')
    return a+b

if __name__ == '__main__':
    a = fun(10)
    print('未给b传参,则b使用默认值',a)
    b = fun(10,30)
    print('给a,b指定传参,则默认值失效',b)

4.位置参数和关键字参数

# Author : zzd
# Date : 2016/3/4 20:01

# 函数得参数定义
"""
个数可变得位置参数:
    定义函数时,可能无法事先确定传递的位置实参的个数时,使用可变的位置参数
    使用*定义个数可变的位置形参
    结果为一个元组
个数可变的关键字形参:
    定义函数时,无法事先确定传递的关键字实参的个数时,使用可变的关键字形参
    使用**定义个数可变的关键字形参
    结果为一个字典
"""
def fun1(*args):
    print(args,type(args))

def fun2(**args):
    print(args,type(args))

if __name__ == '__main__':
    fun1(10,20,30)
    fun2(a=10,b=20,c=30)

5.参数总结

# Author : zzd
# Date : 2016/3/4 21:07

# 参数总结

def fun(a,b,c):
    print('a={0},b={1},c={2}'.format(a,b,c))

def fun2(a,b,c,d):
    print('a={0},b={1},c={2},d={3}'.format(a, b, c,d))
if __name__ == '__main__':
    fun(10,20,30) # 位置传参
    fun(a=10,b=20,c=30) # 关键字传参
    lst = [10,20,30]
    fun(*lst) # 使用lst传参的时候,需要使用*,将列表中的元素依次传给函数fun()
    dic = {'a':10,'b':20,'c':30}
    fun(**dic)

6.变量的作用域

# Author : zzd
# Date : 2016/3/4 21:31

# 变量的作用域
"""
变量的作用域:
    程序代码能访问该变量的区域
    根据变量的有效范围可分为:
        局部变量:
            在函数内定义并使用的变量,只有在函数内部有效,
            局部变量使用global声明,这个变量就会变成全局变量
        全局变量:
            函数体外定义的变量,可作用于函数内外

"""
b = 'hello python'
def fun():
    a = 'hello word'
    global c
    c = 'hello java'
    print('局部变量',a)
    print('global局部变量转全局变量',c)
if __name__ == '__main__':
    print('全局变量', b)
    fun()
    # global将局部变量转为全局变量,定义在fun()函数中,需要先调用fun()函数,才能使用全局变量c
    print('global局部变量转全局变量',c)

 7.递归函数

# Author : zzd
# Date : 2016/3/4 21:48

#递归函数
"""
什么是递归函数?
    如果在一个函数的函数体内调用了该函数本身,这个函数就成为递归函数
递归的组成部分?
    递归调用与递归终止条件
递归的调用过程?
    每递归调用一次函数,都会在栈内存分配一个栈帧
    每执行完一次函数,都会释放相应的空间
递归的优缺点?
    缺点:占用内存多,效率底下
    优点:思路和代码简单
"""

def fun(n):
    if n == 1:
        return 1
    else:
        return n * fun(n-1)


if __name__ == '__main__':
    print(fun(6))

 8.斐波那契

# Author : zzd
# Date : 2016/3/4 22:09

# 斐波那契
"""
                                                fun(6)
                          fun(5)                                      fun(4)
              fun(4)                  fun(3)                  fun(3)              fun(2)
      fun(3)          fun(2)  fun(2)          fun(1)    fun(2)        fun(1)        .
fun(2)     fun(1)        .       .              .         .             .           .
.           .            .       .              .         .             .           .
.           .            .       .              .         .             .           .
1           1            1       1              1         1             1           1
"""
def fun(n):
    if n == 1:
        return 1
    elif n == 2:
        return 1
    else:
        return fun(n-1) + fun(n-2)

if __name__ == '__main__':
    print(fun(6))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值