首页 > 其他分享 >__all__变量限制、明确导入范围

__all__变量限制、明确导入范围

时间:2023-07-23 09:23:17浏览次数:28  
标签:__ operations 变量 接口 导入 模块 import

说明

__all__是一个用于控制模块导入行为的特殊变量。它是一个定义在模块顶部的列表,其中包含了模块中可以被导入的公共接口(函数、类、变量等)。

当使用from 模块名 import *导入模块时,只有__all__列表中的成员会被导入,其他成员将不可见。

使用__all__的好处是可以限制导入的范围,避免不必要的命名冲突,并提供清晰的公共接口。

示例

math_operations.py:

 1 '''
 2 当使用from math_operations import *导入模块时,只有add函数会被导入,而subtract函数将不可见。
 3 '''
 4 
 5 
 6 def add(a, b):
 7     return a + b
 8 
 9 
10 def subtract(a, b):
11     return a - b
12 
13 
14 __all__ = ['add']

string_operations.py:

def uppercase(s):
    return s.upper()


def lowercase(s):
    return s.lower()


# 通过在__all__中指定模块的公共函数,可以明确告诉其他开发者应该使用哪些接口。
__all__ = ['uppercase', 'lowercase']

test.py:

 1 '''
 2 
 3 1. 限制导入的范围
 4 2. 明确公共接口
 5 '''
 6 
 7 from math_operations import *
 8 from string_operations import *
 9 import string_operations
10 
11 a = 5
12 b = 3
13 # subtract(a, b)   # 编译器报错
14 print(add(a, b))  # 8
15 
16 # 查看可导入接口
17 print(string_operations.__all__)  # ['uppercase', 'lowercase']

需要注意的是,__all__列表只影响使用from 模块名 import *形式导入的行为,对于使用import 模块名from 模块名 import 功能名导入的方式没有影响。另外,__all__并不是Python语言的强制规定,它只是一种约定俗成的写法,开发者可以选择是否使用。

总结起来,__all__是一个用于控制模块导入行为的变量,通过指定其中的公共接口,可以限制导入的范围并明确模块的公共功能。

标签:__,operations,变量,接口,导入,模块,import
From: https://www.cnblogs.com/allenxx/p/17574675.html

相关文章

  • 抓住那头牛
    1.#include<bits/stdc++.h>#defineN100001usingnamespacestd;boolvis[N];intdir[2]={-1,1};structnode{intx;intstep;}q[N];voidbfs(intn,intk){inthead=1,tail=1;vis[n]=1;q[tail].x=n;q[tail].step=0;ta......
  • PHP实现注册登录的详细代码,可供参考
    一、先看演示~  就输出个成功算了吧~ 二、代码代码里面注释写很详细了哦~废话不多说直接上代码~index.php<!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="viewport"content="width=device-width,initial-scale=1"><......
  • 行行AI人才直播第12期:风平智能创始人林洪祥《AI数字人的技术实践和商业探讨》
    行行AI人才是博客园和顺顺智慧共同运营的AI行业人才全生命周期服务平台。歌手孙燕姿凭借AI翻唱席卷各大视频平台。有视频博主用AI技术复活已故的奶奶,并且与之对话缅怀亲人填补遗憾。更有国外网红通过GPT-4复刻自己,同时与1000多个网友谈恋爱。类似这样的AI分身正在从科幻电影的......
  • 《Kali渗透基础》09. 漏洞利用、后渗透
    目录1:漏洞基本介绍1.1:漏洞从哪里来1.2:缓冲区溢出1.3:如何发现漏洞2:漏洞利用2.1:EXP选择与修改2.2:避免有害的EXP3:后渗透阶段3.1:Linux上传文件3.2:Windows上传文件本系列侧重方法论,各工具只是实现目标的载体。命令与工具只做简单介绍,其使用另见《安全工具录》。本文以kali-......
  • 如何使用OpenCV库进行图像检测
    importcv2#加载Haar级联分类器face_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')#读取输入图像img=cv2.imread('input_image.jpg')gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#使用Haar级联分类器进行人脸检测fa......
  • npm、pnpm、yarn 清理缓存,更改缓存目录
     //清理缓存$yarncacheclean$npmcacheclean-f$pnpmstoreprune//设置新的缓存地址$npmconfigsetglobal-folder"E:/npm/global"$pnpmconfigsetglobal-folder"E:/yarn/global"$pnpmconfigset"E:/pnpm/global"......
  • php获取用户真实ip地址的方法
    ​大家应该都有所体会,如果是做大型项目的话,比如做一个全国各地区的信息港网站,网站获取用户的本地信息就很关键了,比如58分类信息网,在用户访问的时候会自己判断用户所在地的信息,然后可以跳转到相应的分站上面,这样给用户的体验很好,而不是全国各地的用户全部都来访问北京站或者上海站......
  • 读数据压缩入门笔记09_多媒体数据压缩
    1. 压缩分类1.1. 多媒体数据压缩(media-specificcompression)1.2. 通用压缩(generalpurposecompression)2. 有损压缩算法2.1. 为了使数据压缩得更小,可以牺牲多媒体的质量这样的数据转换2.2. 针对特定的多媒体文件2.2.1. 针对图像文件的算法就不太适用于音频文件2.3.......
  • 【爬虫案例】用Python爬取抖音热榜数据!
    目录一、爬取目标二、编写爬虫代码三、同步讲解视频3.1代码演示视频四、获取完整源码一、爬取目标您好,我是@马哥python说,一名10年程序猿。本次爬取的目标是:抖音热榜共爬取到50条数据,对应TOP50热榜。含5个字段,分别是:热榜排名,热榜标题,热榜时间,热度值,热榜标签。用Chrom......
  • ing和ed结尾的形容词如何区别
    1、修饰对象不同:  以后缀-ing结尾的形容词  如:interesting,exciting,frightening…  译为"令人…的".  主要用于修饰事物,表示事物的性质或特征  若用它们修饰人,则表示此人具有此种性质或特征。  例句:  It'smoreinteresting......