菜鸟学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条件下的语句不会被执行到。

猜你喜欢

转载自www.cnblogs.com/leo1996/p/12049049.html