zoukankan      html  css  js  c++  java
  • Python基础15 函数的定义 使用关键字参数调用 参数默认值 可变参数

      1 #函数
      2 #定义函数
      3 #自定义函数格式如下
      4 #   def 函数名(参数列表):
      5 #       函数体;
      6 #       return 返回值;
      7 #参数列表中的不同参数用“,”隔开
      8 #如果没有参数就不写参数
      9 #如果不需要啊返还值就在返还值哪里写None,或者直接不写
     10 #函数还是要先定义再使用
     11 
     12 def test_fang (x,y):
     13     z=1;
     14     for i in range(y):
     15         z=z*x;
     16     return z;
     17 
     18 xfang=test_fang(10,3);
     19 print(xfang);
     20 
     21 print("//////////////////////");
     22 
     23 #使用关键字调用函数
     24 #比如上面这串代码,我改动一下x和y
     25 
     26 def test_fang_2 (bei,cheng):
     27     z=1;
     28     for i in range(cheng):
     29         z=z*bei;
     30     return z;
     31 #这样运行起来是完全没有问题的
     32 xfang_2=test_fang_2(10,3);
     33 print(xfang_2);
     34 #这里的步骤也没问题
     35 #关键为了提高可读性,我们可以这样写
     36 xfang_2=test_fang_2(bei=10,cheng=2);
     37 print(xfang_2);
     38 #这样就提高了程序的可读性,让你更加的清楚你这两个值对应的是什么
     39 #xfang_2=test_fang_2(bei=10,2);
     40 #前面写和后面不写是会报错的
     41 xfang_2=test_fang_2(10,cheng=4);
     42 print(xfang_2);
     43 #而后面写前面不写则不会
     44 
     45 print("///////////////////////////");
     46 
     47 #参数默认值
     48 #函数可以对即将传输过来的数据赋上一个默认的值
     49 #如果又形参接收到了数据,就直接使用接收到的数据
     50 #如果没有接收到数据,就使用默认的数据
     51 
     52 def coffe (name="卡布奇诺"):
     53     return name;
     54 print("给阿姨到一杯{0}".format(coffe()));
     55 #这里我们没有给name传输任何的数据
     56 #所以这里就使用的是默认的数据
     57 print("给阿姨到一杯{0}".format(coffe(None)));
     58 #而只要我们在括号内写上了东西
     59 #即使是None也会被接收成数据给name
     60 print("给阿姨到一杯{0}".format(coffe("L老爷")));
     61 #这里就是输出了我们传输给name的数据了
     62 
     63 print("///////////////////////");
     64 
     65 #可变参数
     66 #这也是C中间没有的东西
     67 #Python中的可变参数,可以接收参数的个数是可以变化的
     68 #在参数前面加上*或者**,就可以实现收录多个数据
     69 #*表示把收到的数据变成元组的形式
     70 #**表示把收到的数据变成字典的形式
     71 
     72 def yushu (*beichus,chu):
     73     cun=list();
     74     for i in beichus:
     75         cun.append(i%chu);
     76     return cun;
     77 print(yushu(59,60,61,62,63,chu=2));
     78 #这里要注意一下
     79 #因为加上了*,所以他会一直往后面读取数据
     80 #print(yushu(59,60,61,62,63,2));
     81 #如果这样写的话,他会默认你这从59到2的数据都是给*beichu的
     82 #反而会报错告诉你你没有给chu赋值
     83 
     84 #如果函数设计的形参超过两个
     85 #那就必须要使用我们前面的使用关键字调用函数
     86 #就是要用形参的变量名写上去加以区分
     87 
     88 def yushu (*beichus,chu=3):
     89     cun=list();
     90     for i in beichus:
     91         cun.append(i%chu);
     92     return cun;
     93 print(yushu(59,60,61,62,63));
     94 #但是这样的只有一个参数的
     95 #我们就可以随便写了
     96 
     97 tuple_0=(599,633,889);
     98 def yushu (*beichus,chu=3):
     99     cun=list();
    100     for i in beichus:
    101         cun.append(i%chu);
    102     return cun;
    103 print(yushu(59,60,61,62,63,*tuple_0));
    104 #我们在这里建立了一个元组
    105 #然后我们希望*biechus能够读取tuple_0的数据
    106 #我们只需要把元组tuple_0放进去并在它的前面加上*就可以了
    107 #可变参数就会自动把他识别进去
    108 
    109 #**是建立了的一个字典
    110 #我们知道字典是一一对应的关系
    111 #
    112 
    113 def show_info(sep=":",**info):
    114     print("——info——");
    115     for key,value in info.items():
    116         print("{0}{1}{2}".format(key,sep,value));
    117 #这样我们就建立了一个可变参数为字典的函数
    118 show_info(name="字典",skill="我玩你心态",LV="999");
    119 #使用原来提到的特殊的方法建立字典key=value来建立
    120 #show_info(1="字典",skill="我玩你心态",LV="999");
    121 #这里依然遵守特殊方法建立字典的规则,就是key必须是字符串类型,不能是数字类型
    122 
    123 show_info("-(0,0)-",name="字典",skill="我玩你心态",LV="999");
    124 #而在这个代码中,我们通过对show_info函数的结构了解
    125 #sep这种常规的参量是要放在前面的,所以我现在在这里写出一个单独的字符串放在前面
    126 #这样子的话,系统就会先把"-(0,0)-"赋值给sep
    127 #sep就不是作为默认值输出了
    128    
    129 show_info(name="字典",skill="我玩你心态",LV="999",sep="???");
    130 #我们也可以在末尾通过添加关键字的方法来指定给sep赋值
    131 
    132 show_info(name="字典",skill="我玩你心态",sep="=======",LV="999");
    133 #同样只要是用关键字赋值的,都是作为特殊处理的,不会影响**的运算的
    134 
    135 #同样的
    136 #我们也可以直接把字典给塞进去
    137 #来运作
    138 ddd={10:20,20:10};
    139 #show_info(name="字典",skill="我玩你心态",sep="=++++=",**ddd,LV="999");
    140 #TypeError: show_info() keywords must be strings
    141 ddd={"10":20,"20":10};
    142 show_info(name="字典",skill="我玩你心态",sep="=++++=",**ddd,LV="999");
    143 #这里要注意一个问题
    144 #我们知道字典是可以以字符串和数字来作为key值的
    145 #而且一般情况下key值储存的形式并没有限制
    146 #但是这里为毛报错提示我们key值一定要是string字符串类型呢?
    147 #是因为位置的问题吗?
    148 
    149 #ddd={"10":20,20:10};
    150 #show_info(name="字典",skill="我玩你心态",sep="=++++=",LV="999",**ddd);
    151 #show_info(**ddd,name="字典",skill="我玩你心态",sep="=++++=",LV="999");
    152 #测试结果很明显,还是报错
    153 #这说明通过key=value的表示方式的规则是会影响到后面可变参数的
    154 #如果可变参数不符合规则,就会抛出异常
    155 
    156 #ddd={10:20,20:10};
    157 #show_info(**ddd);
    158 #而通过这串代码我们基本上可以确定了
    159 #函数中的字典的传输必须使用key=value的规则
    悟已往之不谏,知来者之可追
  • 相关阅读:
    求循环小数
    Android中Intent的用法总结
    Java中@Override的作用
    三种继承方式和访问控制方式对子类成员的影响
    设计一个用于人事管理的People(人员)类
    QSort函数对不同类型数据快速排序浅谈
    QSQLITE 使用
    c++控制内存分配
    dll加载过程全局变量会先初始化
    二维数组
  • 原文地址:https://www.cnblogs.com/ljh-study/p/13774340.html
Copyright © 2011-2022 走看看