python最常用的编程方式是什么_python常用模块和对象编程

1.摘要

常用模块

对象编程

领域模型

2.常用模块

2.1shutil模块

2.1.1 shutil.copyfileobj(fsrc, fdst[, length])

1 f = open("test.txt","r",encoding="utf-8")2 f1 = open("test2.txt","w+",encoding="utf-8")3

4 shutil.copyfileobj(f,f1,length=1000) #对文件对象进行拷贝操作,都需要打开后才能操作,length指定缓冲区的大小5 f.close()6 f1.close()

2.1.2 shutil.copyfile(src,dst)

1 shutil.copyfile("test.txt", "test2.txt") #对文件进行操作

2.1.3 shutil.copymode(src,dst)

#仅copy权限,不更改文件内容,组和用户

2.1.4 shutil.copystat(src, dst)

拷贝状态的信息,包括:mode bits, atime, mtime, flags

2.1.5shutil.copy(src, dst)

拷贝文件和权限

2.1.6 shutil.copy2(src,dst)

#复制文件的内容以及文件的所有状态信息。先copyfile后copystat

2.1.7 shutil.ignore_patterns(*patterns)

shutil.copytree(src, dst, symlinks=False, ignore=None)

1 shutil.copytree("E:\Python\mytest\\atm","E:\Python\mytest\\test\mytmp",ignore=shutil.ignore_patterns("atm","*.py"))

2.1.8 shutil.rmtree(path[, ignore_errors[, onerror]])

1 shutil.rmtree("E:\Python\mytest\\test\mytmp") #包括mytmp目录也会备删除

2.1.9 shutil.move(src, dst)

#递归的移动文件

1 shutil.move("E:\Python\mytest\\test\mytmp1","E:\Python\mytest\\test\mytmp") #将包括mytmp1目录全部移动至mytmp目录

2.1.10 shutil.make_archive(base_name, format,...)

1 shutil.make_archive("E:\Python\mytest\\test\\test","zip",root_dir="E:\Python\mytest\\atm") #压缩单个目录

2.2zipfile和tarfile模块

1 import zipfile2

3 z = zipfile.ZipFile("mytest.zip","w")4 z.write("E:\Python\mytest\\atm\\atm\\bin\\atm.py")5 z.write("E:\Python\mytest\\atm\\atm\core\main.py")6 z.close()7

8 #压缩文件包含原有文件路径目录

1 import zipfile2

3 z = zipfile.ZipFile("mytest.zip","w")4 z.write("E:\Python\mytest\\atm\\atm\\bin\\atm.py",arcname="atm.py")5 z.write("E:\Python\mytest\\atm\\atm\core\main.py",arcname="main.py")6 z.close()7

8 #压缩文件不包含原有文件路径目录

2.3 shelve模块

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

1 importshelve2

3 d = shelve.open('shelve_test') #打开一个文件

4

5 classTest(object):6 def __init__(self,n):7 self.n =n8

9

10 t = Test(123)11 t2 = Test(123334)12

13 name = ["alex","rain","test"]14 d["test"] = name #持久化列表

15 d["t1"] = t #持久化类

16 d["t2"] =t217

18 d.close()

2.4 xml模块

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

xml的格式如下,就是通过<>节点来区别数据结构的:

2

2008

141100

5

2011

59900

69

2011

13600

xml样例

2.4.1查询

1 mport xml.etree.ElementTree as ET2

3 tree = ET.parse("xmltest.xml")4 root =tree.getroot()5 print(root.tag)6

7 #遍历xml文档

8 for child inroot:9 print(child.tag, child.attrib)10 for i inchild:11 print(i.tag,i.text)12

13 #只遍历year 节点

14 for node in root.iter('year'):15 print(node.tag,node.text)

2.4.2修改和删除

1 importxml.etree.ElementTree as ET2

3 tree = ET.parse("xmltest.xml")4 root =tree.getroot()5

6 #修改

7 for node in root.iter('year'):8 new_year = int(node.text) + 1

9 node.text =str(new_year)10 node.set("updated","yes")11

12 tree.write("xmltest.xml")13

14

15 #删除node

16 for country in root.findall('country'):17 rank = int(country.find('rank').text)18 if rank > 50:19 root.remove(country)20

21 tree.write('output.xml')

2.4.3 创建xml

1 importxml.etree.ElementTree as ET2

3

4 new_xml = ET.Element("namelist")5 name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})6 age = ET.SubElement(name,"age",attrib={"checked":"no"})7 sex = ET.SubElement(name,"sex")8 sex.text = '33'

9 name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})10 age = ET.SubElement(name2,"age")11 age.text = '19'

12

13 et = ET.ElementTree(new_xml) #生成文档对象

14 et.write("test.xml", encoding="utf-8",xml_declaration=True)15

16 ET.dump(new_xml) #打印生成的格式

2.5 PyYAML模块

Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation

2.6 ConfigParse模块

[DEFAULT]

ServerAliveInterval= 45Compression=yes

CompressionLevel= 9ForwardX11=yes

[bitbucket.org]

User=hg

[topsecret.server.com]

Port= 50022ForwardX11= no

配置文件样例

2.6.1创建配置文件

1 importconfigparser2

3 config =configparser.ConfigParser()4 config["DEFAULT"] = {'ServerAliveInterval': '45',5 'Compression': 'yes',6 'CompressionLevel': '9'}7

8 config['bitbucket.org'] ={}9 config['bitbucket.org']['User'] = 'hg'

10 config['topsecret.server.com'] ={}11 topsecret = config['topsecret.server.com']12 topsecret['Host Port'] = '50022' #mutates the parser

13 topsecret['ForwardX11'] = 'no' #same here

14 config['DEFAULT']['ForwardX11'] = 'yes'

15 with open('example.ini', 'w') as configfile:16 config.write(configfile)

2.6.2 查询

1 >>> importconfigparser2 >>> config =configparser.ConfigParser()3 >>>config.sections()4 []5 >>> config.read('example.ini')6 ['example.ini']7 >>>config.sections()8 ['bitbucket.org', 'topsecret.server.com']9 >>> 'bitbucket.org' inconfig10 True11 >>> 'bytebong.com' inconfig12 False13 >>> config['bitbucket.org']['User']14 'hg'

15 >>> config['DEFAULT']['Compression']16 'yes'

17 >>> topsecret = config['topsecret.server.com']18 >>> topsecret['ForwardX11']19 'no'

20 >>> topsecret['Port']21 '50022'

22 >>> for key in config['bitbucket.org']: print(key)23 ...24 user25 compressionlevel26 serveraliveinterval27 compression28 forwardx1129 >>> config['bitbucket.org']['ForwardX11']30 'yes'

2.6.3 配置文件增删改查

1 importconfigparser2

3 config =configparser.ConfigParser()4 config.read("example.ini")5

6 print(config.sections())7 ['bitbucket.org', 'topsecret.server.com']8 DEFAULT默认存在9

10 print(config.options("topsecret.server.com"))11 ['host port', 'forwardx11', 'compression', 'compressionlevel', 'serveraliveinterval']12

13 print(config.items("topsecret.server.com"))14 [('compression', 'yes'), ('compressionlevel', '9'), ('serveraliveinterval', '45'), ('forwardx11', 'no'), ('host port', '50022')]15

16 config.remove_section("bitbucket.org") #删除一个section

17 config.write(open("test.ini","w"))18

19 config.add_section("test") #添加一个section

20 config.set("test","k1","11111") #修改option的值

21 config.write(open('test2.ini', "w"))

2.7 hashlib模块

用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

1 importhashlib2

3 m =hashlib.md5()4 m.update(b"Hello")5 m.update(b"It's me")6 print(m.digest())7 m.update(b"It's been a long time since last time we ...")8

9 print(m.digest()) #2进制格式hash

10 print(len(m.hexdigest())) #16进制格式hash

11 '''

12 def digest(self, *args, **kwargs): # real signature unknown13 """ Return the digest value as a string of binary data. """14 pass15

16 def hexdigest(self, *args, **kwargs): # real signature unknown17 """ Return the digest value as a string of hexadecimal digits. """18 pass19

20 '''

21 importhashlib22

23 ######### md5 ########

24

25 hash =hashlib.md5()26 hash.update('admin')27 print(hash.hexdigest())28

29 ######### sha1 ########

30

31 hash =hashlib.sha1()32 hash.update('admin')33 print(hash.hexdigest())34

35 ######### sha256 ########

36

37 hash =hashlib.sha256()38 hash.update('admin')39 print(hash.hexdigest())40

41

42 ######### sha384 ########

43

44 hash =hashlib.sha384()45 hash.update('admin')46 print(hash.hexdigest())47

48 ######### sha512 ########

49

50 hash =hashlib.sha512()51 hash.update('admin')52 print(hash.hexdigest())

python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;

一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送把用key把消息加密,接收方用key + 消息明文再加密,拿加密后的值 跟 发送者的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了。

1 importhmac2 h = hmac.new(b'天王盖地虎', b'宝塔镇河妖')3 print h.hexdigest()

更多关于md5,sha1,sha256等介绍的文章看这里https://www.tbs-certificates.co.uk/FAQ/en/sha256.html

2.8 subprocess模块

1 #执行命令,返回命令执行状态 , 0 or 非0

2 >>> retcode = subprocess.call(["ls", "-l"])3

4 #执行命令,如果命令结果为0,就正常返回,否则抛异常

5 >>> subprocess.check_call(["ls", "-l"])6 07

8 #接收字符串格式命令,返回元组形式,第1个元素是执行状态,第2个是命令结果

9 >>> subprocess.getstatusoutput('ls /bin/ls')10 (0, '/bin/ls')11

12 #接收字符串格式命令,并返回结果

13 >>> subprocess.getoutput('ls /bin/ls')14 '/bin/ls'

15

16 #执行命令,并返回结果,注意是返回结果,不是打印,下例结果返回给res

17 >>> res=subprocess.check_output(['ls','-l'])18 >>>res19 b'total 0\ndrwxr-xr-x 12 alex staff 408 Nov 2 11:05 OldBoyCRM\n'

20

21 #上面那些方法,底层都是封装的subprocess.Popen

22 poll()23 Check ifchild process has terminated. Returns returncode24

25 wait()26 Wait forchild process to terminate. Returns returncode attribute.27

28

29 terminate() 杀掉所启动进程30 communicate() 等待任务结束31

32 stdin 标准输入33

34 stdout 标准输出35

36 stderr 标准错误37

38 pid39 The process ID of the child process.40

41 #例子

42 >>> p = subprocess.Popen("df -h|grep disk",stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)43 >>>p.stdout.read()44 b'/dev/disk1 465Gi 64Gi 400Gi 14% 16901472 104938142 14% /\n'

调用subprocess.run(...)是推荐的常用方法,在大多数情况下能满足需求,但如果你可能需要进行一些复杂的与系统的交互的话,你还可以用subprocess.Popen(),语法如下:

1 p = subprocess.Popen("find / -size +1000000 -exec ls -shl {} \;",shell=True,stdout=subprocess.PIPE)2 print(p.stdout.read())

可用参数:

args:shell命令,可以是字符串或者序列类型(如:list,元组)

bufsize:指定缓冲。0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲

stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄

preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用

close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。

所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。

shell:同上

cwd:用于设置子进程的当前目录

env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。

universal_newlines:不同系统的换行符不同,True -> 同意使用 \n

startupinfo与createionflags只在windows下有效

将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等

终端输入的命令分为两种:

输入即可得到输出,如:ifconfig

输入进行某环境,依赖再输入,如:python

2.9 re模块

3.对象编程

3.1面向过程和面向对象

编程范式

编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式。 两种最重要的编程范式分别是面向过程编程和面向对象编程。

面向过程编程(Procedural Programming)

Procedural programming uses a list of instructions to tell the computer what to do step-by-step.

面向过程编程依赖 - 你猜到了- procedures,一个procedure包含一组要被进行计算的步骤, 面向过程又被称为top-down languages, 就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。

面向对象编程

OOP编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。

面向对象的几个核心特性如下

Class 类

一个类即是对一类拥有相同属性的对象的抽象、蓝图、原型。在类中定义了这些对象的都具备的属性(variables(data))、共同的方法

Object 对象

一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像人类是指所有人,每个人是指具体的对象,人与人之前有共性,亦有不同

Encapsulation 封装

在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法

Inheritance 继承

一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承

Polymorphism 多态

多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。

编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。

对不同类的对象发出相同的消息将会有不同的行为。比如,你的老板让所有员工在九点钟开始工作, 他只要在九点钟的时候说:“开始工作”即可,而不需要对销售人员说:“开始销售工作”,对技术人员说:“开始技术工作”, 因为“员工”是一个抽象的事物, 只要是员工就可以开始工作,他知道这一点就行了。至于每个员工,当然会各司其职,做各自的工作。

多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类型的对象,调用的方法是该子类型的方法。这里引用和调用方法的代码编译前就已经决定了,而引用所指向的对象可以在运行期间动态绑定

3.2面向对象编程

对于编程语言的初学者来讲,OOP不是一个很容易理解的编程方式,大家虽然都按老师讲的都知道OOP的三大特性是继承、封装、多态,并且大家也都知道了如何定义类、方法等面向对象的常用语法,但是一到真正写程序的时候,还是很多人喜欢用函数式编程来写代码,特别是初学者,很容易陷入一个窘境就是“我知道面向对象,我也会写类,但我依然没发现在使用了面向对象后,对我们的程序开发效率或其它方面带来什么好处,因为我使用函数编程就可以减少重复代码并做到程序可扩展了,为啥子还用面向对象?”。 对于此,我个人觉得原因应该还是因为你没有充分了解到面向对象能带来的好处,今天我就写一篇关于面向对象的入门文章,希望能帮大家更好的理解和使用面向对象编程。

无论用什么形式来编程,我们都要明确记住以下原则:

写重复代码是非常不好的低级行为

你写的代码需要经常变更

开发正规的程序跟那种写个运行一次就扔了的小脚本一个很大不同就是,你的代码总是需要不断的更改,不是修改bug就是添加新功能等,所以为了日后方便程序的修改及扩展,你写的代码一定要遵循易读、易改的原则(专业数据叫可读性好、易扩展)。

3.3 面向对象的特性

封装

继承

多态

4.领域模型

领域模型,顾名思义,就是需求所涉及的领域的一个建模,更通俗的讲法是业务模型。 参考百度百科(http://baike.baidu.cn/view/757895.htm ),领域模型定义如下:

从这个定义我们可以看出,领域模型有两个主要的作用:

发掘重要的业务领域概念

建立业务领域概念之间的关系

领域建模三字经

领域模型如此重要,很多同学可能会认为领域建模很复杂,需要很高的技巧。然而事实上领域建模非常简 单,简单得有点难以让人相信,领域建模的方法概括一下就是“找名词”! 许多同学看到这个方法后估计都会笑出来:太假了吧,这么简单,找个初中生都会啊,那我们公司那些分 析师和设计师还有什么用哦?

分析师和设计师当然有用,后面我们会看到,即使是简单的找名词这样的操作,也涉及到分析和提炼,而 不是简单的摘取出来就可,这种情况下分析师和设计师的经验和技能就能够派上用场了。但领域模型分析 也确实相对简单,即使没有丰富的经验和高超的技巧,至少也能完成一个能用的领域模型。

虽然我们说“找名词”很简单,但一个关键的问题还没有说明:从哪里找? 如果你还记得领域模型是“需求到面向对象的桥梁”,那么你肯定一下子就能想到:从需求模型中找,具 体来说就是从用例中找。

归纳一下域建模的方法就是“从用例中找名词”。 当然,找到名词后,为了能够更加符合面向对象的要求和特点,我们还需要对这些名词进一步完善,这就 是接下来的步骤:加属性,连关系!

最后我们总结出领域建模的三字经方法:找名词、加属性、连关系。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

keil+proteus 制作计算器_设计费 | 工程设计费计算器使用指南

工程设计费&#xff0c;即工程设计收费&#xff0c;是设计人根据发包人的委托&#xff0c;提供编制建设项目初步设计文件、施工图设计文件、非标准设备设计文件、施工图预算文件、竣工图文件等服务所收取的费用。工程设计收费标准2002年国家发展计划委员会和建设部发布了计价格…

解决:Xshell如何修改默认的登录用户,自动跳转到密码界面

1.打开Xshell会话&#xff0c;选择远程主机号&#xff0c;点击“打开会话文件夹” 2.右键&#xff0c;用记事本打开 3.打开后CtrlF搜索UserName 4.将参数改为空的即可

wegame一键蹲替换文件_如何在ps里批量替换姓名、编号等内容(变量和图像处理器)...

大家好今天的教程比较冷门但是应用的却比较广泛就是变量图像处理器比如会员卡、胸牌等有很多姓名或标号需要替换时这个组合技简直无敌命令位置【图像-变量-定义】【文件-脚本-图像处理器】具体用法以我这张图为例我需要把【号码】图层的内容替换成01-09那么我需要准备些什么呢&…

小米SN保修_首次体验小米手机官方售后全程回顾:维修速度快服务态度好

作为一名搞机玩家&#xff0c;这么多年买了很多也用了很多的小米产品&#xff0c;这是第一次使用小米的官方售后服务&#xff0c;所以趁着这个机会给大家说一下售后的感受&#xff1a;故障机是小米MIX 3已过保&#xff0c;老爸用的屏幕摔坏了一角&#xff0c;时间长了加上又摔所…

Linux的实际操作:用户管理(查ls -ahl,chown改文件所属者,chgrp改文件所属组,usermod改用户所属组)

在Linux中的每个用户必须属于一个组&#xff0c;不能独立于组外 在Linux中每个文件的所属者、所属组、其它组的概念 例如有一个文件是user1创建的&#xff0c;那么这个文件的所属者就是user1&#xff0c;这个文件在默认情况下属于user1所在的组当然&#xff0c;这个所属组也可…

restful接口开发实例_Restful接口开发与测试—接口测试

开发完接口&#xff0c;接下来我们需要对我们开发的接口进行测试。接口测试的方法比较多&#xff0c;使用接口工具或者Python来测试都可以&#xff0c;工具方面比如之前我们学习过的Postman或者Jmeter &#xff0c;Python脚本测试可以使用Requests unittest来测试。测试思路功…

博主已开启评论精选什么意思_小白必看!想要成为小红书博主,首先要掌握4个工具!...

首先我们要明确一点&#xff0c;不是每个人都要成为小红书博主。但&#xff0c;如果你想要成为博主&#xff0c;那么就需要了解下面这4个工具&#xff0c;可以让你成功迈出小红书博主的第一步。01搜秀数据小红书数据分析平台。四大功能&#xff1a;最新推广情报、KOL智能筛选、…

Linux的实际操作:文件和文件夹的权限解读

1.权限的基本介绍&#xff1a; ls -l -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc 0-9位说明 第0位确定文件的类型&#xff08;d&#xff0c;-&#xff0c;1&#xff0c;c&#xff0c;b&#xff09; 第1-3位确定所属者&#xff08;该文件的所属者&#xff09;拥有该文件…

scratch 素材_scratch书籍免费领

今天要写的内容如主图啦~~~这几天去白嫖了一些文章和scratch的书籍。emmmm. &#xff1f;&#xff1f;&#xff1f;书籍如下&#xff0c;可看我博客推荐的好书&#xff1a;scratch好书推荐_scratch,少儿编程,scratch少儿编程_weixin_43405101的博客-CSDN博客​blog.csdn.net书籍…

rmse多少算效果好_关键词SEO优化带来流量有多少?如何做SEO优化效果好?

随着行业之间的竞争激烈&#xff0c;企业为了获得更多的利润空间&#xff0c;都是以用户的使用体验为前提&#xff0c;争取能获得更多的收益。然而&#xff0c;网站优化的目的就是能满足用户的搜索习惯&#xff0c;让用户能通过关键词找到自己心仪的产品&#xff0c;让企业获得…

Linux的实际操作:权限管理(chmod)

1.chmod 通过chmod指令&#xff08; Change mode改变模式&#xff09;&#xff0c;可以修改文件或者目录的权限 第一种方式&#xff1a;通过 - 变更权限 u:所属者user g:所属组group o:其他人other a:所有人all&#xff08;u、g、o的综合&#xff09; &a…

python中textinput_python – 在Kivy应用程序中获取textinput值

使用self.txt1,self.lbl1等.class MyApp(App):# layoutdef build(self):layout BoxLayout(padding10, orientationvertical)btn1 Button(text"OK")btn1.bind(on_pressself.buttonClicked)layout.add_widget(btn1)self.lbl1 Label(text"test")layout.add…

android远程桌面软件毕设_向日葵远程管理软件

101向日葵远程向日葵软件相对来说&#xff0c;可以实现Windows、Mac、Linux、Android&#xff0c;IOS之间的跨平台互连&#xff0c;对于个人版本除开网络的连接速度和其他部分付费功能的限制&#xff0c;基本上针对个人&#xff0c;相关的功能也满足了个人的使用。‖正‖文‖1、…

photoshop基础

图层; 1.点击小眼睛可以隐藏/显示图层 2.按住alt同时点击小眼睛&#xff0c;单独打开某一图层 3.选择工具后&#xff0c;先设置属性&#xff0c;再进行操作 4.移动工具的移动内容是选中图层的移动 5.选中自动选择的时候鼠标只要选中任意内容&#xff0c;此内容都会自动选择…

编程一个最简单游戏_通过一个简单的数学游戏,清晰了解各大编程语言之间的一些区别...

我想很多人在小时候都玩过这么一个游戏&#xff0c;我记得以前的摩托罗拉的手机里面就有&#xff0c;那就是汉诺塔&#xff01;看到图片是不是想起来玩过这个游戏呢&#xff1f;汉诺塔&#xff1a;汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时…

python decimal用法_Python decimal模块使用方法详解

decimal 模块&#xff1a;decimal意思为十进制&#xff0c;这个模块提供了十进制浮点运算支持1.可以传递给Decimal整型或者字符串参数&#xff0c;但不能是浮点数据&#xff0c;因为浮点数据本身就不准确。2.要从浮点数据转换为Decimal类型from decimal import *Decimal.from_f…

Linux的实际操作:任务调度基本说明

Linux可以定时调度我们的脚本或者代码 任务调度&#xff1a;值得是系统在某个时间执行特定的命令或者程序 任务调度的分类&#xff1a; 1.系统工作&#xff1a;有些重要的工作必须周而复始执行。如病毒扫描 2.个别用户工作&#xff1a;个别用户可能希望执行某些程序&#x…

arcgis批量出图python代码_python使用arcpy.mapping模块批量出图

出图是项目里常见的任务&#xff0c;有的项目甚至会要上百张图片&#xff0c;所以批量出土工具很有必要。arcpy.mapping就是ArcGIS里的出图模块&#xff0c;能快速完成一个出图工具。arcpy.mapping模块里常用的类有MapDocument、DataFrame、Layer、DataDrivenPages和TextElemen…

python读取命令行输入-python获取命令行输入参数列表

&#xff08;一&#xff09;单一独立的参数 如果命令行输入的参数都是各自单一独立的&#xff0c;直接用个循环把所有参数逐一读出来就行了。sys模块里面直接用args sys.argv就可以获取到所有参数了&#xff08;返回值args是一个list&#xff09;&#xff0c;args0]是执行的py…

Linux的实际操作:Linux磁盘分区 、挂载

1.分区基础知识&#xff1a; &#xff08;1&#xff09;最多支持4个主分区 &#xff08;2&#xff09;系统只能安装在主分区 &#xff08;3&#xff09;扩展分区要占用一个主分区 &#xff08;4&#xff09;MBR最大只支持 2TB&#xff0c;但是拥有最好的兼容性 2.gpt分区&…