zoukankan      html  css  js  c++  java
  • 函数

    1:为什么要用函数?

     代码冗余

    可读性差

    函数的定义:

    定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。

       def 是固定的,不能变,必须是连续的def三个字母,不能分开。。。它们要相亲相爱的在一起。

       空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。

       函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能

       括号:是必须加的,先别问为啥要有括号,总之加上括号就对了!

    注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

    调用:就是 函数名() 要记得加上括号,好么好么好么。

    函数的返回值用return返回的。

    def name():
        n=o
        for i in range(5):
            n+=1
         return(n)
    my_name=name
    print(my_name)

    返回值会有很多种情况为NONE

    你return的数值不对等等。

    2.参数

    分为:位置参数,默认参数,和动态参数。

    位置参数:是指前面的形参,是按照下面的实参来变化的参数,下面的位置变化,会直接影响上面的变化例如:

    def my_info(name,age)
    
            print(name,age)
    
    my_info('panyu','18')
    答案:是panyu,18
    
    
    def my_info(name,age)
        print(name,age)
    
    my_info(18,'panyu')
    答案:18  panyu

    默认参数:是指实参后面直接定义一个a=10或者别的b=20的参数,直接上面形参可以直接调用

    1.def my_name(name,age):
               2.  print(name,age)   
    
    
    3.my_name(name=20,age=10)
    4.i=my_name 答案:
    20 10

    如果上面形参也定义了,name=10,还是会以实参为主,这里会涉及到一个程序运行的先后问题,

    程序首先运行到def 函数时候会直接跳到实参那一行,调用实参的数据后,再从def函数开始运行,运行完成后会有一个值得返回,

    这个值才是最终结果。参照:首先程序运行到1时,会直接跳过2,直接拿3中的数据,再返回1运行,再经过2,把值调出来,后面赋予i.

    3,动态参数。

    分为1,*args,2**kwargs.

    1,*args 函数能把实参的数据,多余的会在最后添加一个元组,把剩余的全部添加进去。

    def my_name(a,b,*args):
            print(a,b,args)
    
    my_name(2,35,6,7,8)
    答案:2 35 (6,7,8)

    这个显示出来的就是用元组集合在一起。

    2,**kwargs,是为了默认函数而创建的,当实参a=1 或者b=2时,就可以用**kwargs。

    def my_name(a,b,**kwargs):
            print(a,b,kwargs)
    
    my_name(2,35,c=1,d=2,e=3)
    答案:2,35{'c':1,'d':2,'e':3}
    可以看出用**kwargs的时候,就会形成一个字典,把默认参数的数据发送进去。

    3,这里有一个先后的问题,如果一个程序里,既有默认函数,位置函数,还有动态函数('args,**kwargs),那他们的先后顺序是怎么样的。

    def my_name(a,b,*args,**kwargs)
            print(a,b,args,kwargs)
    myname(1,2,3,4,5,6,7,8,c=1,d=2,e=3)
    答案:1 2 (3,4,5,6,7,8,) {'c':1,'d':2,'e':3}

    他们的先后顺序是位置参数,*args,,默认参数,最后才是**kwargs...

  • 相关阅读:
    python发送邮件
    常用的排序算法
    关于前端ajax请求url为何添加一个随机数
    RabbitMQ消息队列
    shell编程基本语法和变量
    第70课 展望:未来的学习之路(完结)
    第69课 技巧:自定义内存管理
    第68课 拾遗:让人迷惑的写法
    第67课 经典问题解析五
    第66课 C++中的类型识别
  • 原文地址:https://www.cnblogs.com/52forjie/p/7235348.html
Copyright © 2011-2022 走看看