python笔记11

1、模块简介

在Python中,模块是一种组织代码的方式,允许你将相关的代码放在一个文件中,以便更好地组织和重用。模块可以包含变量、函数和类等。下面是关于Python模块的一些基本概念:

1. 创建模块

要创建一个模块,只需创建一个包含Python代码的文件,文件的扩展名通常是.py。例如,如果你有一个名为的文件mymodule.py,它可以被视为一个模块。

# mymodule.py
def say_hello():print("Hello from mymodule!")my_variable = 42

2.导入模块

你可以使用关键字导入模块import,并使用模块中定义的变量、函数或类。

import mymodulemymodule.say_hello()  # 调用模块中的函数
print(mymodule.my_variable)  # 访问模块中的变量

还可以使用语法导入模块的特定成员:from ... import ...

from mymodule import say_hellosay_hello()  # 可以直接使用函数,而不需要使用模块名前缀

3.模块的命名空间

模块有一个自己的命名空间,可以防止命名冲突。在上面的例子中,mymodule是模块的命名空间。

4.使用别名

可以使用关键字as为导入的模块或模块成员设置别名,以便更方便地使用。

import mymodule as mmmm.say_hello()

5.属性__name__

  1. 当一个模块被直接执行时,__name__ 的值为"__main__" 。这表示这个脚本是主程序,而不是被导入到其他模块中的一部分。
    # example.py
    def main():print("This is the main function.")if __name__ == "__main__":main()
    

    如果你运行这个脚本, __name__的值将是"__main__" ,并且main() 函数将被执行。

  2. 当一个模块被导入到其他模块中时, __name__的值是模块的名称。
    # another_module.py
    import exampleexample.main()  # 在这里,example 模块的 __name__ 值将是 "example"
    

    这种用法允许在模块中编写一些测试代码,但只有在模块被直接执行时才会运行这些代码。这种机制对于模块的测试和重用是非常有用的。 

2、模块的导入

在Python中,你可以使用 import语句导入其他模块,以便在当前模块中使用其定义的变量、函数、类等。以下是关于模块导入的一些基本用法:

1. 简单导入

最基本的导入形式是使用 import关键字,后跟模块的名称:

# 导入整个模块
import module_name# 使用模块中的变量、函数、类等
module_name.some_function()

2. 别名导入 

可以使用 as关键字为导入的模块或模块成员设置别名:

# 导入整个模块,并设置别名
import module_name as alias_name# 使用别名调用模块中的内容
alias_name.some_function()

3. 导入特定成员

如果只需要模块中的特定函数、变量或类,可以使用 语法:from ... import ...

# 导入模块中的特定成员
from module_name import some_function, some_variable# 可以直接使用导入的成员,而不需要使用模块名前缀
some_function()
print(some_variable)

4. 导入所有成员

你还可以使用 from ... import *导入模块中的所有成员。尽管这种做法在简化代码时可能会方便,但通常不推荐,因为它可能导致命名冲突和代码不易读。

# 导入模块中的所有成员(不推荐)
from module_name import *

5. 条件导入

有时你可能希望根据条件导入不同的模块。可以使用 import ... as ...的结构,并在运行时根据条件决定导入哪个模块:

if some_condition:import module1 as my_module
else:import module2 as my_modulemy_module.some_function()

以上是一些基本的模块导入用法。模块的导入使得代码可以被模块化,重用性增强,并使得代码更易于维护。

3、pythonz中的包

在Python中,包(Package)是一种用于组织模块的层次结构。它是一个包含特殊文件__init__.py 的目录,该文件可以为空,也可以包含Python代码。这个目录中的模块可以通过点记法(dot notation)来访问。

以下是关于Python包的一些基本概念和用法:

1. 包的结构

一个典型的包结构如下:

my_package/
|-- __init__.py
|-- module1.py
|-- module2.py
|-- subpackage/|-- __init__.py|-- module3.py
  • __init__.py: 是一个包含初始化代码的文件,它可以为空。当Python解释器发现一个目录中包含这个文件时,它会将这个目录视为一个包。

  • module1.py, module2.py, module3.py: 是包中的模块,包含了相关的函数、变量或类。

  • subpackage/: 是一个子包,也是一个包含 __init__.py的目录。

2. 导入包和模块

你可以使用 import语句导入包和模块。例如:

# 导入包中的模块
import my_package.module1
my_package.module1.some_function()# 导入包中的模块并设置别名
import my_package.module2 as m2
m2.some_function()# 导入子包中的模块
import my_package.subpackage.module3
my_package.subpackage.module3.some_function()

3. 使用 __init__.py

__init__.py 文件可以包含包级别的初始化代码,也可以用于导出包中的内容。例如,如果__init__.py 包含如下代码:

# my_package/__init__.pyfrom .module1 import some_function
from .module2 import another_function

那么可以在其他地方直接导入 ,然后使用其中的函数my_package

# 使用 __init__.py 导出的函数
import my_packagemy_package.some_function()
my_package.another_function()

4. 变量__all__

__init__.py中,你还可以定义__all__ 变量,用于指定哪些模块或变量应该被导出。例如:

# my_package/__init__.py__all__ = ['module1', 'module2']

这样,当使用 from my_package import *__all__时,只会导入 中指定的模块或变量。

总体而言,包是一种组织代码的有效方式,可以将相关的模块组织在一起,提高代码的可读性和可维护性。

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

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

相关文章

【DB2 流浪之旅】 第一讲 Linux 环境安装 db2 数据库

DB2数据库是IBM开发的一种大型关系型数据库平台。它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据。一般DB2是搭配IBM Power系列小机使用的,兼容性好、性能高。当然DB2也有Linux版本的,相对性能会差一些,主要…

【FAS Survey】《Deep learning for face anti-spoofing: A Survey》

PAMI-2022 最新成果:https://github.com/ZitongYu/DeepFAS 文章目录 1 Introduction & Background1.1 Face Spoofing Attacks1.2 Datasets for Face Anti-Spoofing1.3 Evaluation Metrics1.4 Evaluation Protocols 2 Deep FAS with Commercial RGB Camera2.1 H…

CF1918 D. Blocking Elements [二分+数据结构优化dp]

传送门:CF [前题提要]:二分数据结构优化dp,赛时想到了二分,想到了dp,想到了应该是某种双log的做法,但是硬是想不出正确的dp的定义,看了讲解感觉dp方程的定义还是很典的,dp题写的少是这样的… 题目要求我们输出满足所有去掉的数字和以及区间段和的最大值的最小值.不难想到使用二…

meson、ninja编译dpdk

解压目录meson编译dpdk meson buildmeson编译dpdk debug版 meson setup --buildtypedebug debugbuildmeson编译使用静态库,编译example meson .. --prefix/usr/local --buildtypedebugoptimized --default-librarystatic -Dexamplesallninja编译 ninjaninja安装…

springboot-前后端分离——第二篇

本篇主要介绍一个发送请求的工具—postman,然后对请求中的参数进行介绍,例如简单参数、实体参数、数组参数、集合参数、日期类型参数以及json类型参数,对这些参数接收进行总结。最后对响应数据进行介绍,使用统一响应结果返回浏览器…

在JAVA中如何使用ASCLL码

在Java中,你可以直接使用ASCII码来表示和处理字符。ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种计算机编码系统,用于表示英文字符为数字。ASCII码使用7位或8位二进制数表示…

轮转数组[中等]

优质博文:IT-BLOG-CN 一、题目 给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,…

Golang k8s相关yaml包的区别

问题背景 大概是因为 k8s 定义了一些特殊的数据类型,所以 k8s 对象 yaml 序列化时与其它 yaml 包结果不同。 源代码 package mainimport ("log""os""github.com/ghodss/yaml"yamlv2 "gopkg.in/yaml.v2"yamlv3 "k8s…

八数码问题dfs

import java.util.*;public class Main{static String end "12345678x";public static void swap(char[] arr,int x,int y){char temp arr[x];arr[x] arr[y];arr[y] temp;}public static int bfs(String start){//key:String 存放12345678x这种格式的字符//value…

基金分红方式:现金分红与红利再投

基金是一种集合性投资工具,通过基金,投资者可以间接持有多种证券组合,包括股票、债券等。在投资基金时,投资者通常会关注基金的收益分配方式,其中现金分红和红利再投是两种常见的方式。 一、什么是基金分红 基金分红…

Centos7安装原生Nginx并配置反向代理

一、背景 当我的应用程序需要集群化部署之时,必然需要一个反向代理,当然Nginx的大名,这里不做更多的介绍了,这里介绍一下Nginx常用的四大阵营 1 Ngnix 原生版本 nginx news 2 Nginx Plus 商用版(收费的&#xff09…

Android 12系统源码_页面管理(四)获取系统当前最上层的Activity信息

前言 很多应用开发人员,在日常开发过程中,经常会遇到一些需求,例如需要知道当前最上层的Activity是哪个,并结合这个Activity的名称来完成一些特定场景的需求。最简单的方法,是在创建Activity的时候将该Actvity存储到一…

20240127在ubuntu20.04.6下配置whisper

20240131在ubuntu20.04.6下配置whisper 2024/1/31 15:48 首先你要有一张NVIDIA的显卡,比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡!】800¥ 2、请正确安装好NVIDIA最新的驱动程序和CUDA。可选安装! 3、配置whispe…

经典左旋,指针面试题

今天给大家带来几道面试题! 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 我们可以先自己自行思考,下面是参考答案: 方法一: #define _CRT_SEC…

2024美赛数学建模D题思路+模型+代码+论文(持续更新)

2024美赛数学建模A题B题C题D题E题F题思路模型代码论文:开赛后第一时间更新,获取见文末名片 组队环节: 美赛最多是3个人参赛,一般的队伍都是由三人组成(当然如果你很大佬也可以一个人参赛),队伍…

力扣hot100 划分字母区间 贪心 思维 满注释版

Problem: 763. 划分字母区间 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 代码随想录 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public List<Integer> partitionLabels(String s){// 创建哈希…

【nginx实战】通过nginx实现http请求的keep alive长连接

文章目录 一. 概述二. nginx与client的长连接1. keepalive_timeout指令2. keepalive_requests指令场景分析 三. 保持和server的长连接1. location设置场景分析 2. upstream设置3. 场景分析场景1&#xff1a;场景2&#xff1a;场景3&#xff1a; 一. 概述 当使用nginx作为反向代…

神经网络的一些常规概念

epoch&#xff1a;是指所有样本数据在神经网络训练一次&#xff08;单次epoch(全部训练样本/batchsize)/iteration1&#xff09;或者&#xff08;1个epochiteration数 batchsize数&#xff09; batch-size&#xff1a;顾名思义就是批次大小&#xff0c;也就是一次训练选取的样…

Vue中使用定义的函数时,无法访问到data()里面的数据

const translateItems1 () > {this.translatedItems this.items1.map(item > {return {...item,label: this.$t(item.labelKey)};}); items1是我们data()里面的数据&#xff0c;无法访问到 解决办法 把箭头函数替换为普通函数 const translateItems1 function() {th…

EXCEL VBA实现重复字段出现次数并列显示

EXCEL VBA实现重复字段出现次数并列显示 Sub dotest() Dim arr, dApplication.ScreenUpdating FalseSet d CreateObject("Scripting.Dictionary")With Sheets("Sheet2")r .Cells(.Rows.Count, "a").End(xlUp).Rowarr .[a1].Resize(r, 1)En…