zoukankan      html  css  js  c++  java
  • function.py

    #文档字符串
    def square(x):
        'calculates the square of the number x'
        return x*x
    square.__doc__
    help(square)
    
    
    
    #列表做实参
    #当2个变量同时引用一个列表时,他们的确是同时引一个列表用
    #当在序列中做切片时,返回的切片总是一个副本
    def change(x):
        x[0]='***'
    name1=['aaa','bbb'] #['***', 'bbb']
    name2=['aaa','bbb'] #['aaa', 'bbb']
    change(name1)
    change(name2[:])
    print(name1,name2)
    
    #函数应用
    def init(data):
        data['first']={}
        data['middle']={}
        data['end']={}
    def lookup(data,label,name):
        return data[label].get(name)
    def store(data,full_name):
        names=full_name.split();
        if len(names)==2: names.insert(1,'')
        labels='first','middle','end'
        for label,name in zip(labels,names):
            people=lookup(data,label,name)
            #print(people,full_name,label,name)
            if people:
                people.append(full_name)
            else:
                data[label][name]=[full_name]
    
    MyName={}
    init(MyName)
    
    store(MyName,'Ma LIe Het')
    print(lookup(MyName,'middle','LIe'))
    
    store(MyName,'Robin Hood')
    store(MyName,'Robin Loksley')
    print(lookup(MyName,'first','Robin'))
    print(lookup(MyName,'middle',''))
    
    #关键字参数,默认值
    def hello(greet='hello',name='world'):
        print('%s, %s' % (greet,name))
    hello()
    hello('Greeting')
    hello('Greeting','CC')
    hello(name='CC')
    def hello_2(name,greet='hello'):
        print('%s,%s' % (greet,name))       
    try:
      hello_2()   #error missing 1 required positional argument: 'name'
    except Exception as e:
        print(e)
    
    #收集参数
    #*收集成元组
    def print_1(*arg):
        print(arg)
    def print_2(name,*arg):
        print(name)
        print(arg)
    def print_3(*arg,name):
        print(arg)
        print(name)
    print_1('abc')  #('abc',)元组
    print_1(1,2,3)  #(1,2,3)
    print_2('no')   #no ()
    try:
        print_3(1,2,3)  #error
    except Exception as e:
        print(e)
    print_3(1,2,name=3) #OK
    #**收集[关键字参数]成字典
    def print_para(**arg):  #必须是关键字参数,不能是字典
        print(arg)  #arg变成了字典
    print_para(x=1,y=2,z=3) #{'z': 3, 'y': 2, 'x': 1}
    a={'z': 3, 'y': 2, 'x': 1}
    try:
        print_para(a)   #error 参数不能是字典,而应是关键字参数
    except Exception as e:
        print(e)
    def print_dict(**arg):
        print('%(name)s, is %(job)s' % arg)
    print_dict(job='a',name=2)    #2 is a
    def print_para_2(x,y=1,*p1,**p2):
        print(x,y)
        print(p1)
        print(p2)
    print_para_2(1,2,3,4,a=1,b=2)   #1 2 (3,4) {'a': 1, 'b': 2}
    print_para_2(1) #1 1 () {}
    #拓展
    def test(size):
        a,b=size
    try:
        test(1,2)   #error
        test(1)     #error
    except Exception as e:
        print(e)
    a=(1,2)
    test(a)     #OK
    try:
        test(*a)    #error
    except Exception as e:
        print(e)
    
    #参数反转
    #*号只在定义函数或调用时才有用
    def add(a,b):   return a+b
    t=(1,2)
    add(*t) #t元素个数要与add参数个数一致
    def hello_2(name,greet='hello'):
        print('%s,%s' % (greet,name))
    t={'greet':'Well','name':'CC'}
    hello_2(**t)    #t元素个数要与hello_2个数一致,对应
    
    
    print('---嵌套函数---')
    def f1(x):
        print("x=",x)
        def f2(y):
            print('x=',x,'y=',y)
            return x*y
        return f2
    
    f1(2)(3)    #x=2
    m=f1(2)
    m(3)
  • 相关阅读:
    清除所有标签的属性
    chm提取
    视频分享
    依赖注入
    python-markdown
    light sdk
    ~
    html标签引入外部html
    微信公众平台自定义菜单
    还在为需要ajax而导入jquery吗? 纯js封装ajax操作
  • 原文地址:https://www.cnblogs.com/feifeidxl/p/5617891.html
Copyright © 2011-2022 走看看