• 06.函数与模块


    1、动态参数

    *args

    顾名思义,动态参数就是传入的参数的个数是动态的,可以是1个、2个到任意个,还可以是0个。在不需要的时候,你完全可以忽略动态函数,不用给它传递任何值。

    Python的动态参数有两种,分别是*args**kwargs,这里面的关键是一个和两个星号的区别,而不是argskwargs在名字上的区别,实际上你可以使用*any**whatever的方式。但就如self一样,默认大家都使用*args**kwargs

    注意:动态参数,必须放在所有的位置参数和默认参数后面!

    def func(*args):
        for i in args:
            i += i
        return i
    
    print(func(1,2,3))
    #调用时将实参打包成一个元组的形式传入,参数为列表将列表作为一个参数传入,如果需要将列表中的元素一个一个传入调用函数时需要加*,例如a是列表,func(*a)就可将列表中的元素作为实参传入
    #注意:调用时只能有一个参数加*,且只能放到最后面func(123, 'hello', ['a', 'b', 'c'], *{'name': 'kobe', 'age': 41})

    **

    将字典中的数据按照键值对的形式将value作为实际参数传给函数 

    **kwargs

    def fun(a, **kwargs):
        print "a is ", a
        print "We expect kwargs 'b' and 'c' in this function"
        print "b is ", kwargs['b']
        print "c is ", kwargs['c']
    
    fun(1, b=3,c=5)

    a
    is 1 We expect kwargs 'b' and 'c' in this function b is 3 c is 5

    2、用模块管理函数

    #test1.py
    def test():
        print('test1')
    #test2.py
    def test():
        print('test2')
    #test3.py   在此py文件中引用test1.py和test2.py的函数方法
    
    import test1 as t1
    import test2 as t2
    
    t1.test()
    t2.test()

    注意:

    from test1 import test
    from test2 import test
    
    test()
    
    #按此方法引用test函数,之后的会覆盖掉前面的,实际引用的是test2.py中的test函数

    3、如果我们导入的模块除了定义函数之外还中有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码,事实上我们可能并不希望如此,因此如果我们在模块中编写了执行代码,最好是将这些执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是"__main__"。

    #a.py
    
    def foo():
        pass
    
    
    def bar():
        pass
    
    # __name__是Python中一个隐含的变量它代表了模块的名字
    # 只有被Python解释器直接执行的模块的名字才是__main__
    if __name__ == '__main__':
        print('call foo()')
        foo()
        print('call bar()')
        bar()
    #b.py
    import b 
    
    #此返回结果并不会执行a.py中的可执行程序

    4、练习题

  • 相关阅读:
    asp.net Core 中间件Hello world
    MVC2 ,MVC3 ,MVC4,MVC5的区别,EF的各个版本的区别;LocalDB是个啥
    EF6 MVC5译文
    发布一个C++版本的ORM库SmartDB
    ORM
    Git图形化界面客户端大汇总
    Model工具
    HTTP协议的8种请求类型介绍
    五大主流数据库模型
    店铺装修——进阶模块介绍
  • 原文地址:https://www.cnblogs.com/li33232/p/14302924.html
Copyright © 2020-2023  润新知