Python 自定义模块

news2024/12/26 22:08:15

视频版教程 Python3零基础7天入门实战视频教程

Python中已经有很多的内置模块,以及也有很多的第三方优秀模块,我们直接导入使用即可。

当然我们有时候也需要自己定义一些自定义模块,来实现我们项目的功能。

看下案例:

先定义string_util.py,判断字符串是否空的工具方法

def isEmpty(s: str):
    """
        判断字符串是否是空
    :param s:  传入字符串参数
    :return:  空则返回True,否则返回False
    """
    if not s:
        return True
    elif len(s.strip()) == 0:
        return True
    else:
        return False

再新建一个test.py

# import string_util
#
# print(string_util.isEmpty(""))
# print(string_util.isEmpty(None))
# print(string_util.isEmpty(" "))
# print(string_util.isEmpty(" 12 "))

from string_util import isEmpty

print(isEmpty(""))
print(isEmpty(None))
print(isEmpty(" "))
print(isEmpty(" 12 "))

如果我们在string_util.py里加一个测试代码

在这里插入图片描述

我们再运行test.py

在这里插入图片描述

经过测试,当我们 from string_util import isEmpty 导入模块的时候,可执行代码也是会一起导入进来的,并且执行。

但是我们不喜欢测试代码被执行。

此时可借助于所有模块内置的_name_变量进行区分,如果直接使用python命令来运行一个模块,name_变量的值为_main;如果该模块被导入其他程序中,_name_变量的值就是模块名。因此,如果希望测试函数只有在使用 python命令直接运行时才执行,则可在调用测试函数时增加判断:只有当_name_属性为_main_时才调用测试函数。

代码如下:

if __name__ == '__main__':
    print("测试结果:", isEmpty(None))

当我们一个模块里有很多方法的时候,有时候我们只想暴露部分方法,有些方法我们仅限模块内部使用,或者暂时不想对外暴露,这时候,我们可以使用 _ _all__来实现。

string_util.py内部再写一个方法,

def isNotEmpty(s: str):
    """
        判断字符串是否不是空
    :param s:  传入字符串参数
    :return:  不空则返回True,否则返回False
    """
    if s:
        if len(s.strip()) > 0:
            return True
        else:
            return False
    else:
        return False

我们现在 想 isNotEmpty暂时不像被外部导入使用。

我们可以用_ all _来指定所有可以被导入使用的成员。

__all__ = ['isEmpty']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1019240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java的大学生在线租房平台的设计与实现(亮点:合理的租房流程、房屋报修、多角色、在线评论回复)

校园点餐小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序(小蔡coding)2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统实现5.1 前面界…

SpringBoot实战(二十四)集成 LoadBalancer

目录 一、简介1.定义2.取代 Ribbon3.主要特点与功能4.LoadBalancer 和 OpenFeign 的关系 二、使用场景一:Eureka LoadBalancer服务A:loadbalancer-consumer 消费者1.Maven依赖2.application.yml配置3.RestTemplateConfig.java4.DemoController.java 服务…

浏览器事件机制详解

目录 前言 事件类型 鼠标事件 表单事件 窗口事件 DOM事件 多媒体事件 拖拽与放置事件 移动设备事件 剪切板事件 错误事件 过渡、动画事件 事件监听 onevent addEventListener(event) 事件触发 事件流程 捕获阶段 目标阶段 冒泡阶段 事件对象 总结 相关代…

记一次 .NET 某电力系统 内存暴涨分析

一:背景 1. 讲故事 前些天有位朋友找到我,说他生产上的程序有内存暴涨情况,让我帮忙看下怎么回事,最简单粗暴的方法就是让朋友在内存暴涨的时候抓一个dump下来,看一看大概就知道咋回事了。 二:Windbg 分…

Stream之实现原理分析

文章目录 1 Stream原理1.1 引言1.2 操作分类1.3 操作分类例子分析1.4 一种直白的实现方式1.5 Stream流水线解决方案1.5.1 操作如何记录1.5.2 操作如何叠加1.5.3 叠加之后的操作如何执行1.5.4 执行后的结果在哪里 1 Stream原理 1.1 引言 我们已经学会如何使用 Stream API&…

(vue的入门

vue的入门 一. Vue是什么二. Vue的特点及优势三. 使用Vue的详细步骤四. Vue的基本语法五. Vue的生命周期 一. Vue是什么 Vue(发音为/“vjuː”/,类似于"view")是一套用于构建用户界面的渐进式JavaScript框架。它是一个开源的、轻量…

[字符串和内存函数]strcmp字符串函数的详解和模拟

strcmp函数 strcmp函数是一个用于比较两个字符串的C标准库函数。它的原型为: int strcmp(const char* str1, const char* str2);strcmp函数会比较str1和str2两个字符串的字符序列,并返回一个整数值来表示它们之间的大小关系。返回值的含义如下&#xff…

2023-简单点-IOU计算

机器视觉中的坐标体系 注意区分x,y坐标系和row,col排布 IOU交集 代码 def IOU(RecA, RecB):recA是坐标形式是[X[左上点],y[左上点],x[右下点],y[右下点]]#找到交集框的左上和右下点,可以计算交集面积xA max(RecA[0], RecB[0])yA max(RecA[1], RecB[1])xB min(R…

R reason ‘拒绝访问‘的解决方案

Win11系统 安装rms的时候报错&#xff1a; Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck vI[[j]]) : namespace Matrix 1.5-4.1 is already loaded, but > 1.6.0 is required## 安装rms的时候报错&#xff0c;显示Matrix的版本太低…

SmFeN钐铁氮稀土永磁材料

钕铁硼作为第三代稀土永磁材料&#xff0c;因其优异的磁性能而获得了广泛应用。但钕铁硼磁体也存在居里温度低&#xff0c;矫顽力温度系数大以及化学稳定性差等缺点&#xff0c;并且镨、钕、镝、铽稀土资源的巨量消耗引发了人们对环境破坏和稀土资源保障可持续性的担忧。因此磁…

小红书产品文案怎么创作,达人投放技巧总结

每一个文案都有一个10万的梦。该如何快速写出爆款产品文案&#xff0c;让消费者在读到文案的第一分钟&#xff0c;就被产品深深吸引呢&#xff0c;今天来给大家分享下小红书产品文案怎么创作&#xff0c;达人投放技巧总结&#xff01; 一、文案的三大关键 影响一篇文案阅读量的…

天翎知识管理系统:强大的权限管理功能,保障知识安全

编者按&#xff1a; 知识管理系统的权限管理功能&#xff0c;可以帮助企业实现对知识库的精细化管理&#xff0c;保证知识库的安全性和稳定性。本文将介绍天翎知识管理系统的权限管理体系&#xff0c;通过权限管理&#xff0c;控制用户的编辑和审核权限&#xff0c;从而保证知识…

05. OpenFeign 服务调用

Spring Cloud 微服务系列文章&#xff0c;点击上方合集↑ 1. 简介 微服务架构中使用OpenFeign进行服务调用&#xff0c;OpenFeign提供了一种简洁的方式来定义和处理服务间的调用。 OpenFeign作为一个声明式的、模块化的HTTP客户端&#xff0c;通过接口的定义和注解的使用&…

docker安装es docker安装Elasticsearch windows linux

下载Elasticsearch和Kibana镜像docker pull elastic/elasticsearch:8.8.2 docker pull elastic/kibana:8.8.2 2. 设置max_map_countwindows&#xff1a; wsl -d docker-desktop sysctl -w vm.max_map_count262144 exit linux&#xff1a;cat /proc/sys/vm/max_map_count sys…

32:TX Text Control ActiveX/ASP.NET/WinForms/WPF Crack

TX Text Control ActiveX 32.0 添加操作“普通”样式表的能力。 2023 年 9 月 14 日 - 15:38新版本 特征 脚注- 在文档中插入与 Microsoft Word 兼容的脚注。脚注是一种文字处理功能&#xff0c;允许用户在页面底部插入附加信息。 可编辑的[普通]样式表- 添加了操作[普通]样式的…

虚拟人运营 | 金融品牌如何借助数字人IP撬动年轻圈层?

近年来&#xff0c;金融行业在不断尝试寻找一种新方式&#xff0c;去探索触及Z世代年轻圈层&#xff0c;数字人作为数字化时代的新介质&#xff0c;成为了金融业链接年轻人的新载体。 在银行的应用场景里&#xff0c;主要打造智能客服、数字员工、虚拟主播等。如浦发银行数字员…

李宏毅hw-6利用GAN生成动漫图像

一、查漏补缺、熟能生巧&#xff1a; 1.什么是转置卷积convTranspose、以及这种转置卷积怎么使用&#xff1a; &#xff08;1&#xff09;具体的原理直接看李沐老师的那个演示&#xff0c;非常清晰&#xff1a; 47 转置卷积【动手学深度学习v2】_哔哩哔哩_bilibili &#x…

无涯教程-JavaScript - INT函数

描述 INT函数将数字四舍五入到最接近的整数。 语法 INT (number)争论 Argument描述Required/OptionalNumberThe real number you want to round down to an integer.Required 适用性 Excel 2007,Excel 2010,Excel 2013,Excel 2016 Example JavaScript 中的 INT函数 - 无…

2023Web前端逻辑面试题

1、现有9个小球&#xff0c;已知其中一个球比其它的重&#xff0c;如何只用天平称2次就找出该球&#xff1f; ①把9个球分成三份&#xff0c;三个一份&#xff1b; ②拿出其中两份进行称量&#xff1b;会分为两种情况 若拿出的两份小球称量结果&#xff0c;重量相等&#xff1b…

idea 启动命令过长

报错: 运行 MyBatisPlusGenerator35Template 时出错。命令行过长。 缩短命令行并重新运行。 解决: