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...

  • 相关阅读:
    读书笔记之理想设计的特征
    一些javascript 变量声明的 疑惑
    LINQ 使用方法
    Google MySQL tool releases
    读书笔记之设计的层次
    EF之数据库连接问题The specified named connection is either not found in the configuration, not intended to be used with the Ent
    转载 什么是闭包
    javascript面向对象起步
    Tips
    数据结构在游戏中的应用
  • 原文地址:https://www.cnblogs.com/52forjie/p/7235348.html
Copyright © 2011-2022 走看看