Python-创建并调用自定义文件中的模块/函数

背景:在Python编程中,我们常常需要创建自己的专属文件,以便帮助我们更高效,快捷地完成任务。那么在Python中我们怎么创建并调用自己文件中的模块/函数呢?

在Python中调用自定义文件,通常是指调用自己编写的Python模块或函数。以下是一些常见的调用情况:

1,同一目录下调用:
如果自定义文件与当前Python文件位于同一目录,可以直接使用import语句导入:
import 文件名
或者使用from语句导入特定的函数或变量:
from 文件名 import 函数名
2,不同目录下调用:
如果自定义文件位于不同的目录,需要先将该目录添加到Python的搜索路径中。可以通过设置sys.path变量来实现:
import sys
sys.path.append('路径/to/自定义文件')
之后,就可以使用import语句导入文件了:
import 文件名
3,调用自定义库:
如果自定义文件是一个库,并且已经安装在Python环境中,可以使用import语句直接导入:
import 库名
如果库文件不在标准库路径中,可能需要添加库文件所在路径到sys.path中:
pythonimport sys
sys.path.append('路径/to/自定义库')
import 库名

Pycharm下的调用问题:
在Pycharm中,如果调用同目录下的文件,可能会有波浪线提示,但通常不影响运行。可以通过设置source_path来解决这个问题:
右键点击当前工作的文件夹,选择Mark Directory as > Sources Root,将当前文件夹加入source_path。
在调用自定义文件时,还应注意文件的命名和路径,确保Python解释器能够正确找到并导入所需的文件。同时,如果文件中有__init__.py文件,这通常表示该文件夹是一个Python包,可以使用import语句导入包中的模块。

本篇文章将着重讲述第一个情况(因为Python入门这种情况接触最多)

1:创建一个自定义文件

我们先在pythonProject1(python项目1)下创建了新文件,命名为name_1.py。接着在name_1.py文件中自定义了一个函数odd()(如上所示),odd()将判断用户传递的实参是否为偶数,如果是,则返回值1;否则返回空值。

2,调用自定义文件中的模块/函数

接着上一步的操作,我们再在python项目1下创建一个新文件并将其命名为function_1.py,然后尝试在function_1.py中引用name_1.py中的odd()函数-'from name_1 import odd'。此时我们发现Pycharm并未给出任何强报错提示(红色提示),表明我们成功引用了name_1.py中的odd()函数。

3,尝试运行一下观察其是否与预期相符

我们尝试打印一下odd(2)的结果(按预期结果为1)-'print(odd(2))'。结果不出所料,为1。至此,所有工作均取得成功,实验结束。

4,拓展延伸

我们已经知道一般情况下自定义文件中的函数在调用时同Python中的标准库函数没什么两样,但是其他情况呢?

保持name_1.py中函数不变,我们尝试打印一下odd(1) -’print(odd(1))‘。(按预期为'None')

发现返回值为空 -'None',实验完美符合预期。Ok,我们可以在后面的编程中放心使用自定义文件了。

其余示例:

(再次强调:Pycharm下的调用问题:
在Pycharm中,如果调用同目录下的文件,可能会有波浪线提示,但通常不影响运行。可以通过设置source_path来解决这个问题:
右键点击当前工作的文件夹,选择Mark Directory as > Sources Root,将当前文件夹加入source_path。
在调用自定义文件时,还应注意文件的命名和路径,确保Python解释器能够正确找到并导入所需的文件。同时,如果文件中有__init__.py文件,这通常表示该文件夹是一个Python包,可以使用import语句导入包中的模块。

期待你的交流指教,我是闪云-微星,我们下期再见!

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

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

相关文章

【C++】C++17结构化绑定、std::optional、std::variant、std::any

二十二、C17中的结构化绑定、std::optional、std::variant、std::any 本部分是一个小系列,介绍C17中新引入的、用来解决各种不同返回情况的、标准库新组件。 1、C的结构化绑定 结构化绑定structured bindings是C17中引入的一项特性,它允许开发者方便地…

ntkrnlmp.exe导致蓝屏死机的解决方法

在使用Windows操作系统的过程中,用户可能会遇到由ntkrnlmp.exe文件错误引发的蓝屏死机(Blue Screen of Death, BSOD)问题,这不仅影响了日常的工作效率,也可能造成数据丢失的风险。本文将为您提供一系列即时排查与修复n…

U3D游戏开发之骨骼动画相关

目录 1 作为U3D程序如何制作骨骼动画 2 骨骼动画程序代码相关 这个内容我在很久之前就想写了,很多项目也与骨骼动画挂钩,今天我们揭秘的是2D骨骼动画。来聊一聊大家可能非常关注的两个问题:作为程序如何制作骨骼动画?接到美术的骨…

java:题目:用Java实现简单的自取取款操作

import java.util.Scanner; public class ATM {public static void main(String[] args){//自主取款主类Scanner scnew Scanner(System.in);System.out.println("请输入账户号码:");String BankAccoutsrsc.nextLine();/BankAccout3 newBankAccoutnew Bank…

VLAN 高级技术 ——QinQ的配置

QinQ的概述: QinQ技术是一种扩展虚拟局域网(VLAN)数量空间的技术,通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来实现。以下是对QinQ技术的详细概述: QinQ技术的定义与背景 定义:QinQ&#xff08…

不得不承认供电公司信息宣传向媒体投稿的好方法找到了

初入国网供电公司,我被分配到了信息宣传部门,负责每月的信息宣传投稿任务。这项任务看似简单,实则充满挑战。一开始,我满怀热情,以为只要写出高质量的文章,就能顺利发表。然而,现实给了我当头一棒。传统的邮箱投稿方式,不仅竞争压力大,审核严格,而且周期漫长。每次投稿后,我总是…

『YOLOV5』| 一文搞定训练过程中的意外终止、以及想继续增加训练轮数!

文章目录 情况一:意外训练中断(程序未训练完成,想完成目标训练轮数)情况二:自动训练完成(程序已完成训练,想增加训练轮数) 情况一:意外训练中断(程序未训练完…

GCC编译器的`-Wall`、`-Wextra`和`-pedantic`选项解读

gcc是广泛使用的开源编译器,-Wall、-Wextra和-pedantic是gcc中用于控制警告信息的选项,以下是详细介绍: -Wall(启用大部分警告) 功能:-Wall 选项用于启用一系列常用的警告信息,这些警告能帮助…

MMBench-Video:上海 AI Lab 联合多所高校推出长视频理解基准测试工具,全面评估 LVLMs 视频理解的能力

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号&#xff…

高频电子线路---调角频谱与频宽

目录 调角频谱(FM单频调制) 带宽 调频方法 直接调频方法与电路 变容二极管 如何提升频偏? 1. 增大调制信号的幅度(增大调制深度) 2. 提高调制信号的频率 3. 提高调制深度(调制指数) 4. 增加发射功率 5. 使用特殊的调制…

摘要、数字签名、对称加密、非对称加密综合应用示例以及技术原理说明

图:介绍了数字信封的安全传输过程 关键术语 散列:Hash(哈希),一般翻译做散列、杂凑,是把任意长度的输入(数据信息)通过散列算法变换成固定长度的输出,该输出就是散列值…

java学习3---面向对象

一、设计对象并使用 1.类和对象 类是共同特征的描述;对象是真实存在的具体实例。 2.类的几个补充注意事项 二、封装 对象代表什么,就得封装对应的数据,并提供数据对应的行为。 封装告诉我们如何正确的设计对象 三、this关键字 this可以区…

Maven

Maven 命令方式构建项目 mvn compile:编译项目,生成target文件(不编译测试代码) mvn package:打包项目,生成jar或war文件(不指定默认jar包) mvn clean:清理编译或打包后…

leetcode 173.二叉搜索树迭代器

1.题目要求: 2.题目代码: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nu…

vue插件清除 所有console.log()

一、作用 1、提升性能console.log() 语句会消耗一定的性能,尤其是在频繁调用的情况下。在生产环境中移除这些语句可以提高应用的运行效率。 2、减少信息泄露console.log() 可以输出敏感信息(如用户数据、API 响应等)。在生产环境中&#xf…

Day102漏洞发现-漏扫项目篇Poc开发Yaml语法插件一键生成匹配结果交互提取

知识点: 1、Nuclei-Poc开发-环境配置&编写流程 2、Nuclei-Poc开发-Yaml语法&匹配提取 3、Nuclei-Poc开发-BurpSuite一键生成插件 Nuclei-Poc开发-环境配置&编写流程 1、开发环境:VscodeYaml插件 Visual Studio Code - Code Editing. R…

【IEEE出版】第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2024,12月06-08)

第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2024) 2024 6th International Conference on Information Technology and Computer Application 会议官网:itca2024.iaecst.org 会议时间:2024年12月06-08日 截稿时…

聊一聊Spring中的@Scheduled注解

一、样例 1.1 demo代码 package com.lazy.snail;import org.springframework.stereotype.Component; import org.springframework.scheduling.annotation.Scheduled;/*** ClassName MyTask* Description TODO* Author lazysnail* Date 2024/10/29 17:56* Version 1.0*/ Compo…

如何高效集成每刻与金蝶云星空的报销单数据

每刻报销单集成到金蝶云星空的技术实现 在企业日常运营中,费用报销和付款申请是两个至关重要的环节。为了提升数据处理效率和准确性,我们采用了轻易云数据集成平台,将每刻系统中的报销单数据无缝对接到金蝶云星空的付款申请单中。本案例将详…

使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-3-预制菜-惠发食品(603536)

使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-预制菜。 直接看截图: 1.第一步: 查看产业链,选择查看“中国预制菜行业”,政策支持,热点 查看预制菜产业链 这里我选择了中游-生产商 到行业…