当前位置: 首页 > 编程日记 > 正文

Python基础学习3

6 模块和包

(1)    命名以.py结尾的文件就是Python模块

Python的包就是一个文件夹,至少有还有一个__init__.py的文件

包中可以有文件夹,文件夹中可以有包

(2)    文件的导入

每使用一个变量名或者函数时,就需要导入另一个文件

例:从mian.py中导入lib文件下的一个函数,现在想从mian.py中使用do_parse函数

在编译器下通过运行python main.py从而运行main.py,和main.py在同一个目录下面的其他包可以被导入使用,现在要导入lib中的do_parse函数,需要在mian.py的源代码中写 from lib.parse import do_parse(parse是lib包下面的一个.py文件,do_parse是该文件下的一个函数)


第三方包的导入

如果lib不在同一个目录下,Python可能找不到,可以使用from .xxx(用.表示当前模块下的,另外还有..就是当前模块的上一目录下)

如果第一次导入的时候,会执行刚刚的代码,但是如果第二次导入的时候,就不会第二次执行了

(3)    Python2的特有导入

如果是同包的目录下,就不用使用.号,但是不建议使用

(4)    使用小技巧

dir(模块):查看模块属性

如:在Linux下进入Python,执行(sys是一个系统包)(可以把sys暂时理解为一个对象):import sys->dir(sys)下面会弹出一系列的变量名,此时可是执行:type(sys.version)查看version的属性这里显示的是str,意思是version是str类型的。如果执行type(sys.getsizeof),此时显示的getsizeof是一个函数,如下图


技巧2

每个内置的模块都有一个内置的变量,以双下划线开头,双下划线结尾的__name__,不用定义可以直接使用,一般是一个str类型,即每一个.py下都有一个内置变量,如果是入口模块的话(模块就是一个.py文件),它的内置变量就固定为__main__,如果使用if __name__==”__main__”就可以判断这个模块是否为入口模块

7 高级数据结构

(1)    元组

与列表很相似,定义时把中括号改成小括号,只不过元组的内容不可变,可以理解为常量,注意(2)不是元组,而应该使用(2,),这个是只有一个元素的元组的写法

(2)    字典

想要表示映射的关系

用{}括起来,如

{

“123”:123

456:”hello”

}

注意冒号左边是常量,叫做键,冒号右边是常量或者变量,叫做值,可以讲上式写成一行a={“123”:123,456:”hello”}。如果我们想使用字典里面的值,则使用a[“123”],字典取值,得到了123.如果想要改变字典中的值的话,则使用a[“123”]=”world”,字典设置值。特性是速度非常快

(3)    字符串

字符串可以理解为一个特殊的列表,列表中的每个元素就是一个字符,字符串也是一个常量,我们无法修改其值。字符串可以截获使用,如a=”hello world”,可以使用a[:5]获取前五个值的这样的一个新的字符串进行使用。

字符串的占位符替换

如a=”hello %s” % “world”:这样的话,就把%s替换成world。如果要替换多个值可以使用如下的方式a=”%s %s” % {“hello” “world”}(列表的形式进行替换)。关键字替换:a=”%(a)s%(b)s” % {a:”hello”,b:”world”}(字典形式进行替换)。

(4)    函数中使用元组和字典

当函数返回多个值时,实际上返回的就是一个元组。把一个元组赋值给其他变量时,就是一个拆包的过程。如果我们定义了一个相加的函数add(),此时可以使用元组进行传参,使用方法如下:定义元组nums=(1,2)

使用函数和元组add(*nums),实际上就是把nums替换成了1,2

使用字典和函数

param={“a”:1,”b”:2}

param(**param)->param(a=1,b=2)

8 类和对象

出来模块和函数的形式外,在我们构建大型项目的时候,我们学会使用类和对象的形式

(1)    创建类

class cat(object):

leg_cnt=4        #类属性

def __init__(self,cat_name):      #init的名字固定,整条语句不可变,固定是实例的创建过程,self固定格式,不可变,self就是一个实例化的对象

self.name=cat_name         #name是附属于self实例的一个变量,使用的方式就是这种形式

def change_name(self,cat_name):  ##一个参数一定是self,第一个参数可变,课不用,看自己的需求,这样的一个函数就是一个方法

(2)    使用类(类的实例化)

使用tom=Cat(“Tom”):进行实例化,,此时tom是一个对象

方法的调用:tom.change_name(“xiaohei”)

对象的固有属性:就是在定义类的时候,已经说明leg_cnt=4,所以tom中已经存在leg_cnt=4

(3)    类的继承

class MyCat(Cat):                         #让猫实例化

def __init__(self,cat_name):

surper(Mycat,self),__init__name

def jump(self)

printf(“try jump”)

jack=MyCat(“jack”)

jack.jump()

jack.climb()

9 文件处理

(1)    写入文件

比如我在某一文件夹下面创建了一个新的文件pome.txt,并在该文件里面写入了内容,可以使用f=open(‘\\\’,’w’)    #\\\是文件路径,而w(写入)是打开的属性,还有r(读取),a(追加)

接着使用f.write(pome)文件的一个写入方法,然后使用f.colse()进行文件的关闭

(2)读取文件

f.open(‘文件的路径’)

while Ture

line=f.readline()     #读取一行内容

if len(line) == 0:

break

printf(line,end=””)   #替换了内置的换行符,因为printf()的后面会内置一个换行符

f.close() #关闭文件

(3)with语句

with open(‘\\\’,’w’) as f:

f.write

因为加了一个with语句,当with结束时,会自动关闭文件

10 异常处理

(1)    将异常包装成一个对象,这些对象有一个基类Exception

捕获异常对象一

try:

….   #可能会出现异常的错误代码

except (一个错误类名称内置的) ase:

printf(e)     #处理这个异常

except Exception(这个是异常的基类):

#处理异常代码,如打印

else:

#没有异常的情况的代码

捕获异常2

try :

一段可能出错的代码

finally:

#最后一定会执行这个语句

另外还可以raisee   #就是抛出异常

实例演示:在Linux下使用vim创建一个a.py的文件,然后输入如下代码


保存退出后,执行pythona.py 会显示抛出异常


如果想继续抛出异常,就可是使用如下


此时执行,又会抛出异常的处理

相关文章:

CSS伪类 选择器

一、伪类:active/*被激活的元素*/:focus/*拥有键盘输入焦点的元素*/ :hover/*鼠标悬浮在元素上方时*/ :link/*未被访问的链接*/ :visited/*已被访问的链接*/ :first-child/*元素的第一个子元素*/ :lang/*带有指定 lang 属性的元素*/ CSS执行顺序是:lvcha link :hove…

svn中的revert和update

svn中的revert和update今天有人问到revert和update的问题。刚开始还真被问住了。因为感觉revert和update都可以将本地的copy更新到以前的一个版本,会有什么不同呢?查了些资料,并做了个试验,终于发现了它们的不同。假设当前最新的版…

BOM 浏览器对象模型和DOM 文档对象模型

浏览器对象模型BOM 1. 浏览器对象模型介绍 BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表…

上交三月月赛[SJTU] 1106 sudoku

题目大意:给出一道数独题,判断该数独是否有解且有唯一解。 解题思路: 由前几题的难度得,此题的难度不会太过分,所以简单暴力就可以了,40ms用时一本满足。 简单地讲一下具体的实现,从左上开始从左…

C语言-三子棋游戏

C语言中用写头文件的方式写了一个三子棋游戏 1.测试函数text.c #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include"chess.h"void menu() {printf("*************…

取余运算怎么算_TensorFlow2.0(2):数学运算

点击“机器学习算法与Python实战”&#xff0c;“置顶”公众号重磅干货&#xff0c;第一时间送达TensorFlow2.0(1)&#xff1a;基本数据结构——张量1 基本运算&#xff1a;(、-、*、/、//、%) 基本运算中所有实例都以下面的张量a、b为例进行&#xff1a;import tensorflow as …

xen二进制安装

需要几台机器做集群测试,目前只有一台机器所以用xen来虚拟化几台机器出来 系统: centos5.6 安装xen yum install kernel-xen xen修改grub /boot/grub/grub.conf将default1改为default0 default0 timeout5 splashimage(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.…

python模块之json,pickle

序列化是指把内存里的数据转变成字符串&#xff0c;以使其能保存到硬盘上或者通过网络输送到远程。 序列化的两个模块&#xff1a; json:只能把python中的int/str/list/tuple/dict类型的数据&#xff0c;可以在不同的语言之间传递数据。Python和JavaScript数据对应关系&#xf…

关于如何在pc端使用github

http://www.bcwhy.com/thread-17636-1-1.html转载于:https://www.cnblogs.com/glgl2424/archive/2013/03/13/2956944.html

Python爬虫1-Scrapy环境的安装

一. Scrapy环境的安装 1. Scrapy各平台支持情况 除了python3在Windows下不支持外&#xff0c;其余&#xff08;Linux&#xff0c;Mac&#xff09;均支持 2. 安装miniconda (1)建议使用Python2&#xff0c;用miniconda安装scrapy (2)miniconda时Python环境管理工…

汉字笔画数据_统计学原理 数据的预处理

数据审核数据审核—原始数据(raw data)完整性审核应调查的单位或个体是否有遗漏所有的调查项目或变量是否填写齐全准确性审核数据是否真实反映实际情况&#xff0c;内容是否符合实际数据是否有错误&#xff0c;计算是否正确等数据审核—二手数据(second hand data)适用性审核弄…

SqlServer时间函数的使用例子整理

为什么80%的码农都做不了架构师&#xff1f;>>> 整理SqlServer2008的时间函数如下&#xff1a; 1.获取系统时间 select getdate(); --2012-05-06 22:26:49.950 select current_timestamp; --2012-05-06 22:26:49.950 select getutcdate(); --20…

bzoj 4710 [Jsoi2011]分特产 组合数学+容斥原理

题面 题目传送门 解法 考虑容斥原理 显然&#xff0c;我们可以枚举有多少个人没有收到 然后就转化成一个组合问题了 假设现在有\(x\)个物品&#xff0c;\(n\)个人&#xff0c;可以有人没有被分到&#xff0c;那么分给这\(n\)个人的方案数为\(nx-1\choose n-1\) 然后就是分别计算…

Python爬虫2-GET_POST与开发者工具

一. GET_POST与开发者工具 1. 浏览器的基本工作规则 浏览器请求访问服务器&#xff0c;服务器返回数据 (1) 请求的格式 GET&#xff1a;长度不能大于2k参数明文显示在地址栏&#xff0c;不保密&#xff0c;通常用在查询请求 POST:长度可以很大&#xff0c;参数写…

springcloud是什么_阿里P8道出,入职阿里必会199道SpringCloud面试题,你能掌握多少?...

前言Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本&#xff0c;到目前 2020 年 3 月发布 Hoxton.SR3 版本&#xff0c;已经历经了 4 年时间。这 4 年时间里&#xff0c;Spring Cloud 一共发布了 46 个版本&#xff0c;支持的组件数从 5 个增加到 21 个。Spring Cloud…

不一样的命令行 – Windows PowerShell简介

引子 一直很羡慕Linux的命令提示符&#xff08;当然他们叫Shell&#xff09;。正则表达式&#xff0c;管道&#xff0c;各种神奇的命令&#xff0c;组合起来就能高效完成很多复杂的任务。效率实在是高。流了n年的哈喇子以后&#xff0c;终于有幸用上了Win7&#xff0c;邂逅了cm…

excel中会计专用格式问题_解决方法

excel 2003在使用格式中当选择会计专用会出现负号在左,数字在右的情况.这类设置并不是在excel中完成,而是在控制面板,区域和语言选项---自定义中设置---货币中设置,-&#xffe5;1.1改为&#xffe5;-1.1就可以解决了.包括千位分割样式保留的小数点位数等都可以在这里进行设置来…

Spring.Net Aop

Spring.Net 有四种通知&#xff1a; IMethodBeforeAdvice&#xff0c;IAfterReturningAdvice&#xff0c;IMethodInterceptor&#xff0c;IThrowsAdvice BeforeAdvice 1 using System.Reflection;2 using Spring.Aop;3 public class BeforeAdvice : IMethodBefore…

Oracle to_char函数的使用方法

本文转载于:https://blog.csdn.net/mikyz/article/details/69397030 本文转载于:https://www.cnblogs.com/aipan/p/7941917.html 本文转载于:https://blog.csdn.net/jinlong5200/article/details/3135949 转载于:https://www.cnblogs.com/demon09/p/9485627.html

python装饰器教学_Python装饰器学习(九步入门)

这是在Python学习小组上介绍的内容&#xff0c;现学现卖、多练习是好的学习方式。第一步&#xff1a;最简单的函数&#xff0c;准备附加额外功能 # -*- coding:gbk -*-示例1: 最简单的函数,表示调用了两次def myfunc():print("myfunc() called.")myfunc()myfunc()第二…

跨平台表空间传输(linux 10g表空间跨平台迁移到window 11g)

最近公司的一个项目里的linux 系统中的oracle 10g数据库&#xff0c;需要把某个表空间里的所有数据都迁移到window 2003的11g里&#xff0c;经过我与dba的交流、测试&#xff0c;决定使用跨平台的表空间传输技术&#xff0c;目前此项任务已经完成&#xff0c;经过测试&#xff…

YY的GCD 莫比乌斯反演

&#xff5e;&#xff5e;&#xff5e;题面&#xff5e;&#xff5e;&#xff5e; 题解&#xff1a; $ans \sum_{x 1}^{n}\sum_{y 1}^{m}\sum_{i 1}^{k}[gcd(x, y) p_{i}]$其中k为质数个数 $$ans \sum_{i 1}^{k}\sum_{x 1}^{n}\sum_{y 1}^{m}[gcd(x, y) p_{i}…

python答辩结束语_Beta答辩总结

前言队名&#xff1a;拖鞋旅游队项目的链接与宣传项目总结原计划实现功能预期完成程度上传照片完美实现照片信息标注在地图上对于有地理信息的照片能够较为精确的定位足迹地图可视化能够用颜色区分出到到每个省份的程度以及显示到达的地点生成旅游故事能够生成不同的故事模板&a…

在一台电脑上使用两个github账号

问题描述&#xff1a; 我公司有一个github账号&#xff0c;每天工作把代码传上去&#xff0c;我觉得代码写的好&#xff0c;我同时想上传到自己的github账号上面去&#xff0c;但是目前只有一台电脑&#xff0c;如何在一台电脑上面进行设置&#xff0c;使这一台电脑可以同时上传…

[唐胡璐]QTP框架 - 关键字驱动测试框架之七 - Settings管理

这里主要是存放一些框架相关的Global设置的相关项&#xff0c;如图所示&#xff1a;转载于:https://www.cnblogs.com/yongfeiuall/archive/2013/03/18/4134155.html

ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider

NameValueCollectionValueProvider采用一个NameValueCollection作为数据源&#xff0c;DictionnaryValueProvider的数据源类型自然就是一个Dictionnary。NameValueCollection和Dictionnary都是一个键值对的集合&#xff0c;它们之间的不同之处在NameValueCollection运行元素具有…

串口 发送 接收 高位_电工进阶PLC大神,必备PLC串口通讯的基本知识!

戳上方蓝字“技成电工课堂”快速关注&#xff01;&#xff01;&#xff01;电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口&#xff0c;最基本的PLC串口通讯和基本的通讯接口你都了解吗&#xff1f;1&#xff0c;什么是串口通讯&#xff1f;串口是计算机上一种…

HTTP请求时connectionRequestTimeout 、connectionTimeout、socketTimeout三个超时时间的含义...

1.connectionRequestTimout 指从连接池获取连接的timeout 2.connetionTimeout 指客户端和服务器建立连接的timeout&#xff0c; 就是http请求的三个阶段&#xff0c;一&#xff1a;建立连接&#xff1b;二&#xff1a;数据传送&#xff1b;三&#xff0c;断开连接。超时后会Con…

搜索引擎优化培训教程

很详细的搜索引擎优化培训教材 View more presentations from mysqlops 转载于:https://www.cnblogs.com/macleanoracle/archive/2013/03/19/2967982.html

C语言-扫雷游戏

头文件 #ifndef __MINE_H__ #define __MINE_H__#define LINE 10 #define LIST 10 #define ROWS 6 #define COWS 6int game(char UserBoard[LINE2][LIST2], char PlayerBoard[LINE][LIST]); void PrintBoard(char Playerboard[LINE][LIST]); void MineLay(char UserBoard[LINE …