函数

2018-03-10  本文已影响0人  jealousl

函数的作用

函数的作用:就是将实现某一个功能的代码封装到一个称为‘函数’的模块之中

定义函数

在Python之中使用 def 关键字来定义,当函数执行完的时候应当使用return 关键字来返回一个结果
例如:

# n以内的和
def my_sum(n):
"""
求n以内的和

:param n: 非负整数

:return: n以内的和
"""
    if n == 1:
        return 1
    else:
        return n + my_sum(n-1)
a = int(input('a = )')
# 直接使用函数而不需要在写循环
print(my_sum(a))

函数的参数

在Python之中函数的参数可以是一个也可以是不确定个数,该参数可以赋默认值也可以不赋默认值

def foo(n=2):
"""
    计算n的n次幂

    :param n: 非负整数

    :return: n的n次幂
"""
     return n ** n
print(foo())
print(foo(3))
def foo(*args):
    total = 0
    for val in args:
        total += val
    return total

print(foo(1,2,3,4))
print(foo(1,2,3,4,5))

模块调用函数

在使用模块调用函数的时候,如果出现相同的函数名应当使用该模块加点使用函数,否则会被覆盖

l1.py

def foo():
    print('ljl')

l2.py

def foo():
    print('zy')
import l1
import l2

l1.foo()
# 输出 ljl
l2.foo()
# 输出 zy

如果你这样使用:

from l1 import foo
from l2 import foo

foo()
# 输出 zy

from l2 import foo
from l1 import foo

foo()
# 输出 ljl

if name == 'main': 的使用规则:

可以将需要在本Python运行的函数放在其中,那么在运行本页面的Python文本的时候才会运行到该函数

练习题

1.判断一个数是不是素数

def is_prime(num):
    for x in range(2, num):
        if num % x == 0:
            return False
    return True if num != 1 else False

2.判断一个数是不是回文数

def is_palindrome(num):
    temp = num
    total = 0
    while temp > 0:
        total = total * 10 + temp % 10
        temp //= 10
    return total == num

3.公约数

def gcd(x, y):
    if x > y:
        return gcd(y, x)
    elif y % x == 0:
        return x
    else:
        return gcd(y % x, x)

Python变量作用域有

Local - Enclosed - Global - build_in
如果想改变搜索范围 可以使用global和nonlocal关键字

def foo():
    # local variable
    # 函数内的局部变量 离开foo函数变量a是无法访问的
    global a  # 定义一个全局的a
    a = 200
    b = 'hello'

    def bar():
        nonlocal b
        b = 'good'
        print(a, end=' ')
        print(b, end=' ')

    bar()
    print(b, end=' ')


foo()
print(a, end=' ')

"""
输出结果为:200 good good 200 
"""

在实际开发之中我们应当避免使用全局变量,减少全局变量意味着我们可以将变量放在函数之中使用,所以我们在使用的时候应当如下定义:

def main():
      pass


if __name__ == '__main__':
    main()
上一篇下一篇

猜你喜欢

热点阅读