zoukankan      html  css  js  c++  java
  • python第三天

    函数

                  1).调用函数

                                  a)调用一个函数需要知道函数名和参数,通过help(函数名)可以查看函数的帮组信息,如果调用函数时传入的参数数量不对或者参数的类型不对,都会报TypeError错误,但报错的具体信息不同

                             

                                b)数据类型转换函数  int(), 转换为整数   str()  转换为字符串    float(), 转换为浮点数   bool() 转换为布尔型数据True  False

                                     

                                  c) 函数名其实就是一个指向函数的引用,完全可以把函数名赋给一个变量,就相当于给函数起了一个别名

                                         

                  2)定义函数   

                                   a)函数定义 ,要调用函数必须先把函数导入进来, from  路径/文件名 import 函数名      from clu2 import my_abs

                                   

        def my_abs(x):
          if x>=0:
              return x
          else:
              return -x    //return 表示返回None  即return None 

                                b)空函数   知识想先定义一个函数,什么也不做,可以通过pass语句

                                   def pop():

                                          pass

                                 c)改进自定义取绝对值函数,使得当调用函数时传入错误的类型参数,会有相应的提示信息(只允许传入整型或浮点型)

                                      isinstance(obj,class_or_tuple) 这个函数主要用来判断某个数据是不是属于指定类型集合,如果是就返回True 否则False

                                       

                              d)python中函数返回多个值(其实就是返回一个tuple,还是一个值)

                                     

                                       函数返回多个值

                                  

                                其实返回的是一个tuple,如图所示

                                

           3)函数参数 

                              a)函数参数有多少种  默认参数、可变参数、关键字参数、位置参数

                                           位置参数:调用函数时,pow(2,4)传入的值按照位置顺序赋给参数x和y

                                              

                                         默认参数:调用函数时,可以不传入值(pow(2)),参数会有一个默认值。这对于更改以前的旧代码十分有用(只需加一个默认参数)。

                                         

                              默认参数使用误区?  定义一个默认参数如下

                               

                             调用上述函数时,如果带参数这个调用没问题,如果不带函数 比如 add_end(),add_end() ,第二次调用时会输出两个['END' ,'END']

                                这是为什么呢?  其实是由于list为可变对象,所以调用一次后,S的值已经改变啦。再次调用肯定会在原有的基础上变化,

                                         解决方法:把S默认值初始化为不可变对象,比如S=None   如下图所属

                                                         

                                    可变参数:在python中可变参数是指参数的个数可变,可以为0,1,2.........等

                                              可变参数实际上在内部接收的是一个tuple ,在下面我们会用tuple或者list来构件一个实现可变参数的功能。

                                               在可变参数中,如果传入的集合石list或tuple,我们可以通过在list集合或tuple集合前面加一个*,把集合中的元素变成可变参数传进去。

                                                 如caclu_args(*[1,2,3]),caclu_args(*(2,3,4)) 会把集合中的元素变成可变参数传进去。                                            

                                                       

                                                  从上面的图·我们可以看到   通过Tuple完全能实现可变参数功能,不过此时不允许没有参数。没有参数时会报错。而可变参数中可以没有参数。

                         关键字参数 :可变参数允许你传入零个或者任意个参数,这些可变参数在函数调用时自动组装为一个tuple,

                                               而关键字参数允许你传入零个或任意多个含参数名的参数,这些关键字参数在函数内部自动组装成一个dict      

                                                     

                                                  extra={'city':'Beijing','job':'Enginner'} 要想把dict对象数据直接 传入关键字参数中,可以通过**extra即在对象前加两个*号,

                                                   **extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数  具体如下

                                                                

                            
                             命名关键字参数:关键字参数可以传入任何参数名的参数,至于到底传入了哪些,就需要在函数内部通过kw检查

                                  

                                 如果要限制关键字参数的名字,就可以用命名关键字参数,例如只接受city和job作为关键字参数,这种定义如下

                                      

                                  和关键字参数**kw不同,命名关键字参数需要 一个特殊分隔符*,*后面的参数被视为命名关键字参数

                                       调用方式如下:

                                            

                             如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*号啦。

                                                                 记住 调用时,命名关键字参数必须传入参数名

                                                  

                                            参数组合:参数定义顺序  必选参数、默认参数、可变参数、命名关键字参数、关键字参数

                                                       

                                                                     

                                        

                                     

                                                                                          

                                         

                                                   

                                                   

             

                                          

                        

                                 

                   

                                        

                          

       

        

  • 相关阅读:
    PMO的重要性
    idea CPU过高问题
    近期面试心得
    Spring-Eureka
    BIO/NIO
    redis redlock
    nmon 安装及使用 【linux环境】
    一致性hash 算法
    gossip协议了解
    00008
  • 原文地址:https://www.cnblogs.com/09120912zhang/p/7277131.html
Copyright © 2011-2022 走看看