zoukankan      html  css  js  c++  java
  • day03-函数

      1 形参:位置参数:必须传
      2     *args:动态参数,可以接收任意多个位置参数
      3     默认值参数:可以传也可以不传
      4     **kwargs:动态参数,可以接收多个关键字参数。
      5 实参:按照位置传参,按照关键字传参。
      6 
      7 #顺序:位置参数,*args,默认值参数,**kwargs。
      8 def test(a,*args,t=10,**kwargs):   #t=10是默认值参数,要放在**kwargs前面。
      9     print(args,kwargs,t)
     10 test(1,23,3,12,45,3,1,5,1,3,5,1,3,t=200,a='asdf',b='awea') #t=200是关键字传参。
     11 
     12 def test1(*args):           #args是元组。
     13     print(args)
     14 a = (1,2,3,87,45,3,43,645)
     15 test1(*a)                   #将元祖a打散成多个元素传参。
     16 
     17 def test3(*args):
     18    print(*args)        #args是元组,*args是打散元组,所以执行结果是1 2 3
     19    print(args)        #结果是(1,2,3)
     20 test3(1,2,3)
     21 
     22 
     23 def test2(**kwargs):    #形参**kwargs将传入的参数放在字典里面。kwargs是字典。
     24     print(kwargs)
     25 b = {'c':1,'t':23}
     26 # test2(**b)              #实参**b将字典打散为键值对传给形参。跟下行代码test2(c=5,t=10)的效果一样。
     27 test2(c=1,t=23)
     28 
     29 def a():
     30     return 2
     31 print(a())  #函数名()=返回值。 a()=2
     32 
     33 def b(*args):
     34     return args
     35 print(b(1,2,3))
     36 
     37 
     38 默认值参数的陷阱
     39 def test(a=[]):
     40     a.append(1)
     41     print(a)
     42 test()         #因为a是默认值参数,所以调用函数的时候可以不传参,执行结果是[1]
     43 test()         #[1,1]
     44 test()         #[1,1,1]
     45 
     46 
     47 
     48 返回值
     49 没有返回值:返回None
     50         1.不写return
     51         2.只写return :结束函数,return下面的代码不执行。
     52         3.写return None 不常用
     53 返回一个值:
     54         可以返回任何数据类型:数字,字符串,元组,列表,字典等等。
     55         如果有多个return,只执行第一个。
     56 返回多个值:
     57         多个返回值要用多个变量接收。
     58 def test():
     59     return 1,2,3
     60 a1,a2,a3=test()  #多个返回值要用多个变量接收。
     61 print(a1,a2,a3) #打印出1 2 3
     62 print(test())   #打印出元组(1,2,3)
     63 
     64 def a(b):
     65     return b[1::2] #返回奇数索引对应的值
     66 print(a([1,3,3,6,1,4]))
     67 
     68 def a(b):
     69     return len(b)<5  #返回传入的字符串的长度是否小于5
     70 print(a('adsfadsf'))
     71 
     72 def test(n):
     73     if len(n)>2:   #检查传入的列表的长度是否大于2,如果是,返回前面两个元素。
     74         return n[:2]
     75 print(test([1,2,3,4]))
     76 
     77 def test(list):
     78     '''函数注释:统计传入的参数有多少个字母(字母包含汉字),数字,空白符,其他字符'''
     79     alpha = 0
     80     digit = 0
     81     space = 0
     82     other = 0
     83     for i in list:
     84         if i.isalpha():   #如果i是字母为True
     85             alpha += 1
     86         elif i.isdigit(): #数字
     87             digit += 1
     88         elif i.isspace(): #空白符
     89             space += 1
     90         else:             #其他
     91             other += 1
     92     return alpha,digit,space,other
     93 print(test('asdfasdfas  asdgasdg asdfasdawe645a4s4df 646 465a4 64 646 46 46 465****、、、 '))
     94 
     95 def test(n):
     96     dic={'alpha':0,'digit':0,'space':0,'other':0} #利用字典简化代码,并且返回字典,让别人易读。只看结果就知道字母,数字,空白符,其他,一共多少个。
     97     for i in n:
     98         if i.isalpha():
     99             dic['alpha'] += 1
    100         elif i.isdigit():
    101             dic['digit'] += 1
    102         elif i.isspace():
    103             dic['space'] += 1
    104         else:
    105             dic['other'] += 1
    106     return dic
    107 print(test('asdfa 44 6a4 645 6a6dfa687df6a**a*d*f*a*d*f*'))
    108 
    109 def test(dic):
    110     for k in dic:
    111         if len(dic[k]) > 2:
    112             dic[k] = dic[k][:2]
    113     return dic
    114 print(test({'adf':'dfa','vb':'cdag','oe':'desfg'}))
    115 
    116 
    117 def test(a,b):  #接收两个数字,返回小的
    118     return  a if a<b else b #三元运算,简化代码,适合简单的情况
    119 print(test(1,5))
    120 
    121 
    122 a = 0               #全局变量
    123 def outer():
    124     b=2             #局部变量
    125     def inner():    #嵌套函数
    126         nonlocal b  #nonlocal 声明b是外层函数的变量
    127         b=20000000  #修改b的值
    128     inner()
    129     print(b)
    130     global a        #声明a是全局变量。如果想修改全局变量,必须先声明
    131     a=10000000      #修改a的值
    132 outer()
    133 print(a)
    134 
    135 
    136 
    137 闭包:闭包的好处是外部函数变量a长期存放在内存当中,不会因为外部函数多次被调用而多次生成,导致占用空间。
    138 def outer():
    139     a=1
    140     def inner():
    141         print(a)    #内部函数调用外部的变量,叫做闭包。这里调用了a.
    142     return inner    #inner()是调用inner函数,inner没有()是函数对象的意思。这里返回函数对象的地址给outer()。因为函数名()=返回值,所以outer()=inner.
    143 outer()()         #因为outer()=inner,所以outer()()=inner(),这样就可以调用内部函数。
  • 相关阅读:
    对比Microsoft RemoteFX与VMware PCoIP
    SATA port selector and port muliplier 产品
    从并行 SCSI 到串行 SCSI
    转:快速远程桌面——Nomachine NX(ubuntu 10.10安装NX详解)
    全面分析:SATA2硬盘的发展和优缺点
    axel vpc
    转:网络带宽测量工具之iperf
    转:使用测试工具iPerf监控无线网络性能
    远程维护Helpdesk应用VNC
    QOS定义
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/10267904.html
Copyright © 2011-2022 走看看