负基础学python编程_【数据科学系统学习】Python # 编程基础[二]

在上一篇中我们讲到了函数,如果你想在所编写的别的程序中重用一些函数的话,应该怎么办?正如你可能想象到的那样,答案是模块(Modules)。我们这一篇就从模块说起。

模块

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在 Python 中,一个.py文件就称之为一个模块(Module)。包括 Python 内置的模块和来自第三方的模块。点击查看 Python 的所有内置函数。

dir 函数

内置的dir()函数能够返回由对象所定义的名称列表。

如果这一对象是一个模块,则该列表会包括函数内所定义的函数、类与变量。该函数接受参数。

如果参数是模块名称,函数将返回这一指定模块的名称列表。

如果没有提供参数,函数将返回当前模块的名称列表。

变量通常位于函数内部,函数与全局变量通常位于模块内部。如果你希望组织起这些模块的话,就需要包(Packages)。

Python 引入了按目录来组织模块的方法,称为包(Package)。它是一种能够方便地分层组织模块的方式。包是指一个包含模块与一个特殊的 __init__.py 文件的文件夹,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块。

使用模块

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在 Python 中,是通过_前缀来实现的。

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如__author__,__name__就是特殊变量。我们自己的变量一般不要用这种变量名。

类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等。

安装第三方模块

对应的 pip 命令是pip3。

默认情况下,Python 解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中:

数据结构

数据结构(Data Structures)是一种结构,能够将一些数据聚合在一起。换句话说,它们是用来存储一系列相关数据的集合。 Python 中有四种内置的数据结构——列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。

列表

列表是一种用于保存一系列有序项目的集合,也就是说,你可以利用列表保存一串项目的序列。应用方括号[]括起来,元素之间用逗号隔开。

一旦你创建了一张列表,你可以添加、移除或搜索列表中的项目。既然我们可以添加或删除项目,我们会说列表是一种可变的(Mutable)数据类型,即这种类型是可以被改变的。

Python 为 list 类提供了一种append方法,能够允许你向列表末尾添加一个项目。列表的sort方法对列表进行排序,这一方法影响到的是列表本身,而不会返回一个修改过的列表。del语句会从列表中移除相应的项目。最后,想了解列表对象定义的所有方法,可通过help(list)语句。

元组

元组(Tuple)用于将多个对象保存到一起。你可以将它们近似地看作列表,但是元组不能提供列表类能够提供给你的广泛的功能。

元组的一大特征类似于字符串,它们是不可变的,也就是说,你不能编辑或更改元组。

元组是通过特别指定项目来定义的,在指定项目时,你可以给它们加上括号(),并在括号内部用逗号进行分隔。

元组通常用于保证某一语句或某一用户定义的函数可以安全地采用一组数值,意即元组内的数值不会改变。

字典

字典就像一本地址簿,如果你知道了他或她的姓名,你就可以在这里找到其地址或是能够联系上对方的更多详细信息,换言之,我们将键值(Keys)(即姓名)与值(Values)(即地址等详细信息)联立到一起。在这里要注意到键值必须是唯一的,正如在现实中面对两个完全同名的人你没办法找出有关他们的正确信息。

另外要注意的是你只能使用不可变的对象(如字符串)作为字典的键值,但是你可以使用可变或不可变的对象作为字典中的值。

在字典中,你可以通过使用符号构成d = {key : value1 , key2 : value2}这样的形式,来成对地指定键值与值。在这里要注意到成对的键值与值之间使用冒号分隔,而每一对键值与值则使用逗号进行区分,它们全都由一对花括号括起。

另外,字典中的成对的键值—值配对不会以任何方式进行排序。如果你希望为它们安排一个特别的次序,只能在使用它们之前自行进行排序。

你将要使用的字典是属于 dict 类下的实例或对象。

切片:

切片是一个重要的概念。切片为序列的一部分,那么什么是序列呢?

序列的主要功能是资格测试(Membership Test)和索引操作(Indexing Operations),它们能够允许我们直接获取序列中的特定项目。

上面的列表、元组和字符串都可以看作序列(Sequence)的某种表现形式。它们都拥有一种切片(Slicing)运算符。

切片操作:

Python 从 0 开始计数,因此索引操作也从 0 算起,索引操作也可以使用负数,此时位置计数将从队列的末尾开始。如 shoplist[-1] 指的是序列的最后一个项目。

在切片操作中,第一个数字(冒号前面的那位)指的是切片开始的位置,第二个数字(冒号后面的那位)指的是切片结束的位置。

如果第一位数字没有指定,Python 将会从序列的起始处开始操作。如果第二个数字留空,Python 将会在序列的末尾结束操作。

也可以在切片操作中提供第三个参数,这一参数将被视为切片的步长(Step)(在默认情况下,步长大小为 1)。当步长为 2 时,我们得到的是第 0、2、4…… 位项目。当步长为 3 时,我们得到的是第 0、3……位项目。

要注意的是切片操作会在开始处返回 start,并在 end 前面的位置结束工作。也就是说,序列切片将包括起始位置,但不包括结束位置。

举例:

shoplist[1:3] 返回的序列的一组切片将从位置 1 开始,包含位置 2 并在位置 3 时结束,因此,这块切片返回的是两个项目。类似地,shoplist[:] 返回的是整个序列。

shoplist[:-1] 强返回一组序列切片,其中不包括序列的最后一项项目,但其它所有项目都包含其中。

如果你希望创建一份诸如序列等复杂对象的副本(而非整数这种简单的对象(Object)),必须使用切片操作来制作副本。

如果你仅仅是将一个变量名赋予给另一个名称,那么它们都将“查阅”同一个对象,容易造成麻烦。

集合

集合(Set)是简单对象的无序集合(Collection)。

当集合中的项目存在与否比起次序或其出现次数更加重要时,我们就会使用集合。通过使用集合,你可以测试某些对象的资格或情况,检查它们是否是其它集合的子集,找到两个集合的交集,等等。

>>> bri = set(['brazil', 'russia', 'india'])

>>> 'india' in bri

True

>>> 'usa' in bri

False

如有不足,欢迎指正。

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

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

相关文章

【JX4G】JX4G摄影测量工作站快捷键大全

本文章总结了JX4G数字摄影测量工作站中常用的快捷键及其用法。 JX4G快捷键一览表序号快捷键作用描述1X删除可以框选,右键删除2C强制闭合可以闭合等高线等3S图形映射开关控制二维图形在三维立体中的显示4Z输入高程值可锁定高程5T流线和折线之间互换流线和折线之间互换…

python3 最简单的实现 模版设计模式

在项目开发过程时,遇见某些子类的逻辑处理流程大致相同,可是用模板模式减少代码冗余,降低耦合。 例如实现某一窗体或者页面启动时,第一步需要加载启动界面图片资源,第二步加载个人信息,第三步加载个人钱包…

《代码整洁之道》读书笔记-1

前言:我最近在读《代码整洁之道》这本书,在读的过程中发现如果只是读,不动手做点什么的话,总感觉少了点什么,于是就写点总结,给自己加深印象。当然,本文只是理论,不会讨论如何写出整…

什么是Freedoc?Freedoc是什么?

本文讲的是什么是Freedoc?Freedoc是什么?,【IT168 资讯】Freedoc是刘鹏提出的一个概念,其目的是建立一种简易的免费文档共享和版权保护机制。  Freedoc的想法来自Freeware和开源软件:既然大量软件可以免费合法共享&a…

玩转CSS选择器(一) 之 使用方法介绍

前言 前几天整理了CSS一些技术关键字,但是因为自己的知识过于单薄,觉得考虑的不充分有欠缺,随后便在sf.gg提出了这个问题《关于CSS核心技术关键字都有哪些?》,也是为了让厉害的人一起参与进来,用他们的经验…

php基础-1

//echo "hello","aaaa";//输出语法,可以输出多个字符串//print "world"; //可以输出,只能输出一个字符串 用"."拼接可以输出,用","拼接直接报错 //数据类型 int,double,float,string,char…

工业相机和普通相机的区别详解_数码单反相机和胶片单反相机的区别

从相机出世到现在,相机的种类可以分为两种,一个是早期的胶片相片,另一个是现在的数码相机,数码相机的种类也是有很多种,其中最为常见就是单反相机了。那么今天我们就来看看胶片机和单反的区别。相机的种类总的来说可以…

剑指offer之二进制中1的个数

1 问题 实现一个函数,输入一个函数,输出该二进制数据中1的个数。例如9表示二进制数据1001,有2位是1,因此输入9,该函数会输出2。 2 分析 我们先了解下计算机里面位运算,有5种 1)& 这个是与…

ArcGIS 10.6 Data Interoperability Tools的安装与使用(附安装包下载)

ArcGIS平台中提供了一个数据交互操作工具Data Interoperability Tools,安装Desktop的时候不是一并安装的,这样导致Data Interoperability Tools工具箱下的工具(如Quick Import)全面有一个红色的叉号,无法正常使用,解决办法是手动安装Data Interoperability Tools,位于软…

女朋友强依赖我!我引入IOC后,从此我们的关系微妙而稳固!

此文从面向对象设计角度分析依赖倒置原则,引入依赖注入,IOC相关内容进行探讨,文中引用女朋友案例可能引起分手风险,故理解为 new 对象。想起在学校的时候,有一个任务就是设计一款宠物商店项目。那时候引入三层架构设计…

Qt 第二步 槽与信号(一) 实现点击按钮并弹窗

信号与槽是Qt中的核心,也是Qt的特有的。在Qt中信号与槽的关键字为slots、signals、emit。 具体信号与槽将会在下一节中详细说明,因为担心一些读者在没了解过槽与信号前直接讲述过深导致门槛提高,阅读困难,所以当前这一篇文将在不理…

mvc 返回一个对象 到视图接收

public ActionResult InfoFrame() { List<Users> list new List<Users>(); Users user new Users(); if (Session["UserID"] null)//判断是否没登录 { return RedirectToAction("LoginIndex", "Login"); } else { string sql st…

CAD格式数据转ArcGIS数据方法总结

本文总结CAD数据转换为ArcGIS支持数据格式的常见几种方法。 目录 1. 在CASS软件中,导出为shp格式 2. 在ArcGIS软件中加载(Add Data)DWG格式的CAD数据 3. 使用ArcGIS提供的Conversion Tools

语言 分组计算hr_干货 | HR不得不知的面试技巧

面试是求职者倍感煎熬的时刻&#xff0c;但其实&#xff0c;面试也让不少HR们颇有压力。毕竟&#xff0c;要在短时间内快速了解一个人&#xff0c;并判断是否适合岗位、业务部门会不会满意、能不能适应企业文化等并不容易。所以&#xff0c;今天Anna给大家整理了一份面试问题汇…

剑指offer之求数组里面只出现一次的的两个数据

1 问题 一个整型数组里除了两个数字之外&#xff0c;其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 2 分析 第一种方法&#xff1a;我们用位运算 我们想到位运算 &#xff08;1&#xff09; a^a0&#xff08;2&#xff09;a^0a&#xff08;2&#xff09;a…

python3 爬虫第一步 简单获取网页基本信息

注&#xff1a;本系列专栏需要有简单的python3 语言基础 爬虫的相关作用在此就不再说明&#xff0c;相信能够点进该系列文章的读者都已经了解了爬虫是什么&#xff0c;并且能够做什么。由于是发布在互联网的文章&#xff0c;所以系列文章都不以书籍的方式从头到尾的叙述作用及其…

将旧版 WCF 应用程序迁移到 CoreWCF

前言CoreWCF 项目团队发布了 CoreWCF 的 1.0 版本&#xff0c;这是 WCF 到 .NET Core 平台的移植。我觉得&#xff0c;CoreWCF 适用于这类场景使用——基于 WCF 的旧版应用程序已在 Windows 平台上运行了很多年&#xff0c;但是希望将代码迁移到 .NET Core&#xff0c;以利用 L…

C语言中的短路现象

C语言短路现象讲解 - 短路现象 1 表达式1 && 表达式2 && 表达式3; 分析&#xff1a; 只有当表达式1为真&#xff08;非0&#xff09;时才需要判断表达式2的值&#xff1b;只有表达式1和2都为真&#xff08;非零&#xff09;时&#xff1b;才需要判断表达式3的…

记录我的学习历程--二维数组解决平面图形题

打印出3 7 2 4 6 81 5 9代码如下转载于:https://blog.51cto.com/4139737/1684269

剑指offer之归并排序

1 问题 是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有序&#xff0c;再使子序列段间有序。若将两个有序表…