zoukankan      html  css  js  c++  java
  • 菜鸟学python(第一天)函数及模块使用

      在未使用函数模块之前,如果需要进行阶乘的运算,我们需要像下面这样:

    1 m=int(input('输入一个数:'))
    2 fm=1
    3 for num in range(1,m+1):
    4      fm*=num
    5 print(fm)

      当进行多项阶乘运算的时候代码中的重复部分会造成代码冗长:

    m=int(input('m = '))
    n=int(input('n = '))
    z=int(input('z= '))
    fm = 1
    for num in range(1, m + 1):
        fm *= num
    fn = 1
    for num in range(1, n + 1):
        fn *= num
    fz = 1
    for num in range(1, z + 1):
        fz *= num
    print(fm // fn // fz)

      所以我们需要封装一个函数模块,在阶乘计算的时候调用它,代码会变得相对简洁:

    from math import factorial
    m=int(input('m=:'))
    n=int(input('n=:'))
    z=int(input('z=:'))
    print(factorial(m)//factorial(n)//factorial(z))

      函数的定义使用def来进行定义,其命名规则与变量一致,在函数名后面的圆括号内是传递参数,相当于数学中的自变量,运行完之后通过return返回一个值,相当于数学中的因变量python中的函数参数可以有默认参数,也可以设置成可变参数,所以python不需要像其他语言一样支持重载,如以下这个例子:

    def power_7(m=3):
        fm=1
        for num in range(1,m+1):
            fm*=num
        return fm
    print(power_7()) #无指定参数就是默认值输出3!
    print(power_7(5))

       在实际中,一个函数的参数个数我们是无法确定的,这时候可以用可变参数的方式对函数进行定义:

    def add_7(*args):  #在参数名前打一个*表示其是可变参数
        for num in args:
            total+=num
        return total
    print(add_7())
    print(add_7(5))
    print(add_7(1,2,3,4,5,6,7,8))

    用模块管理函数

      在同一个.py文件中可能定义了相同名字的函数造成冲突,这时候需要模块来管理函数。python中每个文件是一个模块,不同的模块允许有同名函数:

    module1.py

    def seven_7():
        print('hello world')

    module2.py

    def seven_7():
        print('goodbye world')

    test.py

    import module1 as m1
    import module2 as m2
    print(m1.seven_7())
    print(m2.seven_7())

      在模块当中可能还含有其他可执行的代码,在导入该模块时会执行,我们需要如下配置条件来避免这种情况:

    module3.py

    def foo():
        pass
    def bar():
        pass
    # __name__是Python中一个隐含的变量它代表了模块的名字
    # 只有被Python解释器直接执行的模块的名字才是__main__
    if __name__ == '__main__':
        print('call foo()')
        foo()
        print('call bar()')
        bar()

      这样的话除非直接运行该模块,不然if条件下的语句不会被执行到。

  • 相关阅读:
    VIVADO固化
    Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别
    STM32时钟
    STlink/v2中SWD模式连线方式
    搭载M33内核,支持最新蓝牙5.1,晚到的DA1469x生正逢时
    超全国内外蓝牙芯片原厂总结(含芯片型号)
    芯片封装类型大全
    国务院办公厅关于2012年部分节假日安排的通知
    美国摇滚乐队Metro致敬黄家驹,全粤语翻唱Beyond经典《海阔天空》
    国务院办公厅发布2010年部分节假日安排通知
  • 原文地址:https://www.cnblogs.com/leo1996/p/12049049.html
Copyright © 2011-2022 走看看