• 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)
  • 相关阅读:
    SHELL编程之执行环境----邹立巍的博客
    linux内核分析系列--百度
    Linux模式设计系列( 内核与应用关联思考)
    Linux内核源代码情景分析系列
    Linux内核学习和研究及嵌入式(ARM)学习和研究的开放文档
    实验楼内核分析 +图
    《Linux内核修炼之道》 系列
    和菜鸟一起学linux内核源码之基础准备篇 系列 体系结构图
    实验楼在线算法学习
    linux-0.11内核 调试教程+GCC源代码
  • 原文地址:https://www.cnblogs.com/feifeidxl/p/5617891.html
Copyright © 2020-2023  润新知