Python中关于元组 集合 字符串 函数 异常处理的全面详解
作者:Joyce 周 发布时间:2021-04-14 12:07:37
目录
元组
集合
字符串
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('类方法')
来源:https://blog.csdn.net/tcs066/article/details/120621653


猜你喜欢
- PHP htmlspecialchars() 函数实例把预定义的字符 "<" (小于)和 ">&q
- 导言作为web开发人员,我们的生活围绕着数据操作。我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据。本文是研究在A
- 问题介绍棋盘覆盖问题,是一种编程问题。如何应用分治法求解棋盘覆盖问题呢?分治的技巧在于如何划分棋盘,使划分后的子棋盘的大小相同,并且每个子棋
- 一、ASP.NET处理管道Asp.net处理管道的第一步是创建HttpWorkerRequest对象,它包含于当前请求有关的所有信息。Htt
- 之前想爬取一些淘宝的数据,后来发现需要登录,找了很多的资料,有个使用request的sessions加上cookie来登录的,cookie的
- 前言tkinter:GUI桌面应用开发模块,写软件界面你还可以打包成exe软件, 哪怕你没有python环境, 一样可以用虽然不一定要有界面
- 在python-numpy使用中,可以用双层 for循环对数组元素进行访问,也可以切片成每一行后进行一维数组的遍历。代码如下:import
- 文件可以传输,但是对比传输前后的文件:socket_test.txt,末尾有一些不一致服务端代码:#!/usr/bin/python# -*
- 用tensorflow构建简单的线性回归模型是tensorflow的一个基础样例,但是原有的样例存在一些问题,我在实际调试的过程中做了一点自
- 直接进入主题立方体每列颜色不同:# Import librariesimport matplotlib.pyplot as pltfrom
- Ø 基本常用查询 --select select * from student; --all 查询所有 select
- 一、tooltip(提示框) 源码文件: Tooltip.jsTooltip.scss实现原理: 1、获取当前
- 如果你从 Ruby 或者 Python 转型到 Go,将会有很多语言差异需要学习,其中很多问题都是围绕处理 string 类型。下面是一些字
- 1、Pandas库的操作Panda是数据分析特别重要的一个库,我们要掌握以下三点:· pandas 分组计算;· pandas 索引与多重索
- 目录一、网址分析二、代码编写三、遇到的问题1. 获取评论的时候也将子评论爬虫进去了。2. 获取全部评论数,直接通过 requests 获取不
- 一、gfile模块是什么 gfile模块定义在tensorflow/python/platform/gfile.py,但其源代码实现主要位于
- 程序开发一定要有开发工具,网上找了很多关于Python的开发工具,大神们在用记事本和VIM,小白都用PyCharm,我是属于小白一类的当然也
- 这几天写代码中遇到的一个常见问题,在Python中如何批量的生成一些变量,如生成变量X1, X2, X3,并在后续的方法中调用,完成赋值、取
- 第一种:import socket import fcntl import struct def get_ip_address(ifname
- 本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下:官方文档 – https://docs.opencv.or