首页 > Python基础学习3

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 会显示抛出异常



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



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

 

更多相关:

  • 原文出处: 韩昊    1 2 3 4 5 6 7 8 9 10 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事   谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。   转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 我保证这篇文章...

  • 原文出处: 韩昊   我保证这篇文章和你以前看过的所有文章都不同,这是 2012 年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维...

  • 很多Linux高手都喜欢使用screen命令,screen命令可以使你轻松地使用一个终端控制其他终端。尽管screen本身是一个非常有用的工具,byobu作为screen的增强版本,比screen更加好用而且美观,并且提供有用的信息和快捷的热键。 想象一下这样一个场景:你通过Secure Shell(ssh)链接到一个服务器,并...

  • NarrowbandPrimary Synchronization Signal时域位置每1个SFN存在一个NPSSSFNSubframeSymbol长度每个SFN5最后11个symbol11个symbols频域位置NB-IOT下行带宽固定180kHz,一个PRB,12个子载波。...

  •  [h1]反斜杠只能够阻止一个字符  [h2]位于键盘的左上角,和~公用一个键。...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...