美文网首页
3.4丨函数和模块

3.4丨函数和模块

作者: mysterry | 来源:发表于2020-03-04 15:10 被阅读0次

    代码复用(代码的重复使用)

     代码复用是使用任何编程语言进行编程的一个非常重要的部分。 程序的代码量越大,程序越难以维护,所以我们在编写的过程中,要在保证功能可以实现的前提下,尽可能减少代码量。
    

    函数(Functions)

    任何由一串字符(称作函数名)和后跟括号以及括号里内容组成的语句,都是函数被调用时的形式。

    print("Hello world!")
    range(2, 20)
    str(12)
    range(10, 20, 3)
    
    括号前面的一串字符是**函数名**,括号内的由逗号分隔的值(如果只有一个值的话不需要用逗号)是函数的**参数**。
    

    自定义函数

     像print这样的可以直接使用的函数,我们叫它预定义函数(pre-defined functions),他们是由Python语言自带的、用来实现一些基础功能的函数。除了使用预定义函数外,我们还可以使用def语句来创建我们自己的函数。
    自定义函数**必须先被定义,然后才能被调用**。 函数中的语句仅在调用这个函数时才被执行。
    
    def my_func():
        print("spam")
        print("spam")
        print("spam")
    
    my_func()
    

    在用def语句定义函数的时候,函数名后面有个括号,用来表示需要的参数。之后有一个冒号(:),并且后面函数内部的代码每行行首有缩进。这与之前用到循环时的写法类似。

    参数

     刚才看到的几个函数都是没有参数的函数,这些函数在调用的时候,写的是空括号(也就是放参数的括号里一个参数也没有)。
    但是,大多数函数都需要参数。
    下面的示例定义了带有一个参数的函数:
    
    def print_double(x):
        print(2 * x)
    print_double(3)
    
    def print_sum_twice(x, y):
        print(x + y)
        print(x + y)
    
    print_sum_twice(5, 8)
    

    函数的参数作为一个变量的值(如上面这个例子里的x变量和y变量),可以在函数内部调用。 但是,它们不能在函数之外调用。 这个规则也适用于函数的附属代码块中(也就是函数内部)创建的其他变量。来看例子:(最后一行在运行的时候会出错)

    def function(variable):
        variable += 1
        print(variable)
    
    function(7)
    print(variable)
    
    8
    NameError: name 'variable' is not defined
    ···
    

    def even(x):
    if x % 2 == 0:
    print("YES")
    else:
    print("NO")

    ## 函数的返回值
       某些函数(如int()或str(),之前说过的用来转换值类型的那几个函数)返回一个可以在之后继续使用的值。
        如果需要自定义的函数也有返回值,可以使用**return语句**。
    

    def max(x, y):
    if x >=y:
    return x #return不带括号
    else:
    return y
    print(max(4, 7))

    ···
    def add_numbers(x, y):
        total = x + y
        return total
        print("This won't be printed")
    print(add_numbers(4, 5))
    
    9
    

    return之后代码不会被执行,必须跳出代码块。

    关于return和返回值的补充解释

    函数有两种:有返回值的,没有返回值的。
    有返回值的函数,可以直接理解为它会把写函数时定义的return的内容替换到调用此函数的位置。(后面会解释这句话)
    没有返回值的函数主要是为了完成某种任务(其实这是废话,函数的功能就是为了完成某种任务)。这种函数完成任务后,函数执行期间的所有数据一律不再需要使用,这时候就不需要给这个函数定义return语句,也就是不需要返回任何值。
    
    #没有返回值
    def function(a, b):
        answer = a + b
        print(answer)
    
    #有返回值
    def function(a, b):
        answer = a + b
        return answer
    print ("line 1:")
    function(2, 9)
    print ("line 2:")
    print(function(2, 9))
    #上面这个函数是有返回值的。在函数内部并没有进行任何输出
    line 1:
    line 2:
    11
    

    print(function(2, 9))
    print(11)
    这两行代码的作用基本相同,这也就是上文说到的,有返回值的函数会把return的内容替换到调用此函数的位置。
    同理可以举例,如果函数的定义与上面这个例子中的函数定义相同,那么:

    function(2, 9) * 5
    11 * 5
    
     即使函数内部执行的是加法,最后输出的结果也不是2 + 9 * 5 == 47,而是(2 + 9) * 5 == 55。这也证明了返回值是**直接替换**到调用位置的。

    相关文章

      网友评论

          本文标题:3.4丨函数和模块

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