Python基础:模块

模块

模块对应Python源代码文件,在Python模块中可以自定义变量、函数和类。多个功能相似的模块(源文件)可以组成一个包(文件夹)。用户通过导入其他模块,可以使用该模块中定义的变量、函数和类,从而重用其功能。

模块API

客户端使用模块提高的函数时,无须了解其实现细节,模块和客户端之间遵循的契约称为API。

通过内置函数help()可以查看Python模块的API:

import 模块名
help(模块名)

模块创建

#在名为module1.py的文件中输入下面的def语句,并导入该文件,你将创建一个模块对象,该对象拥有一个属性名称printer,而printer引用一个函数对象。
def printer(x): #Module attribute
    print(x)

模块使用

import和from语句

  • import会整体读取一个模块,之后必须借助点号".",才能获取其中的名称。

    • import语句直接列出一个或多个需要加载的模块的名称,以逗号分隔。

    • import module1
      module1.printer("Hello world!")
      # output:Hello world!
      
  • from将会从模块中取出(或者说复制)特定的名称。

    • from会把特定名称从一个文件复制到另一个作用域,所以它可以让我们直接在脚本中使用复制后的名称,而不需要通过模块。

    • from module1 import printer
      printer("Hello world!")
      # output:Hello world!
      
  • from 语句:是特殊的from形式,当我们用*代替特定的名称时,会取得模块顶层被赋值的所有名称的副本。(py3要求只能用在一个模块文件的顶部,不能用于一个函数中)*

    • from module1 import *
      printer("Hello world!")
      # output:Hello world!
      

注意:import和from语句虽然都采用相同的导入操作。from*形式只是多了一个步骤,即把模块中所有名称复制到了进行导入的作用域中,本质上就是把一个模块的命名空间纳入另一个模块中。*只有 可以在这个上下文中工作,你不能使用模式匹配来挑选出名称的子集。

if __name__ == "__main__": 这行代码是在Python中常见的结构。它用于判断当前模块是作为主程序运行,还是作为模块导入到其他程序中。

def printer(x): #Module attribute
    print(x)

def main():
    print("Hello!")

if __name__ == '__main__':
    main()
#output:Hello!

当一个Python模块被导入到另一个模块或脚本中时,Python解释器会将特殊变量__name__设置为模块的名称。然而,如果一个模块作为主程序运行,解释器会将__name__变量设置为字符串 "__main__"

因此,if __name__ == "__main__": 条件用于检查当前模块是否是主程序。如果是主程序,将执行条件后面的代码块。如果它被导入为模块,代码块将被跳过。

import和from是赋值语句

import和from是可执行语句,而不是编译时的声明。而且它们可以嵌套在if 测试里,只有对应的import和from语句执行后,才可以使用。

在模块中改变可变对象

和def一样,import和from都是隐式的赋值语句。

  • import将整个模块对象赋值给一个单独的名称

  • from将一个或多个名称赋值给另一个模块中的同名对象

    """smally.py"""
    x = 1
    y = [2, 3]
    
    from small import x, y
    x = 10#x不是共享的可变对象
    y[0] = 10#y是共享可变对象
    
    import small
    print(small.x)#output:1
    print(small.y)#output:[20, 3]
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

企鹅君-Jared

有钱的捧个钱场,没钱的点的赞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值