当前位置:首页 > 编程教程 > Python技术文章 > 对Python模块导入时全局变量__all__的作用详解

Python中模块导入时全局变量__all__的作用

  • 发布时间:
  • 作者:码农之家
  • 点击:144

这篇文章主要知识点是关于Python、全局变量、__all__、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

深入浅出Python机器学习
  • 类型:Python大小:153.8 MB格式:PDF作者:段小手
立即下载

对Python模块导入时全局变量__all__的作用详解

Python中一个py文件就是一个模块,“__all__”变量是一个特殊的变量,可以在py文件中,也可以在包的__init__.py中出现。

1、在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中,

如:全局变量,函数,类。如下,test1.py和main.py

test1.py

__all__=["test"]
def test():
 print('----test-----')
 
def test1():
 print('----test1----')

main.py

from test1 import *
 
 
def main():
 test()
 
 #test1()
 
main()

两个文件在同一个目录下。

此时执行python main.py时结果如下:

对Python模块导入时全局变量__all__的作用详解

但是如果放开main.py的注释后,如下:

对Python模块导入时全局变量__all__的作用详解

那么在模块中的__all__变量就是为了限制或者指定能被导入到别的模块的函数,类,全局变量等,如果指定了那么只能是指定的那些可以被导入,没有指定默认就是全部可以导入,当然私有属性应该除外。

2、在包下的__init__.py中

sound/effects/__init__.py中添加__all__ = ["echo", "surround", "reverse"]

那么就会在from sound.effects import *时,包含上面三个模块。当__init__.py为空时,只是导入这个包,并非导入模块。

__init__.py中可以执行一些初始化内容,比如:

from . import test1 导入当前目录下的test1模块

from .. import test 导入上一层目录下的test模块

因为导入 包时会首先执行下__init__.py这个文件

以上这篇对Python模块导入时全局变量__all__的作用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

Python 相关电子书
学习笔记
网友NO.451153

Python中的全局变量和局部变量的区别(代码详解)

全局变量是在函数外部定义和声明的变量,我们需要在函数内部使用它们。 #这个函数使用全局变量sdef f(): print s # 全局作用域s = I love Pythonf() 输出: I love Python 如果在函数范围内定义了具有相同名称的变量,那么它将仅打印函数内给出的值而不是全局值。 # 这个函数有一个与s同名的变量。def f(): s = Me too. print s # 全局作用域s = I love Python f() print s 输出: Me tooI love Python 在我们调用函数f()之前,变量s被定义为字符串“I love Python”。f()中唯一的语句是“print s”语句。由于没有本地s,将使用全局s的值。 问题是,如果我们改变函数f()内部的s值会发生什么?它会影响全局吗? 我们在下面的代码中测试它: def f(): print s # 如果我们在下面评论,这个程序不会显示错误。 s = Me too. print s #全局作用域s = I love Python f() print s 输出: Line 2: undefined: Error: local variable……

网友NO.331474

解析python的局部变量和全局变量

局部变量 什么是局部变量 通俗定义:函数内部定义的变量就叫局部变量。 话不多说,代码如下: def test1(): a = 300 # 定义一个局部变量a,并初始化300 print("--test1--修改前:a=%s" % a) a = 200 # 给变量a重新赋值200 print("--test1--修改后:a=%s" % a)def test2(): a = 400 # 定义另一个局部变量a,并初始化400 print("--test2--修改后:a=%s" % a)# 分别调用函数test1,test2test1()test2() 输出: --test1--修改前:a=300 --test1--修改后:a=200 --test2--修改后:a=400 结论: 局部变量就是在函数内部定义的变量。 不同的函数内部可以定义名字相同的变量,但它们不会产生影响。 局部变量的作用,为了临时保存数据需要在需要在函数中定义变量来进行存储。 全局变量 什么是全局变量 定义:如果一个变量既能在一个函数中使用,也可以在其他函数中使用,这样的变量就是全局变量。 代码如下: a = 100 #……

网友NO.544361

Python 专题六 局部变量、全局变量global、导入模块变量

定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域。本文主要讲述全局变量、局部变量和导入模块变量的方法。 参考:《Python核心编程 (第二版)》 一. 局部变量 声明适用的程序的范围被称为了声明的作用域。在一个过程中,如果名字在过程的声明之内,它的出现即为过程的局部变量;否则出现即为非局部。例: def foo(x): print 'x = ',x x = 200 print 'Changed in foo(), x = ',x x = 100 foo(x) print 'x = ',x 输出结果如下: x = 100 Changed in foo(), x = 200 x = 100 在主块中定义x=100,Python使用函数声明的形参传递x至foo()函数。foo()中把x赋值为200,x是函数的局部变量;所以在函数内改变x的值,主块中定义的x不受影响。 核心笔记: 当搜索一个标识符时,Python先从局部作用域开始搜索。如果在局部作用域内没有找到那个名字,那么一定会在全局域找到这个……

网友NO.944330

python如何在一个函数里用全局变量

在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量。此时用global语句就可以变成这个任务,也就是说没有用global语句的情况下,是不能修改全局变量的。 在python的函数使用时,经常会碰到参数定义的问题。如果不声明全局变量,会报错 意思是说count为局部变量,在使用它之前没有被赋值。在函数内无法直接使用全局变量。 可以看出函数里面的num是局部变量,有什么办法能在函数内使用全局变量呢?根据官方文档,可以用global语句: global语句可以声明一个或多个变量为全局变量。该声明仅在当前代码块中有效。除此之外,没办法访问全局变量。所以在函数中添加global声明:用global声明多个变量需要用逗号分隔,如下 如果是想在函数中调用全局变量,这需要……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com