Python基础篇--函数简介

python函数

    python中函数有两种,一种是内置函数,一种是自定义函数。这里不晓得有没有大牛知道为什么内置函数可以直接调用,没见在哪里定义了。另外一种是自定义函数,函数的定义方式如下,关键字def后面跟空格,再跟函数名,参数,函数体,函数名的命名可以使用posix命名或者小驼峰命名,函数定义了,但是不会自发执行函数体中的内容,只有在程序中显示的调用了函数才会执行函数体中的内容。

     定义函数   

        def  func(params):   #必须带:并且:后面必须为代码块,切代码块不能为空

                pass

     调用函数

         func(needParams) #调用函数直接用函数的方法名即可,且当参数不是收集参数时,实参必填

     函数中参数的作用域

         对于全局变量,函数可以自行调用,但是函数内部的变量则只能在内部使用,除非定义成全局变量,globals()和locals()为           两个内置函数,调用他们会返回全局参数的字典和局部参数的字典。对于变量,没有做特殊定义,只能局部变量在局部和           其内部调用,总之是只能从里面访问外面不能从外面访问里面。例外:函数内部的变量可以用global声明成全局变量

     函数中的参数:

        ·普通参数:就是一般的参数,可以根据位置来传参也可以通过关键字来传参

            def  commonArgs(name,age):pass

            commonArgs('zhangsan',20)     or     commonArgs(name = 'lisi' ,20)

        ·默认参数:也叫关键字参数,在定义函数时候给参数一个默认的值,所以这个参数可以传参也可不传参,

             def  defaultArgs(name,age = 18):pass

            defaultArgs('zhangsan')    or defaultArgs('zhangsan',age = 20)

        ·收集参数:在不确定有多少个传入参数的时候可以使用收集参数,收集参数又分普通收集参数和关键字收集参数

            def  collectionCArgs(*args):pass  #普通收集参数       def collectionDArgs(**args):pass #关键字收集参数

            collectionCArgs()  or    collectionCArgs('1',1)        collectionDArgs()  or collectionDArgs(name ='1',age=2)

     对于参数,用的最多的是混合使用,混合使用参数,一定是普通参数在前面,默认参数(关键字参数)在后面,当普通收集参数后面有普通参数时,给这个 普通参数传值一定要用关键字传值,

           def  egArgs(name,age,*args,hobby,sex='man',**othArgs,like = 'dodo'):pass

在这个函数中,前面都是普通参数,从sex参数后面都是关键字参数,顺序不能错,且给在收集参数后面的参数传值时一定要用关键字传值

           egArgs('张三',18,1,2,'33',hobby='jump',height='180',like='toto')


递归函数:函数的自我调用,优点:代码逻辑清晰,更贴近逻辑  。缺点:消耗性能,

    在python中,函数的递归不会导致程序崩溃,但是会抛出异常,python中限制了递归的深度,常见的递归有斐波拉契数列,二分查找算法,八皇后问题,汉诺塔问题,下面我就简单的写下汉诺塔的递归调用(伪代码),对于汉诺塔游戏有不清楚的可以自己去百度下怎么玩

    设计原型:柱子A,柱子B,柱子C ,碟子 n(不确定的正整数)

    把n个碟子从A -> C ,对于这样的问题,看起来很复杂,其实需要我们一层层的揭开就好理解了,就像高中数学,我们从一般推理出特殊,假定只有2个盘子,我们的做法是 A->B, A->C, B->C, 那么如果有三个盘子呢? 我们做法其实也三步 1:把A上的两个盘子移到b上,2:把A上的最后一个盘子移到C上,3:把B上的两个盘子移到C上,

    那么现在假定有n个 def  gameNuo(n,A,B,C): 要把n个盘子从A移动到C借助B

        1:把n-1个盘子从A移动到B借助C gameNuo(n-1,A,C,B)

        2:把A上的一个盘子移动到C上

        3:把B上的n-1个盘子移动到C上借助A gameNuo(n-1,B,A,C) ,至此盘子移动完毕,随着n的减少,当n = 2时就按照已有的程序执行,这就是递归,根据特殊情况推出一般情况

        def gameNuo(n,A,B,C):

               if n == 1 :

                    print(A,'->',C)

               gameNuo(n-1,A,C,B)

               pring(A,'->',C)

               gameNuo(n-1,B,A,C)

            

        

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值