新手学习Python第十一天,准备今天全部学完系列

——早上07:30到达实验室,开始学习,中秋小长假已过,心已收——

一、__new__与__init__创建对象的过程

class Person(object):def __new__(cls,*args,**kwargs):  *表示位置参数,**表示关键字参数print('__new__被调用执行了,cls的id值为{0}'.format(id(cls)))obj=super().__new__(cls)   调用父类的函数给实例对象print('创建的对象的id为:{0}'.format(id(obj)))return objdef __init__(self,name,age): print('__init__被调用了,self的id值为:{0}'.format(id(self)))self.name=nameself.age=age
print('object这个类对象的id为{0}'.format(id(object)))  
print('Person这个类对象的id为{0}'.format(id(Person)))
p1=Person('张三',20)  
print('id值为{0}'.format(p1))

这方面的有点难理解,但就是一个传参的过程  等我再上网查一查做出详细解释

二.类的赋值和浅拷贝

class CPU:pass
class Disk:pass
class Computer:def __init__(self,cpu,disk):self.cpu=cpuself.disk=disk
cpu1=CPU
cpu2=cpu1
print(id(cpu1))
print(id(cpu2))

id值是相同的,说明是同一个对象分别放在不同的对象中去

赋值操作:只是形成两个变量,实际上还是指向同一个对象

浅拷贝:对象包含的子对象内容不拷贝,源对象和拷贝对象会引用同一个子对象

举例:

class CPU:pass
class Disk:pass
class Computer:def __init__(self,cpu,disk):self.cpu=cpuself.disk=disk
cpu1=CPU
cpu2=cpu1
print(id(cpu1))
print(id(cpu2))
print(cpu1)
print(cpu2)
disk=Disk()
computer=Computer(cpu1,disk)
print(disk)
import copy
computer2=copy.copy(computer)
print(computer,computer.cpu,computer.disk)
print(computer2,computer2.cpu,computer2.disk)

从这个例子中我们知道,这个浅拷贝她不拷贝的是,value,即cpu的实力对象与disk的值

只拷贝的源对象,所以源对象的id值就会更改。

2.2深拷贝

使用copy模块中的deepcopy模块,

computer3=copy.deepcopy(computer)
print(computer3,computer3.cpu,computer3.disk)

你看!都拷贝了。地址都不同了

三、模块化编程

3.1 模块特点:

模块英文名:Modules

一个模块包含N多个函数

拓展名为.py的文件就是一个模块

说白了,模块可以类、函数、语法结构,且模块与模块之间不会有影响,因为这是多个不同的文件

3.2 模块的导入

3.2.1 创建模块需要注意:

新建的.py文件,名称尽量不要与python自带的标准模块名称相同

3.2.2导入模块

import  模块名称  [as 别名]

from   模块名称 import 函数/变量/类

import math   #导入的是数学运算模块
print(id(math))
print(type(math))
print(math)
print(math.pi)

秉承着好奇的心里输入了下 print(value(math))

结果报错,为什么呢?

value针对的是 函数和对象,它是一个模块,因此没有方法和属性。

用dir()函数可查看模块中的属性和函数

print(dir(math))

再调用下math中的函数

   ————睡了午觉,睡得很饱,现在是14:12 开始学习————

我们来看一看第二种导入模块的方式

from   模块名称 import 函数/变量/类

第一种是:

import math

print(math.pi)

第二种是:

from math import pi
print(pi)
from math import pi
import math
print(pi)
print(pow(2,3))
print(math.pow(2,3))

综上第一种方式是导入所有,第二种方式是导入指定的内容

3.3 自己导入自己设定的模块

设定模块叫calc模块,把你编辑的函数放入里面

其次右键这个根目录,选择图片中的源根

这就是结果 接下来的图片是导入的第二种方法:

3.4 以主程序的形式运行

我先是自定义一个模块,命名为calc2

接着我在另外一个模块中进行调用执行,发现结果多了上个模块中的程序结果

怎么办?这样办 需要在print上面写上main,然后按下Enter 即可。

就不是主程序了呗,不然一直会有它模块里面的结果

四、Python中的包

4.1 特点:

是一个分层次的目录结构,将一组功能相近的模块组织在一个目录下

与目录区别:

包含__init__.py文件的目录称为包

目录里通常不包含__init__.py文件

4.2 包的导入

import 包名.模块名 

先来个建包的过程:

其次在包里面我写上一个参数a=10,在moduleB里面写上b的参数20

最后我在外面写上一个模块命名为demo5,导入包,运行结果为20即a的值

import pageage1.module_A  #包名为pageage1 模块名为module_A
print(pageage1.module_A.a)  模块里面的参数或者函数

但这么写太累了吧,所以可以起个别名 在后面写上as 名字

import 包名.模块名 别名 名字

import pageage1.module_A as b
print(b.a)

这里的b是我们这个包里模块的别名  不错不错!

4.2.2 注意事项:

导入带有包的模块时注意事项:

import pageage1 以及 import calc 

使用import方式进行导入时,只能跟包名或者模块名

但是使用 from pageage1 import modele_A 这种import只能导入模块名

from pageage1.modele_A import a   导入变量

使用from...import 可以导入包 模块 函数 变量 

4.3 Python中常用的内置模块

 4.3.1 sys:与解释器及其环境操作相关的标准库

import sys
print(sys.getsizeof(24))

4.3.2 time 提供与时间相关的各种函数的标准库

import time
print(time.time())
print(time.localtime(time.time()))

4.3.3 os:提供了访问操作系统服务功能的标准库

4.3.4 calendar:提供与日期相关的各种函数标准库

4.3.5 urllib: 用于读取来自网上(服务器)的数据标准库

import urllib.request
print(urllib.request.urlopen('http://www.baidu.com').read())

4.3.6 json: 用于使用JSON序列化和反序列化的对象、


4.3.7 re:用于在字符串中执行正则表达式匹配和替换

4.3.8 math 提供标准算术运算函数的标准库

4.3.9 decimal :用于进行精确控制运算精度、有效位数和四舍五入操作的十进制运算

4.3.10 logging:提供了灵活的记录事件、错误、警告、和调试信息等日志信息的功能

5. 第三方模块的安装与使用

第三方模块的安装

 pip install 模块名

第三方模块的使用

import 模块名

首先打开win+R 输入cmd 然后 pip install 模块名 →python→import  模块名 没有报错那么就可以调用了

导入模块,然后如果在cmd中安装好了的话,没有报错,但是在环境中依然报错,就去找解释器的适配是不是出问题了。

第三方模块:安装:pip install 模块名  使用:from...import...模块名

6.编码格式的介绍

Python的解释器使用的是Unicode(内存)

.py文件在磁盘上使用的是UTF-8储存(外存)

6.2 文件的读写操作

内置函数open()创建文件对象

语法规则:file = open(filename [,mode,encoding])

被创建的文件对象=创建文件对象的函数要创建或打开的文件名称[打开模式默认为只读默认编写格式为gbk])

读 :是从外部文件file到程序里面

写 :是从程序输出到文件之中

 6.2.2读文件

file=open('a.txt.txt','r') 这里的r表示读取的意思
print(file.readline())   readline也是读的意思
file.close()             关闭文件夹

r:以只读模式打开文件

w:以只写模式打开文件,如果文件不存在就创建,若文件存在就会覆盖原有内容

a:追加模式打开文件,若文件不存在就创建,若存在就在文件末尾追加内容

b:以二进制方式打开文件,不能单独使用,需要与共它模式一起使用,rb或者wb‘

src_file = open('logo.png','rb')

target_file=open('copylogo.png'.;wb')

target_file.write(src_file.read())

target_file.close()

src_file.colse()

+:以只读方式打开文件,不能单独使用,需要与其他模式一起使用,a+

6.2.3  写文件:

file=open('b.txt.txt','w')   创建一个文件命名为b格式为txt,为写的内容
file.write('helloworld')     写的内容为helloworld
file.close()                 文件关闭

在左侧找到内容为helloworld

但是写的内容为文字的话就需要用gbk

试一试 a 有内容开始追加,没有的话就创建

文件对象的常用方法:

read([size]):从文件中读取size个字符的内容返回,若省略则读到末尾

readline() :从文本读取一行内容

readlines():文件中每一行都作为独立的字符串对象,将这些对象放入列表返回

write(str):将字符串写入文件

writelines(s_list):将字符串列表s_list写入文本文件,不添加换行符

————差不多到这里已经学完,剩下来的课程我会每天学习三节课或者一小时。——-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1538412.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

快来尝尝,超赞的食家巷一窝丝

一窝丝,这个名字听起来就充满了诗意和神秘。当你第一次见到它时,定会被它那精致的外形所吸引。纤细如丝,盘绕在一起,宛如一个精美的艺术品。那丝丝缕缕,散发着淡淡的麦香味,仿佛在诉说着古老的故事。 制作食…

Imagen论文简要解析

Imagen论文简要解析 文章 Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding 具有深度语言理解能力的逼真文本到图像扩散模型 https://arxiv.org/pdf/2205.11487 摘要 文章介绍了一种名为Imagen的文本到图像扩散模型,该模型在理…

9.12日常记录

1.extern关键字 1)诞生动机:在一个C语言项目中,需要再多个文件中使用同一全局变量或是函数,那么就需要在这些文件中再声明一遍 2)用于声明在其他地方定义的一个变量或是函数,在当前位置只是声明,告诉编译器…

【鸿蒙 HarmonyOS NEXT】popup弹窗

一、背景 给组件绑定popup弹窗,并设置弹窗内容,交互逻辑和显示状态。 常见场景:点击按钮弹出popup弹窗,并对弹窗的内容进行交互逻辑处理,如:弹窗内点击跳转到其他页面 二、给组件绑定Popup弹窗 PopupOp…

【Python报错已解决】 TypeError: Descriptors cannot not be created directly

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Android RecycleView 深度解析与面试题梳理

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 引言 在 Android 开发中,列表和网格布局是非常常见的界面元素,它们用于展示大量数据集合。RecyclerView 是 Android 提…

深度学习|损失函数:网络参数优化基准

文章目录 引言均方误差计算示例矩阵形式代码实现 交叉熵误差计算示例代码实现 绝对误差计算示例代码实现 Hinge Loss计算示例代码实现 Kullback-Leibler Divergence计算示例代码实现 结语 引言 在上文「深度学习|模型训练:手写 SimpleNet」中&#xff0…

Nodejs+vue+Express游戏分享网站的设计与实现 7a2s2

目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式,开发软件有很多种可以用,本次开发用到的软件是vscode,用到的数据库是…

Flink垃圾图片分类优胜奖比赛攻略_贪吃的小香猪-148队

关联比赛: Apache Flink极客挑战赛——垃圾图片分类 一. 赛题背景分析及理解 本次竞赛要求结合大数据计算引擎Flink和深度学习的计算平台Intel Analytics Zoo应用在图片识别场景,进行垃圾图片的分类。 目标:对提供的100类大约6000张垃圾图片进行模型训…

五星级可视化页面(30):本系列最后一期,压轴出场。

不知不觉分享了30期高品质的五星级可视化大屏界面,该系列文章也该收尾了,本期为大家分享最后一批界面,我们下一个系列专辑见。

A股上市公司企业创新能力、质量、效率-原始数据+dofile+结果(2006-2023年)

上市公司的创新能力体现在其不断研发新技术、新产品和服务的能力上,这是企业保持竞争优势的关键;质量则是指公司所提供的产品或服务达到高标准的程度,高质量是赢得客户信任和市场份额的基础;效率则涵盖了生产运营中的资源利用程度…

智能车镜头组入门(一)车模的选择

这篇文章,我会简单的介绍下车模的、轮胎和负压的选择 今年的镜头组是自制车模,这比较考验学校之前参赛的经验。我们选择了某飞的mini车模。提供智能车方案的无非就两家,某飞和某邱,我们学校之前都用的是某飞的,在某飞…

鸿蒙Harmony应用开发,数据驾驶舱 项目结构搭建

对于一个项目而言,在拿到我们的开发任务后,我们最重要的就是技术的选型。选型定下来了之后我们便开始脚手架的搭建,然后开始撸代码,开搞. 首先我们需要对一些常见依赖库的引入 我们需要再oh-package.json5的dependencies节点下面…

leetcode:最高乘法得分

用auto可以过 class Solution { public:long long maxScore(vector<int>& a, vector<int>& b) {int n b.size();vector<vector<long long>> memo(4,vector<long long>(b.size(), LLONG_MIN));auto dfs [&](auto&& dfs, i…

Qt安卓开发连接手机调试(红米K60为例)

1.前置条件 本人默认您已经完成Qt安卓环境的配置&#xff0c;若还没配置请参考链接文章&#xff1a;【Qt】最详细教程&#xff0c;如何从零配置Qt Android安卓环境_qt_七夕先生-开放原子开发者工作坊。准备一台目前主流在用的手机&#xff0c;其实自己用的就行(只要你不是某些…

LeetCode-137. 只出现一次的数字 II【位运算 数组】

LeetCode-137. 只出现一次的数字 II【位运算 数组】 题目描述&#xff1a;解题思路一&#xff1a;解题思路二&#xff1a;符号位一起判断。背诵版解题思路三&#xff1a;0 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每…

CentOS7.9环境上NFS搭建及使用

Linux环境NFS搭建及使用 1. 服务器规划2. NFS服务器配置2.1 主机名设置2.2 nfs安装2.2.1 repo文件替换2.2.2 NFS服务安装 2.3 nfs配置2.4 服务查看2.5 资源发布2.6 配置nfs服务开机自启2.7 端口开放 3.应用服务器配置3.1 主机名设置3.2 nfs安装3.2.1 repo文件替换3.2.2 NFS服务…

XML映射器-高级查询结果映射

01-高级查询结果映射 emp表 dept表 02-多表关联查询映射 多对一映射 项目中Emp类的数据 项目中dept类的数据 想要多表查询需要建个公共类里面写入两个表中的属性,如下面方法 type里要写用到的类型,由于继承Emp所有Emp里面的属性直接写,column是写数据库的别字,property是写字…

WSL中使用AMBER GPU串行版

前提是已经安装过wsl 1 在 WSL 2 中启用 NVIDIA CUDA 参考在 WSL 2 上启用 NVIDIA CUDA | Microsoft Learn 注意&#xff1a;勿在 WSL 中安装任何 Linux 显示驱动程序。Windows 显示驱动程序将同时安装本机 Windows 和 WSL 支持的常规驱动程序组件。 2 在WSL2中配置Cuda 不安…

SEO之页面优化(一-页面标题2)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客&#xff1a;阿幸SEO~探索搜索排名之道 &#xff08;接上一篇。。…