• Python 学习笔记12 函数模块


      函数的优点之一,使用它们可将代码块与主程序分离。通过给函数指定描述性的名称。可以让主程序非常好理解。但是如果将过多的函数和主程序放置在一起,会让文件显得非常凌乱。太多的代码混杂在一起,不方便管理。我们可以将相关的、类似的、一个对象的先关函数编写在一个py文件里。主程序根据需要通过导入这些文件,由选择的调用一些函数。这样既方便管理,也使主程序更加简洁明了。

      通过将程序存储在独立的文件中,我们可以隐藏程序代码的相关细节,将注意力放在主程序的逻辑实现上。而且我们也可以在许多程序中重用这些函数。独立的文件,也方便我们以其他人员分享这些文件,而不是主程序。我们还可以使用其他程序员编写的模块简历函数库。

      Python提供了许多种方式来导入模块。

      首先我们要先创建模块。模块的扩展名是.py,其实就是一个python文件。我们在文件中建立各种函数,为其他程序调用做准备。比如我们建立一个叫greet的模块,一个打招呼的模块:

    #-*- coding:utf-8 -*-
    '''
    Define a module to greet others with parmater:
    '''
    
    def say_hello(name):
        str_message = "hello, " + str(name) + "!"
        return str_message
    
    
    def say_bye(name):
        str_message = "Bye, " + str(name) + "!"
        return str_message

      我们把它存为greet.py文件,以此同时我们在同一文件目录下新加一个主程序文件,就可以导入和使用模块了。方式有多种,我们来一一介绍下:

    1. 导入整个模块

    #-*- coding:utf-8 -*-
    import greet
    
    s_message = greet.say_hello('Ralf')
    print(s_message)
    
    '''
    输出:hello, Ralf!
    '''

      我们使用import + 模块名 直接导入整个模块。python会打开整个模块,并将整个函数代码复制到主程序中。我们并不会看到这些代码。但是实际上这些代码会在后台编译时运行。而我们在调用函数时,需要使用 【模块名称】.【函数名称】的形式来使用函数体。

      我们也可以使用*来一次性导入模块中的所有函数:

    #-*- coding:utf-8 -*-
    from greet import *
    
    s_message = say_hello('Ralf')
    print(s_message)
    
    s_message = say_bye('Ralf')
    print(s_message)
    
    '''
    输出:
    hello, Ralf!
    Bye, Ralf!
    '''

      使用这种方式,不需要指定模块名称,直接调用相关函数即可。

      但是一次性导入整个模块,会让编译后的程序显得臃肿不堪,我们也可以根据需要,只导入模块中的部分函数给我们使用:

    2. 导入部分函数:

    #-*- coding:utf-8 -*-
    from greet import say_hello
    
    s_message = say_hello('Ralf')
    print(s_message)
    
    '''
    输出:hello, Ralf!
    '''

      我们可以看到我们只导入了模块 greet中的say_hello()的函数,并且函数可以正确的运行。需要注意的是因为我们是显示的导入了函数,则不需要在函数名称前面再加模块的名称,直接调用函数即可。

      我们也可以导入多个函数:

    #-*- coding:utf-8 -*-
    from greet import say_hello, say_bye
    
    s_message = say_hello('Ralf')
    print(s_message)
    
    s_message = say_bye('Ralf')
    print(s_message)
    
    '''
    输出:
    hello, Ralf!
    Bye, Ralf!
    '''

      我们在导入模块和调用函数的时候,有时候会遇到模块名称或者函数名称和代码中的变量,函数名称相冲突,或者函数、模块名称过于复杂。我们可以将模块、函数名称用as指定别名,来区别。

    1. 模块别名:

    #-*- coding:utf-8 -*-
    import greet as gt
    
    s_message = gt.say_hello('Ralf')
    print(s_message)
    
    s_message = gt.say_bye('Ralf')
    print(s_message)
    
    '''
    输出:
    hello, Ralf!
    Bye, Ralf!
    '''

    2. 函数别名

    #-*- coding:utf-8 -*-
    from greet import say_bye as bye, say_hello as hello
    
    s_message = hello('Ralf')
    print(s_message)
    
    s_message = bye('Ralf')
    print(s_message)
    
    '''
    输出:
    hello, Ralf!
    Bye, Ralf!
    '''
  • 相关阅读:
    php gettext 注释
    autobench 测试笔记
    Android 常用布局视图
    路由器插入广告实现
    kafka 搭建与使用
    复制虚拟机之后,互相ping不通
    docker运行镜像提醒WARNING: IPv4 forwarding is disabled. Networking will not work.
    docker容器简单常用操作
    mongo通过URL连接IDEA
    gradle基础应用
  • 原文地址:https://www.cnblogs.com/wanghao4023030/p/10793313.html
Copyright © 2020-2023  润新知