为什么说python简单_为什么很多人都说 Python 简单?

2023-11-15

Python是一门入门简单,精通困难的编程语言。

Python是一门比较高阶的语言,在基本语法和使用方面没有C、Java那么复杂。因此,对于入门者来说,很接近于自然语言的表述方式,经过短暂的的学习就可以完成一些简单的工作。

但是,我认为如果仅用一两年Python就断言“Python简单”的同学,95%都不是真正的懂得Python。

以我们经常会用的Python导入工具包为例,这对于Python初学者应该是最基础、最简单的部分,但是,绝大多数都对Python工具包理解透彻。

模块与工具包

模块(modules)和工具包(packages)这2个概念首当其冲,经常被Python开发者混为一谈。

虽然,二者有很多相同之处,但是还是存在一定差异。因此,要想彻底理解import,首先就需要理解模块与工具包的异同点。

模块

Python官网对于模块的定义如下:模块具有一个包含任意Python对象的命名空间,通常用作Python代码组织单位的对象。

实际上,一个模块通常对应一个.py文件,模块的真正功能是可以将其导入到其他代码中,并重复使用,例如:

>>> import math

>>> math.pi

3.141592653589793

第一行代码,通过import把math模块导入到代码中,通过math.pi来调用pi这一属性。

这里需要注意,这里写的math.pi不仅是单纯的pi,它还把math充当所有属性保持统一的命名空间。命名空间对于保持代码的可读性和组织性非常有用。

你可以利用 dir来查看命名空间的内容:

>>> import math

>>> dir()

['__annotations__', '__builtins__', ..., 'math']

>>> dir(math)

['__doc__', ..., 'nan', 'pi', 'pow', ...]

除了上述直接导入,我们还可以导入模块下特定的部分:

>>> from math import pi

>>> pi

3.141592653589793

>>> math.pi

NameError: name 'math'isnot defined

请注意,这里对比于前一种方式已经发生了一些转变。这里的pi是放置在全局命名空间内,而不是math的命名空间内。

同样,首先看一下Python官网对工具包的定义:一个Python模块,可以包含子模块或递归地包含子包。从技术上讲,包是具有__path__属性的Python模块。

从定义上可以看出,包仍然是模块。但是,它们还是有一定的区别。

从编码上来讲,Python包需要在目录下创建一个名为__init__.py的文件。

导入模块时,通常不会导入子模块和子包,但是,你可以通过添加__init__.py来将需要导入的子模块和子包囊括进去。

绝对导入与相对导入

from ... import ...这种导入当时在代码中经常会遇到,假如,我们有如下工程:

world/

├── africa/

│ ├── __init__.py

│ └── zimbabwe.py

├── europe/

│ ├── __init__.py

│ ├── greece.py

│ ├── norway.py

│ └── spain.py

└── __init__.py

当想要导入africa时可以这样:

from world import africa

也可以这样:

from . import africa

那么这里面的**点(.)**代表什么含义?

这里的点(.)就是一种相对导入,你可以理解为从当前包中导入africa。

相反,绝对导入语句中,需要明确命名当前包:

from world import africa

在编码过程中,你可以选择绝对导入,也可以选择相对导入。只不过,PEP 8风格指南中,建议使用绝对导入。

从这个简单的例子来看Python工具包和模块的导入,会发现,它不仅仅是import那么简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么说python简单_为什么很多人都说 Python 简单? 的相关文章

随机推荐

  • 等保2.0二级安全要求

    第二级安全保护能力 应能够防护免受来自外部小型组织的 拥有少量资源的威胁源发起的恶意攻击 一般的自然灾害 以及其他相当危害程度的威胁所造成的重要资源损害 能够发现重要的安全漏洞和处置安全事件 在自身遭到损害后 能够在一段事件内恢复部分功能
  • Android中字母大小写切换的快捷键

    1 选中要切换到字母 eclipse ctrl shift x 转为大写 ctrl shift y 转为小写 2 Androidstudio字母大小写切换用一下方法或直接使用快捷键 大小写转换 Cmd Shift U Ctrl Shift
  • 使用Docker-compose部署redis主从

    废话少说 直接来上docker compose yaml文件 切记格式 version 2 networks myweb external name mysql docker compose myweb services redis mas
  • ICLR 2022最佳论文解读

    微信公众号 圆圆的算法笔记 持续更新NLP CV 搜推广干货笔记和业内前沿工作解读 后台回复 交流 加入 圆圆的算法笔记 交流群 回复 时间序列 多模态 迁移学习 NLP 图学习 表示学习 元学习 等获取各个领域干货算法笔记 今天给大家介绍
  • Nginx配置详情

    Nginx1 16 0安装详见 CentOS7 3编译安装LNMP之 一 Nginx 1 16 0安装 本文以nginx1 16 0编译安装版为例 目录如下 usr local nginx nginx的安装目录 usr local ngin
  • “logits”到底是个什么意思?

    1 什么是logits 说到Logits 首先要弄明白什么是Odds 在英文里 Odds的本意是指几率 可能性 它和我们常说的概率又有什么区别呢 在统计学里 概率 Probability 描述的是某事件A出现的次数与所有事件出现的次数之比
  • Map双列集合的四种遍历方式

    Map双列集合的四种遍历方式 第一种 键找值遍历方式 通过keySet 方法可以获取到所有键组成的Set集合 public Set
  • 关于Streamspot中StreamHash的介绍

    原文 Fast Memory efficient Anomaly Detection in Streaming Heterogeneous Graphs 在阅读这篇文章时 我对于文中所提到的StreamHash方法特别费解 在重复阅读了好几
  • 解决SwipeRefreshLayout和ViewPager滑动冲突的三种方案

    一篇文章读懂android事件消费 事件分发 事件拦截Android 源码分析事件分发机制 事件消费 事件拦截解决SwipeRefreshLayout和ViewPager滑动冲突的三种方案 在SwipeRefreshLayout的内部包一个
  • 论坛系统数据库设计

    论坛系统数据库设计 1 引言 2 QQ 摆烂式 设计 2 1数据表设计猜测 2 2分析增删查改实现方法 2 3分析QQ 摆烂式 的优缺点 2 4改进方法 3 盖楼式 设计 3 1数据表设计猜测 3 2数据表设计优化 4 推荐设计 1 引言
  • Matlab----下载和安装教程

    Matlab 下载 文件中有以下文件 Matlab 安装 步骤1 打开安装软件 步骤2 运行安装软件 在matlab 2018的文件夹下找到setup 选中右键以管理员身份运行 步骤3 选择使用文件安装密钥 然后点击下一步 步骤4 是否接收
  • 【1day】复现金和协同管理平台任意文件读取漏洞

    注 该文章来自作者日常学习笔记 请勿利用文章内的相关技术从事非法测试 如因此产生的一切不良后果与作者无关 目录 一 漏洞描述 二 影响版本 三 资产测绘 四 漏洞复现 一 漏洞
  • Unity3D-VR《静夜诗》3-开始按钮与开始文本信息

    Unity3D VR 静夜诗 3 开始按钮与开始文本信息 1 开始按钮及开始信息文本UI对象的设计 1 1容器对象PanelBeginUI 1 2开始信息文本TextBegin 1 3开始按钮BtnBegin 2 开始按钮实现凝视触发 凝视
  • 521 加速乐多层响应 Cookie逆向 + 代码高度混淆

    网址 aHR0cHM6Ly93d3cubWFmZW5nd28uY24vaS81Mzc2OTc4Lmh0bWw 目录 声明 本文章中所有内容仅供学习交流使用 不用于其他任何目的 不提供完整代码 抓包内容 敏感网址 数据接口等均已做脱敏处理 严
  • 《Centos7——elk+lnmp+zabbix+grafana来分析日志》

    目录 elk lnmp zabbix grafana来分析日志 一 Elasticsearch部署 192 168 234 130 1 上传安装包 2 安装elasticsearch kibana 3 修改es和kibana配置文件 4 启
  • weixin4j开发微信分享案例

    微信官方文档 步骤一 绑定域名 先登录微信公众平台进入 公众号设置 的 功能设置 里填写 JS接口安全域名 备注 登录后可在 开发者中心 查看对应的接口权限 步骤二 引入JS文件 在需要调用JS接口的页面引入如下JS文件 支持https h
  • 关于VUE中v-for循环的dom使用ref获取不到问题

    背景 初学vue做练习项目的时候 基于vue2 0版本使用refs属性获取v for循环的dom时出现获取不到dom的情况 尝试采用原生的方法出现同样的情况 查了很多资料没有找到对应的详细说明 现将我发现的一些问题分享给大家 html部分
  • 量化选股策略搭建(四)(短期策略搭建)

    量化选股策略搭建 四 短期策略搭建 首先我们需要把选股这个问题转化为一个机器学习问题 那么如何转化成机器学习问题呢 机器学习也分两类问题 1 回归问题 2 分类问题 常规的一些方法是预测股价增长来进行选股 回顾问题 这里我们将其转化为一个分
  • ZooKeeper 分布式协调工具

    目录 一 ZooKeeper 概述 二 ZooKeeper Windows 单机版安装 三 ZooKeeper 集群环境下选举过程 四 ZooKeeper 存储数据的过程 五 ZooKeeper 监听 六 java 操作 ZooKeeper
  • 为什么说python简单_为什么很多人都说 Python 简单?

    Python是一门入门简单 精通困难的编程语言 Python是一门比较高阶的语言 在基本语法和使用方面没有C Java那么复杂 因此 对于入门者来说 很接近于自然语言的表述方式 经过短暂的的学习就可以完成一些简单的工作 但是 我认为如果仅用