自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 2021.7.8-Venv

1. importimport 语句导入:import 模块名 #导入一个模块import 模块1,模块2… #导入模块并使用新名字import加载的模块分为四个通用类型a.使用python编写的代码(.py文件);b.已被编译为共享库或DLL的C或C++扩展;包好一组模块的包使用C编写并链接到python解释器的内置模块;我们一般通过import语句实现模块的导入和使用,import本质上是使用了内置函数__import__()from…import 导入的是模块中的一个函数/

2021-07-08 19:45:34 94

原创 递归算法原理_阶乘计算

递归算法原理_阶乘计算递归结构包括两个部分:(1)定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。(2)递归体。解答:什么时候需要调用自身方法。#测试递归算法num = 1def a1(): global num #如果要在函数内改变全局变量的值,增加global关键字声明一下 num +=1 print("a1") if num <3: a1()def b1(): print("b1"

2021-07-04 19:02:28 201

原创 _os模块_

_os模块_调用操作系统可执行文件_控制台乱码问题.1.os和os.path模块import os#os.system("notepad.exe") #调用记事本#os.system("ping www.baidu.com") #file-->setting-->File Encodings-->(UTF8-->GBK)#os.system("cmd")#直接调用可执行文件#os.startfile(r"C:\Program Files (x86)\Tencen

2021-07-04 15:54:36 97

原创 enumerate()函数和推导式生成列表,文件对象常用方法和属性总结,_CSV文件的读取_写入, _os模块_调用操作系统可执行文件_控制台乱码问题.

enumerate()函数和推导式生成列表_操作每行增加行号.a = ["我 love u!", "尚学堂\n", "百战程序员\n"]b = enumerate(a)print(a)print(list(b))with open("e.txt", "r", encoding="utf-8") as f: lines = f.readlines() lines = [line.rstrip() + " #" + str(index + 1) + "\n" for index, l

2021-07-04 15:35:25 171

原创 file文件操作_操作系统底层关系_写入文件

_file文件操作_操作系统底层关系_写入文件1.文本文件和二进制文件(1).文本文件:文本文件储存是普通“字符”文本,python默认为unicode字符集(两个字节表示一个字符,最多可以表示:65536个),可以用记事本程序打开。但是,像word软件编辑的文字不是文本文件。(2)二进制文件:二进制文件把数据内容用“字节”进行储存,无法用记事本打开,必须使用专用的软件解码。常见的有:MP4视频文件、MP3音频文件、JPG图片、doc文档等等。2.创建文件对象open()open(文件名[,打

2021-07-04 12:24:55 323

原创 _pycharm的调试模式

_pycharm的调试模式进行调试的核心是设置断点。程序执行到断点时,暂时挂起,停止执行。断点:程序运行到此处,暂时挂起,停止执行。我们可以详细在此时观察程序的运行情况,方便做出进一步的判断。设置断点:(1)在行号后面单击即可增加断点;(2)在断点上再单机即可取消断点进入调试图(1)单击工具栏的按钮(2)右键单机编辑区,点击:debug"模块名"。(3)快捷键:shift+F9step over(F8):若当前执行的是一个函数,则会把这个函数当作整体一步执行完。不会进入这个函数内部。

2021-06-26 16:04:50 270 1

原创 常见异常的解决,_with上下文管理,_自定义异常类_raise抛出异常

常见异常的解决1.SyntaxError:语法错误2.NameError:尝试访问一个没有申明的变量;3.ZeroDivsionError:除数为0的错误(零除错误)4.ValueError:数字错误5.TypeError:类型错误6.AttributeError:访问对象的不存在的属性7.IndexError:索引越界异常8.KeyError:字典的关键字不存在_with上下文管理测试with上下文管理with不是用来取代try…except…finally结构的。只是作为补充,方便

2021-06-26 16:01:34 99

原创 _异常的本质_调试核心理念,_try_多个except结构.

_异常的本质_调试核心理念Traceback追溯,追根溯源。most recent call last 最后一次调用。_try_except基本结构try:被监控的可能引发异常的语句块except BaseException[as e]:异常处理语句块测试简单的的0不能做除数异常try: print("step1") a = 3 / 0 print("step2")except BaseException as e: print("step3")

2021-06-26 15:56:16 123

原创 对象的浅拷贝和深拷贝, 组合,工厂模式和单例模式

对象的浅拷贝和深拷贝变量的赋值操作:只是形成两个变量,实际上还是指向同一个对象。浅拷贝:拷贝时,对象包含的子对象内容不拷贝。因此,源对象和拷贝对象会引用同一个子对象。深拷贝:使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象。源对象和拷贝对象所有的子对象也不同。测试对象的浅拷贝、深拷贝import copyclass MobilePhone: def __init__(self,cpu,screen): self.cpu = cpu se

2021-06-23 17:33:47 137

原创 多态,特殊方法和运算符重载,

多态:(polymorphism)是指同一个方法调用由于对象不同可能会产生不同的行为。1.多态是方法的多态,属性没有多态。2.多态的存在有2个必要条件:继承、方法重写。class Man: def eat(self): print("饿了,吃饭啦!")class Chinese(Man): def eat(self): print("中国人用筷子吃饭")class English(Man): def eat(self):

2021-06-23 17:27:59 72

原创 查看类的继承层次结构,查看对象所有属性以及和object比对,重写__str__()方法,super()

查看类的继承层次结构通过类的方法mro()或者类的属性__mro__可以输出这个类的继承层次结构class A:passclass B(A):passclass C(B):passprint(C.mro())object根类_dir()object类是所有类的父类,因此所有的类都有object类的属性和方法。我们显然有必要深入研究一下object类的结构。dir()查看对象属性查看对象所有属性以及和object比对class Person: def __init__(self,n

2021-06-23 17:19:23 171

原创 方法没有重载,方法的动态性,@property装饰器_get和set方法,类体

方法没有重载Python 中没有方法的重载。定义多个同名方法,只有最好一个有效方法的动态性Python是动态语言,我们可以动态的为类添加新的方法,或者动态的修改类的已有的方法class Person:class Person: def work(self): print("努力上班!")def play_game(s): print("{0}在玩游戏".format(s))def work2(s): print("好好工作,努力上班!赚大钱,娶

2021-06-23 17:01:18 82

原创 实例属性-类方法

实例属性_内存分析实例属性是属于实例对象的属性,也称为“实例变量”。1.实例属性一般在__init__()方法中通过如下代码定义:self实例属性名 = 初始值2.在本类的其它实例方法中,也是通过self进行访问:3.创建实例对象后,通过实例对象访问:obj01=类名() #创建对象,调用__init__()初始化属性obj01.实例属性名 = 值 (可以给已有属性赋值,也可以新加属性)实例方法:是从属于实例对象的方法。格式:def 方法名(self[,形参列表]):函数体方法的调用

2021-06-20 09:42:22 921

原创 类的定义_类和对象的关系

类的定义_类和对象的关系1.类名必须符合“标识符”的规则:一般规定,首字母大写,多个单词使用“驼峰原则”。2.类体中我们可以定义属性和方法。3.属性用来描述数据,方法(即函数)用来描述这些数据相关的操作。class Student: # 类名一般首字母大写,多个单词采样驼峰原则 def __init__(self, name, score): # self必须位于第一个参数。 self.name = name self.score = score

2021-06-20 09:30:52 180

原创 嵌套函数_内部函数_数据隐藏

嵌套函数-在函数内部定义的函数适用情况:(1)封装-数据隐藏,外部无法访问"嵌套函数".(2)贯彻 DRY(Don’t Repeat Yourself)原则。嵌套函数,可以让我们在函数内部避免重复代码。(3) 闭包。def outer(): print("outer running") def inner01(): print("inner01 running") inner01()outer()print("*******************

2021-06-20 09:23:45 96

原创 函数- eval()-lambda表达式和匿名函数-递归函数(阶乘练习)

1.lambda表达式和匿名函数lambda表达式可以用来声明匿名函数。lambda函数是一种简单的,在同一行中定义函数的方法。lambda函数实际生成了一个函数对象lambda表达式只容许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。lambda表达式:lambda arg1,arg2,arg3…# lambda表达式使用f1 = lambda a, b, c, d: a * b * c * ddef tast01(a, b, c, d): print("#

2021-06-14 10:18:12 243

原创 参数的传递、类型

1.参数的传递_不可变对象含可变子对象传递不可变对象时,不可变对象里面包含的子对象是可变的。则方法内修改了这个可变对象,源对象也发生了变化。a = (10, 20, [5, 6])print("a:", id(a)) #输出:a: 1910938649528def tast01(m): print("m:", id(m)) #输出:m: 1910938649528 m[2][0] = 888 print(m) #输出:(10, 20, [888, 6]) prin

2021-06-14 10:01:50 152

原创 浅拷贝和深拷贝_内存分析

浅拷贝和深拷贝_内存分析copy(浅拷贝): 不拷贝子对象的内容,只是拷贝子对象的引用。deepcopy(深拷贝): 会连子对象内容全部拷贝一份,对子对象的修改不会影响源对象。测试浅拷贝:在这里插入代码片...

2021-06-14 09:23:17 94

原创 参数的传递-可变对象-不可变对象

参数的传递-可变对象-不可变对象python中参数的传递都是"引用传递":1.对“可变对象”进行“写操作”,直接作用于源对象本身2.对“不可变对象”进行“写操作”,会产生一个新的“对象空间”,并用新的值填充这块空间。(起到其它语言的“值传递”效果,但不是“值传递”。可变对象:字典、列表、集合、自定义对象等不可变对象:数字、字符串、元组、function等测试参数的传递:1.传递可变对象a = [10,20]print(id(a)) #输出:2589181890952print(a) #

2021-06-13 19:55:46 244 2

原创 变量的作用域

变量的作用域变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。全局变量:1.在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。2.全局变量降低了函数的通用性和可读性。应避免全局变量的使用。3.全局变量一般做常量使用。4.函数内要改变全局变量的值,使用global声明一下。局部变量1.在函数体中(包含形式函数)声明的变量。2.局部的变量的引用比全局变量快,优先考虑使用。3.如果局部变量和全局变量同名,则在函数中隐藏全局变量,只使用同名的局部变量

2021-06-13 19:47:39 407

原创 函数的基本概念

函数用法和底层分析函数是可重用的程序代码(function)(1)内置函数:str(),list(),len()(2)标准函数:import(3)第三方函数(4)用户自定义函数:def 函数名([参数列表]):““文档字符串””函数体/若干语句def ABC01(): print("*" * 10) print("@" * 10)print(id(ABC01)) #输出:1325012342536print(type(ABC01)) #输出:<class 'fun

2021-06-11 12:43:20 200 1

原创 练习-绘制不同颜色的多个同心圆

练习-绘制不同颜色的多个同心圆import turtlet = turtle.Pen()my_colors = ("red","green","yellow","black","purple")t.width(4)t.speed(0)for i in range (20): t.penup() t.goto(0,-i*10) #0,-10,-20,-30,-40…… t.pendown() t.color(my_colors[i%len(my_colors)

2021-06-11 12:04:53 1066 2

原创 推导式创建序列

推导式创建序列1.列表推导式列表推导式生成列表对象,语法:【表达式 for item in 可迭代对象】或 【for item in 可迭代对象 if 条件判断】y = [x * 2 for x in range(1, 5)]print(y)#输出:[2, 4, 6, 8]# 循环y = []for x in range(1, 5): y.append(x * 2)print(y)#输出:[2, 4, 6, 8]# 附加条件,ify = [x * 2 for x

2021-06-11 11:53:12 65

原创 使用zip()并行迭代

使用zip()并行迭代可以通过zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。for i in [1, 2, 3]: print(i)names = ("ZJ", "HSD", "ZZX", "ZYR")ages = (18, 16, 20, 22)jobs = ("老师", "程序员", "建筑师", "公务员")for name, age, job in zip(names, ages, jobs): print("{0}--{1}--{

2021-06-11 10:34:12 71 1

原创 循环代码的优化

循环代码的优化1.尽量减少循环内部不必要的计算2.嵌套循环中,尽量减少内层循环的计算,尽可能向外提。3.局部变量查询较快,尽量使用局部变量4.连接多个字符串,使用join()而不使用+。5.列表进行元素插入和删除,尽量在列表尾部操作。eg:import timestart = time.time()for i in range(1000): result = [] for m in range(10000): result.append(i * 1000

2021-06-11 10:19:40 157 1

原创 break,continue,else练习

1.break语句|可用于while和for循环,用来结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。while True: a = input("请输入一个字符(输入Q或q时推出):") if a == "q" or a == "Q": print("循环结束,退出") break else: print(a)#输出:请输入一个字符(输入Q或q时结束):rr请输入一个字符(输入Q或q时结束):Q循环结

2021-06-11 10:14:08 125

原创 嵌套循环练习

嵌套循环一个循环体内可以嵌入另一个循环,一般称为"嵌套循环",或者“多重循环”。for x in range(5): for y in range(5): print(x, end="\t") print() # 起到换行的作用 #输出: 0 0 0 0 0 # :1 1 1 1 1 # :2 2 2 2 2 # :3 3 3 3 3 # :4 4 4 4 4 九九乘法表for m in range(1, 10):

2021-06-11 09:23:51 209

原创 序列小知识点

1.列表的创建[]a = [20, 30, 40, "ZJ"]print(a[0]) #输出:20print(a[3]) #输出:ZJ2.list()可以将任何可迭代的数据转化为列表a = list()print(a) #输出:[]a = list("zhangjin")print(a)a = range(10) #输出:['z', 'h', 'a', 'n', 'g', 'j', 'i', 'n']print(type(a)) #输出:<class 'range'>pr

2021-06-06 21:14:19 210

原创 集合小知识点

集合1.{}创建,add()添加元素a = {233, 2, 30, 'gg'}print(a) #输出:{233, 2, 'gg', 30}a.add(40)print(a) #输出:{2, 'gg', 40, 233, 30}2.set()将列表,元组等可迭代对象转成集合,如果原来存在重复数据则只保留一个。3.remove()删除指定元素;clear()清空整个集合4. 并集:a|b 或 a.union()5.交集:a&b 或 a.intersection(b)6.

2021-06-06 17:22:00 58

原创 字典小知识点

字典的创建1.{}; dict()a = {"name": "ZJ", "age": 18, "dd": [2, 3, 4]}print(a)b = dict(name="ZJ", age=18)print(b)c = dict([('name', 'ZJ'), ('age', 18)])print(c)d = {}print(d) # 空的的字典对象#输出:{'name': 'ZJ', 'age': 18, 'dd': [2, 3, 4]}#输出:{'name': 'ZJ', 'a

2021-06-06 17:16:41 70

原创 元组小知识点

元组小知识点元组创建1.(),可以省略2.tuple() ,用法与list相似元组的访问a = (20, 30, 40)print(a[0]) #输出20print(a[1]) #输出30切片a = tuple("abcdefgh")print(a[1:5])print(a[::-1])#输出:('b', 'c', 'd', 'e')('h', 'g', 'f', 'e', 'd', 'c', 'b', 'a')排序a = (30, 20, 40)print(sorte

2021-06-06 16:37:00 86

原创 for循环结构

for循环结构for循环和可迭代对象便利:for变量in可迭代对象for x in(10,20,30) print(x * 30, end="\t")#输出:300,600,900##`遍历字符串for y in "abcdefg": print(y,end="\t")#输出:a b c d e f g# 遍历字典d = {"name": "ZJ", "age": 24, "job": "学生"}for x in d: # 遍历字典所有的key print(

2021-06-06 12:33:12 117

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除