美文网首页小白学python
Python基础 | 函数

Python基础 | 函数

作者: Demafic | 来源:发表于2019-05-25 07:57 被阅读0次

    函数的作用

    写代码忌讳的是重复,当有重复的代码块出现时,可以使用函数对代码块进行封装,使得重复部分只用一个函数就能实现,比如我们要计算cc

    3!*4!*5!
    

    ok,一般我们可以写成:

    a = 3
    b = 4
    c = 5
    r = 1
    for i in range(1,a+1):
        r *= i
    
    p = 1
    for i in range(1,b+1):
        p *= i
        
    q = 1
    for i in range(1,c+1):
        q *= i
    print(r*p*q)
    

    对,三个一样的阶乘计算代码,相当麻烦,所以我们只需将重复的代码封装到一个函数即可。

    def factorial(num):
        r = 1
        for i in range(1,num+1):
            r *= i
        return r
    

    那么3,4,5的阶乘的乘积:

    factorial(3)*factorial(4)*factorial(5)
    

    是不是相当简单。

    定义函数

    这里我们将阶乘的代码块定义为factorial,括号内是我们需要传入的参数,return是将结果输出。函数的命名规则与变量的命名规则相同。

    函数参数

    当然,这里我们将参数定义为一个需要传入的变量,我们也可以直接将参数固定:

    def parameter(a=3,b=4):
        print(a+b)
    parameter()
    parameter(4)
    parameter(4,8)
    

    结果是7,8,12.

    当没有参数传入时,使用的是默认参数。

    参数的设置还有一个更'懒'的方法。

    直接定义为*args

    这表示传入的参数是可变参数,可以是0个也可以是多个。

    当然,如果这种方式被滥用的话,还是蛮恶心的。

    变量作用域

    def foo():
        b = 'hello,world'
        def bar():
            global a
            print(a)
            a = 300
            print(a)
            print(b)
        bar()
        
    if __name__=='__main__':
        a =100
        print('a:',a)
        foo()
    

    结果是

    a: 100
    100
    300
    hello,world
    

    global被删掉时,就会报错UnboundLocalError: local variable 'a' referenced before assignment

    因为原来a就是全局变量,如果你修改,就会变成局部变量,所以可以先声明一下a的作用域。

    相关文章

      网友评论

        本文标题:Python基础 | 函数

        本文链接:https://www.haomeiwen.com/subject/xbtazqtx.html