函数的定义

  • 格式如下:
def main():
    # 在这里写函数体(code)
    pass


if __name__ == '__main__':
    main()
  • 函数的递归
"""
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,
并且0的阶乘为1。自然数n的阶乘写作n!。
即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n
"""
def factorial(num):
    result = 1
    for i in range(1, num + 1):
        result *= i
    return result


m = int(input('m = '))
n = int(input('n = '))
print(factorial(m) // (factorial(n) * factorial(m - n)))

# factorial函数也是内置函数,事实上要计算阶乘可以直接使用这个
# 现成的函数而不用自己定义
# 通过导入的math模块,来调用factorial函数来求阶乘运算
import math
m = int(input('m = '))
n = int(input('n = '))
print(math.factorial(m) // (math.factorial(n) * 
math.factorial(m - n)))
  • 函数的参数
"""
python函数与其他语言的函数,有很大的不同。其中一个显著的区别,
就是Python对函数参数的处理。
在Python语言中,函数的参数可以有默认值,也可以为可变参数。
因此python不需要对函数进行重载,因为在定义函数之时,就有了多种
不同的使用方式
"""
# 1 摇色字游戏
def roll_dice(n=2):  # 如果没有指定的话,默认为2

    total = 0  #
    for _ in range(n):
        total = total + random.randint(1, 6)
        # total += random.randint(1, 6)
    return total


print(roll_dice())  # 为默认值2个
print(roll_dice(3))  # 为3个参数 摇3个色子

def add(a=0, b=0, c=0):  # 给参数设定了3个默认值,0值
    return a + b + c

print(add(2))
print(add(2, 3))
print(add(3, 5, 7))
print(add(b=50, c=23, a=44))  
# 传递参数的时候,可以不按照事先设定好的顺序进行传递
# 还可以对函数的参数有更好的实现方法,有调用参数的人具体来决定,即可变参数
# 在参数前使用*表示args是可变参数,即调用add()函数的时候,可以传入0个,
# 或者多个
def add(*args):
    total = 0
    for w in args:
        total += w
    return total
print(add())
print(add(1))
print(add(2, 3, 5))
print(add(3, 4, 6, 9))

# 下面的是需要在同一个模块下运行
# __name__是Python中一个隐含的变量它代表了模块的名字, 
# 只有被Python解释器直接执行的模块的名字才是__main__
def foo():
    pass


def bar():
    pass


if __name__ == '__main__':

    print('call foo()')
    # foo()
    print('call bar()')
    # bar()
  • 三元条件运算符的使用
# 1 需要一个程序从输入的三个数中找出最大的那个数.
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
if a > b:
    the_max = a
else:
    the_max = b
if the_max < c:
    the_max = c
print('最大的数为%d' % the_max)

# 使用三元条件运算符来改写上面的代码
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
the_max = a if a > b else b
the_max = c if c > the_max else the_max
print('最大的数为%d' % the_max)
  • 使用辅助函数
def the_max(x, y): 
 # 定义一个the_max的函数,返回的值通过三元条件运算来判断,
 # 大的在if前,小的在else后
    return x if x > y else y


a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
print('最大的一个数是%d' % the_max(the_max(a, b), c))  # 两个嵌套

# 使用Python的内置函数max来获取最大的数
# Python内置的max函数利用了Python对可变参数的支持,
# 允许一次性传入多个值或者一个迭代器并找出那个最大值
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
print('最大的一个数是%d' % max(a, b, c))