Python中关于元组 集合 字符串 函数 异常处理的全面详解

目录
  • 元组
  • 集合
  • 字符串
    • 1、字符串的驻留机制
    • 2、常用操作
  • 函数
    • 1、函数的优点:
    • 2、函数的创建:def 函数名([输入参数])
    • 3、函数的参数传递:
    • 4、函数的返回值:
    • 5、函数的参数定义:
    • 6、变量的作用区域
    • 7、递归函数:函数体内套用该函数本身
    • 8、将函数存储在模块中
    • 9、函数编写指南:
  • Bug
    • 1、Bug常见类型
    • 2、常见异常类型
    • 3、python异常处理机制
  • pycharm开发环境的调试
  • 编程思想
    • (1)两种编程思想
    • (2)类和对象的创建

元组

元组是不可变序列
多任务环境下,同时操作对象时不需要枷锁;
元组中存储的时对象的引用:
1)如果元组中对象本身是不可变对象,则不能再引用其他对象;
2)如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变。

集合

集合是可变类型的序列
集合没有value字典,存储内容的显示不是按照顺序
集合的元素不能重复

字符串

字符串是不可变序列

1、字符串的驻留机制

仅保存一份相同且不可变字符串,不同的值被存放再字符串驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。
驻留机制的几种情况(交互模式):
a)字符串长度为0或1时,产生驻留
b)符合标识符(含有字母、数字、下划线)的字符串,产生驻留
c)字符串只在编译时进行驻留,而非运行时
d)[-5,256]之间的整数数字,产生驻留
sys中的intern方法强制2个字符串指向同一个对象
pycharm对字符串进行了优化处理
驻留机制的优点:
a)优点:当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串时会比较影响性能的。
b)在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方式时先计算出所有字符中的长度,然后再拷贝

2、常用操作

函数

1、函数的优点:

(1)复用代码
(2)隐藏实现细节
(3)提高可维护性
(4)提高可读性便于调试

2、函数的创建:def 函数名([输入参数])

函数体
[return xxx]

3、函数的参数传递:

(1)函数调用时的参数传递:
位置实参:根据形参对应的位置进行实参传递,位置对应
例如def fuc1(a,b),调用时fuc1(10,20)
关键字实参:根据形参名称进行实参传递,
例如def fuc1(a,b),调用时fuc1(b=10,a=20)
(2)如果是不可变对象,在函数体内的修改不会影响实参的值
如果是可变对象,在函数体内的修改会影响实参的值

4、函数的返回值:

(1)函数返回多个值时,结果为元组
(2)函数返回一个值时,结果为原值
(3)函数没有返回值时,省略return

5、函数的参数定义:

(1)函数定义默认值参数:
函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参。
只传一个参数,未被定义的参数未默认值。
默认值参数注意一定要放在其他需要传递实参的形参最后。
(2)个数可变的位置参数:使用*定义,结果为一个元组,例如def fun1(*args)
个数可变的关键字形参:使用**定义,结果为一个字典,例如def fun1(**args)
如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。 Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。

6、变量的作用区域

局部变量:在函数内定义并使用,局部变量使用global声明,可变为全局变量
全局变量:在函数外定义的变量,函数内外都可以使用。

7、递归函数:函数体内套用该函数本身

(1)递归的组成部分:递归调用与递归终止条件
(2)递归的调用过程:每递归调用一次函数,都会在栈内分配一个栈帧。
每执行完一次函数,都会释放相应的空间。
(3)递归的优缺点:缺点占内存多,效率低下;优点思路和代码简单。

例如求阶层:
def fuc1(n):
  if n==1:
    return 1
   else:
     return n*fuc1(n)
 print(fuc1(10))

例如斐波那契数列:
def fib(n):
  if n==1:
    return 1
  elif n==2:
    return 2
  elif :
    return fib(n-1)+fib(n-2)

8、将函数存储在模块中

将函数存储在被称为模块的独立文件中,再将模块导入到主程序中
(1)导入整个模块:模块是扩展名为.py的文件,包含要导入到程序中的代码。
import 模块名
模块名.函数名()
(2)导入特定函数:from module_name import function_0, function_1, function_2
(3)使用 as 给函数指定别名:from 模块 import 原函数名 as 新函数名
(4)使用 as 给模块指定别名:import 原模块名 as 新模块名
(5)导入模块中的所有函数:from 模块 import *

9、函数编写指南:

(1)名称:具有描述性,只使用小写字母和下划线
(2)注释:跟在函数定义后
(3)形参:指定默认值时等号两边不要有空格
(4)关键字实参:等号两边不要有空格
(5)长度:每行代码最好不超过79个字符;如果形参太多,可在函数定义中输入左括号后按回车键,并在下一行按两次Tab键,从而将形参列表和只缩进一层的函数体区分开来。
(6)分隔:每个函数之间用两行空行分开
(7)import:一般所有import都放在文件开头

Bug

1、Bug常见类型

A、错误点不熟悉导致
(1)输入的内容默认为字符型,用字符型进行数字计算、比较等。解决方案:转化为数字类型
(2)while循环未实现定义变量,变量未改变
(3)中英文符号混用
(4)一个等号时赋值,两个等号时等于
(5)缩进错误
(6)忘了冒号:如if语句,循环语句,else子句等
(7)字符串拼接的时候,把字符串和数字拼在一起
B、知识不熟练导致
(1)索引越界
(2)append()方法不熟练,append每次只能添加一个元素,只对列表。
C、思路不清导致的问题
解决方案:(1)print打印输出;(2)使用注释暂时注释掉部分代码
D、被动掉坑:
程序代码逻辑没有错,只是因为用户错误操作或者一些例外情况而导致的程序崩溃。
例如:

a=int(input('请输入一个整数'))
b=int(input('请输入另一个整数'))
result=a/b
print('结果为',result)
#若a输入为q则报错
#若b输入为0也报错

解决方法:python提供异常处理机制,可以在异常出现时即时捕获,然后内部消化,让程序继续运行。例如:
1、try except结构

try:#下为可能出现问题的代码
  a=int(input('请输入一个整数'))
  b=int(input('请输入另一个整数'))
  result=a/b
  print('结果为',result)
except ZeroDivisionError
  print('对不起,除数不允许为0')
print('程序结束')

2、多个excep结构:捕捉异常的顺序按照先字类后父类的顺序,为了避免遗漏可能出现的异常,可以在最后增加BaseException。例如:

try:
  a=int(input('请输入一个整数'))
  b=int(input('请输入另一个整数'))
  result=a/b
except ZeroDivisionError:
  print('对不起,除数不允许为0')
except ValueError:
  print('不能将字符串转换为数字')
except BaseException as e:
  print(e)

3、try except else结构(不知道会出什么错误的情况)

try:
  a=int(input('请输入一个整数'))
  b=int(input('请输入另一个整数'))
  result=a/b
except BaseException as e:
   print('出错了')
   print(e)
else:
   print('结果为',result)

4、try except else finally结构(finally块无论是否发生异常都会被执行,能用来释放try块中申请的资源)

try:
  a=int(input('请输入一个整数'))
  b=int(input('请输入另一个整数'))
  result=a/b
except BaseException as e:
   print('出错了')
   print(e)
else:
   print('结果为',result)
finally:
   print('谢谢您的使用')
print('程序结束')

2、常见异常类型

3、python异常处理机制

traceback模块(打印异常信息)

import traceback
try:
  print(1/0)
except:
  traceback.print_exc()

pycharm开发环境的调试

(1)断电
程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步的判断。
(2)进入调试视图
进入调试视图的三种方式:
1)单击工具栏上的按钮(小虫子)
2)右键单击编辑区:点击:debug模块名
3)快捷键:shift+F9

编程思想

(1)两种编程思想

(2)类和对象的创建

1)类:多个类似事物组成的群体的统称,能够帮助我们快速理解和判断事物的性质。
2)对象:实例或对象,可以是类的具体,python中一切皆对象。
3)创建:

#创建:
class Student:         #Student为类的名称,可以由多个单词组成,要求首字母大写,其余小写
  pass#没想好的情况下
#类的组成
#1、类属性
  native_pace='吉林'#直接写在类里的变量,称为类属性
#2、实例方法
  def eat(self):
    print('学生在吃饭...')#在类之外定义称为函数,类之内定义的称为方法
#3、静态方法
  staticmathod
  def method():
    print('静态方法')
#4、类方法
  classmethod
  def cm(cls):
    print('类方法')

到此这篇关于Python中关于元组 集合 字符串 函数 异常处理的全面详解的文章就介绍到这了,更多相关Python 元组内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python中关于集合的介绍与常规操作解析

    目录 1.集合的介绍 2.访问集合的元素 3.集合的添加 4.集合的修改 5.集合的删除 1.使用remove方法 2.使用pop方法 3.使用discard方法 6.集合的交集和并集 1.交集 2.并集 7.公共方法 8.python内置函数 1.len 2.max 3.min 4.del 1.集合的介绍 集合是无序的,集合中的元素是唯一的,集合一般用于元组或者列表中的元素去重. 定义一个空集合 格式如下: name=set() 注意以下写法为一个空字典,为空默认是字典,如果有数据在根据格式判

  • python教程命名元组示例分析

    目录 实际上 collections.namedtuple() 是一个工厂方法,它返回的是python中标准元组类型的子类.我们提供给它一个类型名称以及相应的字段,它就返回一个可实例化的类为你已经定义好的字段传入值等. from collections import namedtuple Subscriber = namedtuble('Subscriber', ['addr', 'joined']) sub = Subscriber('jonesy@example.com', '2012-10

  • python处理变量交换与字符串及判断的小妙招

    目录 两变量交换 重复字符串 列表与字符串互相转换 多情况判空 多值一起判断 尾语 两变量交换 语法: a, b = b, a IPython测试 In [1]: a = 3 In [2]: b = 5 In [3]: a, b = b, a In [4]: a Out[4]: 5 In [5]: b Out[5]: 3 免去了利用一个临时变量进行过渡交互. 重复字符串 In [2]: 'love ' * 2 Out[2]: 'love love ' In [7]: for i in range

  • 一篇文章带你了解python元组基础

    目录 1. 元组基本知识 1.元组的基本格式和用法 2. 元组操作实例 1.建立元组 2.查找元素:通过元组下标实现. 3.删除元组:对元组的删除时不允许的,可以通过del函数,实现对整个元组对象的删除. 4.统计元素 5.合并元组 6.转换元组 总结 1. 元组基本知识 元组:是不可变的序列,也是一种可以存储各种数据类型的集合,用小括号(())表示与那组的开始和结束,元素之间用半角逗号(,)分隔.不可变指不能对元组对象进行增加元素.变换元素位置.修改元素.删除元素操作.元组中每个元素提供对应的

  • Python中元组的基础介绍及常用操作总结

    目录 1.元组的介绍 2.访问元组 3.修改元组(不可以修改的) 4.元组的内置函数有count,index 5.类型转换 1.将元组转换为列表 2.将元组转换为集合 1.元组的介绍 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 元组的格式: tup=('a','b','c','d') 2.访问元组 元组可以使用下标索引来访问元组中的值,下标索引从0开始 例如: tup=('a','

  • Python中关于元组 集合 字符串 函数 异常处理的全面详解

    目录 元组 集合 字符串 1.字符串的驻留机制 2.常用操作 函数 1.函数的优点: 2.函数的创建:def 函数名([输入参数]) 3.函数的参数传递: 4.函数的返回值: 5.函数的参数定义: 6.变量的作用区域 7.递归函数:函数体内套用该函数本身 8.将函数存储在模块中 9.函数编写指南: Bug 1.Bug常见类型 2.常见异常类型 3.python异常处理机制 pycharm开发环境的调试 编程思想 (1)两种编程思想 (2)类和对象的创建 元组 元组是不可变序列 多任务环境下,同时

  • python中三种高阶函数(map,reduce,filter)详解

    map(function,seq[,seq2]) 接收至少两个参数,基本作用为将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列 返回一个可迭代的map对象 function:函数对象 py2中可为None,作用等同于zip() 如: py3中不可为None,None是不可调用.不可迭代对象 seq:可迭代对象,可以传一个或多个 # 传一个: def func(i):return i*2 print([i for i in map(func,[1,'2'])]) # [2,'22']

  • python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, 1.0, 180.0), (4.0, 0.0, 0.0, 180.0), (5.0, 0.0, 3.0, 178.0)) 方法一,使用python内建的数据处理库: #python自带的库 rows = open('allnodes.csv','r',encoding='utf-8').readl

  • Python中的None与 NULL(即空字符)的区别详解

    1.首先要了解Python的对象的概念: Python中,万物皆对象,所有的操作都是针对对象的,那什么是对象,5是一个int对象,'oblong'是一个str对象,异常也是一个对象,抽象一点是,人,猫,够也是一个对象 那对于一个对象,它就有包括两方面的特征:  属性:去描述它的特征  方法: 它所具有的行为 所以,对象=属性+方法 (其实方法也是一种属性,一种区别于数据属性的可调用属性 把具有相同属性和方法的对象就可以归为一类,即Classl.类就好比是一张蓝图,使用一个类可以创建多个对象实例

  • 对python中的*args与**kwgs的含义与作用详解

    在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kw是关键字参数 例如下面的代码 def foo(*args,**kwargs): print 'args is',args print 'kwargs is',kwargs foo(1,2) foo(k=1,w=2,a=3,r=4,g=5,s=6) foo(1,2,a=1,b=2,c=2) foo('a',1,None,a=1,b='2',c

  • 浅谈python中统计计数的几种方法和Counter详解

    1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b',5,6,7,5] count_dict = dict() for item in lists: if item in count_dict: count_dict[item] += 1 else: count_dict[item] = 1 2) 使用defaultdict() defaultdi

  • Python中打包和解包(*和**)的使用详解

    目录 一.打包参数 二.解包参数 三.几点注意 *和**在函数的定义和调用阶段,有着不同的功能,并且,*和**不能离开函数使用! 一.打包参数 * 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量args >>> def f(*args): # * 在函数定义中使用 print(args) >>> f() () >>> f(1) (1,) >>> f(1, 2, 3, 4) (1, 2, 3, 4) 我们可

  • 基于Python中单例模式的几种实现方式及优化详解

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪

  • 对python中 math模块下 atan 和 atan2的区别详解

    atan 和 atan2 都是反正切函数,返回的都是弧度 对于两点形成的直线,两点分别是 point(x1,y1) 和 point(x2,y2),其斜率对应角度的计算方法可以是: angle = atan( (y2-y1)/(x2-x1) ) 或 angle = atan2( y2-y1, x2-x1 ) 因此可以看出 atan 和 atan2 的区别: 1.参数的个数不同:atan 为单个参数,atan2为两个参数 2.atan2 的优点在于: 如果 x2-x1等于0 ,角度依然可以计算,但是

  • python中urllib.request和requests的使用及区别详解

    urllib.request 我们都知道,urlopen()方法能发起最基本对的请求发起,但仅仅这些在我们的实际应用中一般都是不够的,可能我们需要加入headers之类的参数,那需要用功能更为强大的Request类来构建了 在不需要任何其他参数配置的时候,可直接通过urlopen()方法来发起一个简单的web请求 发起一个简单的请求 import urllib.request url='https://www.douban.com' webPage=urllib.request.urlopen(

随机推荐