iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >【Python之旅】第四篇(三):Pyt
  • 695
分享到

【Python之旅】第四篇(三):Pyt

之旅第四篇Python 2023-01-31 04:01:48 695人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

    终于是来到了python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。1.面向对象编程的相关名词及解释    世界万物,皆可分类,一切皆为对象。    所谓的面向对象编程,指

    终于是来到了python面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。


1.面向对象编程的相关名词及解释

    世界万物,皆可分类,一切皆为对象。

    所谓的面向对象编程,指的是一种编程的思想,通过对具体代码实现过程(面向过程编程)的不断抽象,以形成一个个的类别,以提高我们进行大型程序编写的效率(面向对象的具体实现需要面向过程,大型程序也可以用面向过程来编写,只是比较麻烦)。对于面向对象编程的相关名词和解释如下:

对象 :类的实体\一个叫Rain的好色的男人

类:人\动物\机器

方法:人会走,会思考\狗会叫,会咬人\定义一个类的各个功能

消息传递:狗叫了,人听见了,就叫通信

继承:狗都四条腿走路

封装:人不能引用狗的特性,比如四条腿走路

多态性:一个叫的功能,可能是低吼,也可是大声叫

抽象性:简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义

    对“类”这个名词举个简单的例子:

杯子:类

这个杯子:对象(实体),属于“杯子”这个类

    对“方法”这个名词举个例子:动态方法(动态属性)与静态方法(静态方法可以理解为类的属性)。


2.类、对象、方法

    关于三者的关系,用下面的一张图片可以非常清晰明确的说明:

wKiom1YNXzXhVqtqAAG2f59r2RI144.jpg


3.类的语法:第一个面向对象程序

程序代码如下:
class dog:                    #定义一个类
	def name(self):       #定义类的方法
		print "Hello master, my name is Python."

D = dog()    #类的实例化,产生类的对象,如果不实例化,将无法访问该类
D.name()     #使用类的方法

执行情况如下:
xpleaf@xpleaf-Machine:/mnt/hgfs/Python/day4$ python myclass4.py 
Hello master, my name is Python.

 

4.类的方法:有关self

    类的方法(类函数)与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

    如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)。

    类中如果有多个不同的方法,并且类中的变量需要相互访问,这时候就需要使用self即用类自身来作为中间变量以进行变量在不同类中的传递了,可以看下面的一个例子:

程序代码如下:
class Dog:
	class_object = 'food' #这是一个类变量
	def sayHi(self):
		print 'Hi master , I am your little dog, who do you want me to bite...'
		favorate_food = 'bone'
		self.FavorFood = favorate_food    #将favorate_food变为全局变量,让其它方法可以引用
	def eat(self, food_type):
		if food_type == self.FavorFood:  #不同类方法之间的变量调用,需要通过类本身
			print 'I like it very much..thanks'
		else:
			print 'Do not give me this bull shit...'

d = Dog()
d.sayHi()   '''如果不调用sayHi(),则无法将favorrate_food变成一个类变量,所谓类变量,
			即是类下定义的第一级变量'''
d.eat('bone') 

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python class7.py 
Hi master , I am your little dog, who do you want me to bite...
I like it very much..thanks


    当然这里实际上是把sayHi方法中的favorate_food变量变为变中的全局变量,需要注意的是,下面的方法是不可以的:

程序代码如下:
class Dog:
	class_object = 'food' 
	def sayHi(self):
		print 'Hi master , I am your little dog, who do you want me to bite...'
		favorate_food = 'bone'

	def eat(self, food_type):
		if food_type == self.sayHi().favorate_food: #这样使用是不行的
			print 'I like it very much..thanks'
		else:
			print 'Do not give me this bull shit...'

d = Dog()
d.sayHi()   
d.eat('bone') 

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python class7.py 
Hi master , I am your little dog, who do you want me to bite...
Hi master , I am your little dog, who do you want me to bite...
Traceback (most recent call last):
  File "class7.py", line 16, in <module>
    d.eat('bone') 
  File "class7.py", line 9, in eat
    if food_type == self.sayHi().favorate_food: 
AttributeError: 'NoneType' object has no attribute 'favorate_food'

    上面程序不行是因为,self.sayHi()时,其实会执行sayHi()方法,因为它本来就是一个函数,并且没有定义返回值,因此会返回None值,导致程序执行出错。

    上面的例子意在说明,不同类方法之间调用变量时,需要将其变为全局变量,并且要通过self即类本身进行引用。即类下的各个方法(函数,name也认为是一个函数),不能独自相互通信,必须要通过类作为中间人来进行通信,self即代表self本身,通过self.name即可完成通信,所以在定义类下的方法时,必须要加一个参数,即self,来代表类本身,否则这个方法就不能被使用当然参数不一定要是self。


5.类的构造函数__init__()与解构函数__del__()

    关于两个函数的说明,可以看下面一个例子:

程序代码如下:
class Person:
	def __init__(self,name,age):                #构造函数,只要把类实例化,就会执行此函数
		print 'I am being called right now...'
		self.Name = name
		self.Age = age

	def sayHi(self):                            #类的普通方法
		print 'Hi my name is %s, i am %s years old' % (self.Name,self.Age)

	def __del__(self):                          #解构函数,当实例在内存中释放时,才会执行此函数
		print 'I Got killed just now...bye...', self.Name

p = Person('Alex',29)
p.sayHi()
#del p
print '*'*60

p2 = Person('Jack',40)
p2.sayHi()
#del p2

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python person_class5.py 
I am being called right now...
Hi my name is Alex, i am 29 years old
************************************************************
I am being called right now...
Hi my name is Jack, i am 40 years old
I got killed just now...bye... Jack
I got killed just now...bye... Alex

    可以看到程序最后有两行相同内容的输出(除了名字不一样),是因为程序结束时,会把该程序在内存中占用的空间释放,于是执行两次解构函数(因为进行了两次类的实例化),才出现这样的情况为了验证这个结论,将程序代码修改为如下并执行:

程序代码如下:
class Person:
	def __init__(self,name,age):
		print 'I am being called right now...'
		self.Name = name
		self.Age = age

	def sayHi(self):
		print 'Hi my name is %s, i am %s years old' % (self.Name,self.Age)

	def __del__(self):
		print 'I got killed just now...bye...', self.Name

p = Person('Alex',29)
p.sayHi()
del p    #其它不变,只是在做类的另一个实例前,删除该实例
print '*'*60

p2 = Person('Jack',40)
p2.sayHi()
#del p2

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python person_class5.py 
I am being called right now...
Hi my name is Alex, i am 29 years old
I got killed just now...bye... Alex
************************************************************
I am being called right now...
Hi my name is Jack, i am 40 years old
I got killed just now...bye... Jack

    上面的程序代码及执行结果便可以说明,解构函数在类完成调用并且在内存中释放时才会执行。


6.类的公有属性与私有属性及其调用

    类的公有属性即是类下的普通方法,这些方法是可以直接被调用的;而类的私有属性只有在类中不同方法之间可以相互调用,一般情况下是不能在类外直接调用的。

    可以看下面一个例子:

程序代码如下:
class Person:
	def __init__(self,name,age):
		print 'I am being called right now...'
		self.Name = name
		self.Age = age

	def sayHi(self):
		print 'Hi my name is %s, i am %s years old' % (self.Name,self.Age)
		self.__talk()    #可以引用类中的私有属性

	def __talk(self):    #私有属性的定义方法
		print "I'm private..."

p=Person('Alex',29)
p.sayHi()

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python private6.py 
I am being called right now...
Hi my name is Alex, i am 29 years old
I'm private...

    如果将代码修改为如下,即在类外调用私有属性:

程序代码如下:
class Person:
	def __init__(self,name,age):
		print 'I am being called right now...'
		self.Name = name
		self.Age = age

	def sayHi(self):
		print 'Hi my name is %s, i am %s years old' % (self.Name,self.Age)
		self.__talk()

	def __talk(self):
		print "I'm private..."

p=Person('Alex',29)
p.sayHi()
p.__talk()    #在类外通过普通方式调用类的私有属性

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python private6.py 
I am being called right now...
Hi my name is Alex, i am 29 years old
I'm private...
Traceback (most recent call last):
  File "private6.py", line 17, in <module>
    p.__talk()
AttributeError: Person instance has no attribute '__talk' #会出现找不到类方法的错误提示

    当然可以通过特殊的方法引用类中的私有属性:

程序代码:
class Person:
	def __init__(self,name,age):
		print 'I am being called right now...'
		self.Name = name
		self.Age = age

	def sayHi(self):
		print 'Hi my name is %s, i am %s years old' % (self.Name,self.Age)
		self.__talk()

	def __talk(self):
		print "I'm private..."

p=Person('Alex',29)
p.sayHi()

print '*'*30

p._Person__talk()

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python private6.py 
I am being called right now...
Hi my name is Alex, i am 29 years old
I'm private...
******************************
I'm private...


7.类的继承

    类有分父类和子类,在有多个子类的情况下,子类通过继承父类的属性或方法,就可以节省很多代码空间。可以先看下面一个没有参数传递的类的继承简单例子:

程序代码如下:
class person:                #父类

	def tell(self, name):
		print 'hi my name is', name

class student(person):       #子类,继承父类

	def study(sefl):
		print 'I am studying Py right now.'

s = student()

s.study()
s.tell('MengFanHao') #子类继承父类后便可以直接调用父类的方法
                     #在有多个需要同时执行相同功能的子类情况下,使用类的继承可以节省代码空间
执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python cla_with_no_arg9.py 
I am studying Py right now.
hi my name is MengFanHao

    看过上面的例子后,再看下面一个含有参数传递的例子,通过该例子也可以很好地理解前面第2点中关于类、对象、方法的理解:

class SchoolMember:        #父类,学校成员
	school_name = 'Oldboy linux edu.'    #第一级变量,即类属性
	def __init__(self,name,gender,nationality = 'CN'):    #构造函数
		self.name = name
		self.gender = gender
		self.nation = nationality

	def tell(self):    #普通的类方法
		print 'Hi, my name is %s , I am from %s' % (self.name,self.nation)

class Student(SchoolMember):    #子类,学生,继承父类学校成员的相关属性
	def __init__(self, Name, Gender, Class, Score, Nation = 'US'): #子类下的方法
		SchoolMember.__init__(self, Name, Gender, Nation) #让父类使用子类传递过去的参数
		self.Class = Class
		self.Score = Score

	def payTuition(self, amount):    #子类下的方法
		if amount < 6499:
			print 'Get the fuck off...'
		else:
			print 'Welcome onboard!'

class Teacher(SchoolMember):    #子类,老师,继承父类学校成员的相关属性
	def __init__(self, Name, Gender, Course, Salary, Nation = 'FR'):
		SchoolMember.__init__(self, Name, Gender, Nation)
		self.course = Course
		self.Salary = Salary

	def teaching(self):
		print 'I am teaching %s, i am making %s per month !' % (self.course, self.Salary)

S1 = Student('WangFanHao', 'Male', 'Python', 'C+', 'JP') #实例化一个子类对象,学生
S1.tell()    #直接继承父类中的tell()方法
S1.payTuition(4999)    #使用子类Student()自身中的类方法
print S1.school_name   #直接继承父类的一个属性   

print '*'*60

S2 = Student('ShitTshirt', 'Male', 'Linux', 'B')
S2.tell()
S2.payTuition(6500)
#S2.age = 29
#print S2.age

print '*'*60

T1 = Teacher('Alex', 'Male', 'c++', 5000)   #实例化一个子类对象,学生
T1.tell()            #直接继承父类中的tell()方法
T1.teaching()        #直接继承父类的一个属性

print 'S1.name:', S1.name    #测试用,观察输出结果
print 'S2.name:', S2.name
print 'T1.name:', T1.name

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python class_continue8.py
Hi, my name is WangFanHao , I am from JP
Get the fuck off...
Oldboy Linux edu.
************************************************************
Hi, my name is ShitTshirt , I am from US
Welcome onboard!
************************************************************
Hi, my name is Alex , I am from FR
I am teaching C++, i am making 5000 per month !
S1.name: WangFanHao
S2.name: ShitTshirt
T1.name: Alex	

    通过上面的例子便可以很好地理解类的继承的作用了,即如果需要在多个子类中执行相同的代码功能时,就可以通过类的继承来节省代码空间。


8.类的属性修改:setattr(),delattr()与getattr()

    以上面程序为例,做如下的演示:

首先在交互器中导入该类:

>>> import class_continue8
Hi, my name is WangFanHao , I am from JP
Get the fuck off...
Oldboy Linux edu.
************************************************************
Hi, my name is ShitTshirt , I am from US
Welcome onboard!
************************************************************
Hi, my name is Alex , I am from FR
I am teaching C++, i am making 5000 per month !
S1.name: WangFanHao
S2.name: ShitTshirt
T1.name: Alex
>>> import tab
>>> class_continue8.
class_continue8.S1                 class_continue8.__hash__(
class_continue8.S2                 class_continue8.__init__(
class_continue8.SchoolMember       class_continue8.__name__
class_continue8.Student            class_continue8.__new__(
class_continue8.T1                 class_continue8.__package__
class_continue8.Teacher            class_continue8.__reduce__(
class_continue8.__class__(         class_continue8.__reduce_ex__(
class_continue8.__delattr__(       class_continue8.__repr__(
class_continue8.__dict__           class_continue8.__setattr__(
class_continue8.__doc__            class_continue8.__sizeof__(
class_continue8.__file__           class_continue8.__str__(
class_continue8.__fORMat__(        class_continue8.__subclasshook__(
class_continue8.__getattribute__(


setattrr():在类中添加属性

1.子类有的属性,属于该子类的对象没有定义,会继承该属性;如果有定义,则不会继承子类的该属性
>>> class_continue8.Student.age    #原来Student类中并没有age属性
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class Student has no attribute 'age'
>>> setattr(class_continue8.S)
class_continue8.S1            class_continue8.SchoolMember
class_continue8.S2            class_continue8.Student
>>> setattr(class_continue8.Student,'age',29)    #在Student类中添加age属性
>>> class_continue8.Student.age    #再次查看age属性
29
>>> class_continue8.S1.age    #S1与S2作为Student类的实例化对象,也会有age属性
29
>>> class_continue8.S2.age
29
>>> setattr(class_continue8.S1,'age',26)
>>> class_continue8.S1.age        #此时S1对象有定义,因此不会继承所属子类的该属性
26

2.子类的对象有的属性,但在其所属子类没有定义,则该子类不会反继承该属性
>>> setattr(class_continue8.S1,'tuition',5000)    #如果仅仅是在对象中添加tuition属性
>>> class_continue8.Student.age
29
>>> class_continue8.Student.tuition    #则在S1对象所属的类Student中并不会有tuition属性
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class Student has no attribute 'tuition'
>>> class_continue8.S1.tuition
5000
>>> class_continue8.S2.tuition        #因此S2对象也不会有该属性
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: Student instance has no attribute 'tuition'

3.父类有的属性,子类中没有定义,则子类会继承该属性;如果子类中有定义,则不会继承
>>> setattr(class_continue8.SchoolMember,'name','Python')    #在子类在没有定义
>>> class_continue8.SchoolMember.name
'Python'
>>> class_continue8.Student.name    #因此子类会继承该属性
'Python'
>>> setattr(class_continue8.SchoolMember,'age',25)    #在父类中定义子类有定义的属性
>>> class_continue8.SchoolMember.age
25
>>> class_continue8.Student.age    #子类已经定义了age属性,因此不会再继承父类的该属性
29

    从上面的例子可以看出,对于父类、子类、对象,属性的优先级以本地定义的为主,如果本地没有定义,则继承上一级的属性,如果有定义,则使用本地的。


delattr():删除类中的属性

>>> class_continue8.SchoolMember.name
'Python'
>>> delattr(class_continue8.SchoolMember,'name')
>>> class_continue8.SchoolMember.name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class SchoolMember has no attribute 'name'


getattr()的主要用法如下:

程序代码如下:
class person:

	def tell(self, name):
		print 'hi my name is', name

	def study(sefl):
		print 'I am studying Py right now.'

class student(person):

	def study(sefl):
		print 'I am studying Py right now.'

p = person()

vars = ['tell', 'study']

v1 = vars[0]

getattr(p, v1)('Oldboy')

执行情况如下:
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python cla_getattr_with_no_arg10.py 
hi my name is Oldboy

    对于该程序,如果直接使用p.v1('name')来访问类中的方法是不行的,会有如下的提示错误:

xpleaf@xpleaf-machine:/mnt/hgfs/Python/day4$ python cla_getattr_with_no_arg10.py 
Traceback (most recent call last):
  File "cla_getattr_with_no_arg10.py", line 21, in <module>
    p.v1('Oldboy')
AttributeError: person instance has no attribute 'v1'

    因此getattr()的主要用途就在于有一个类有多个方法时,需要对该类的所有方法都执行一遍,那么可以将类中的方法都写入一个列表中,再通过getattr()和循环的方法来完成,这样就可以节省很多代码空间。

--结束END--

本文标题: 【Python之旅】第四篇(三):Pyt

本文链接: https://www.lsjlt.com/news/187806.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【Python之旅】第四篇(三):Pyt
        终于是来到了Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。1.面向对象编程的相关名词及解释    世界万物,皆可分类,一切皆为对象。    所谓的面向对象编程,指...
    99+
    2023-01-31
    之旅 第四篇 Python
  • 【Python之旅】第六篇(四):Pyt
        在多线程程序执行过程中,为什么需要给一些线程加锁以及如何加锁,下面就来说一说。1.给线程加锁的原因    我们知道,不同进程之间的内存空间数据是不能够共享的,试想一下,如果可以随意共享,谈何安全?但是一个进程中的多个线程是可以共享这...
    99+
    2023-01-31
    之旅 第六篇 Python
  • 【Python之旅】第三篇(三):Pyt
    说明:    Python的正则表达式功能强大,使用灵活,但由于目前对Python中正则表达式的使用和认识都比较浅,因此急于做笔记和总结显然是不可行的,因此,这里给出下面几篇不错的参考文档:1.较为详细的Python正则表达式功能介绍的文档...
    99+
    2023-01-31
    之旅 第三篇 Python
  • 【Python之旅】第四篇(二):Pyt
        在Python程序的执行过程中,难免会出现异常的情况,如果做的是跟用户交互的程序,当用户输入不可接受的内容时,在可预见的范围内,我们当然是希望可以给用户一些提示,而不是原来Python内置异常中的那些提示语句,毕竟那些语句只适合给程...
    99+
    2023-01-31
    之旅 第四篇 Python
  • 【Python之旅】第四篇(一):Pyt
        有时候拿到一个程序接口,需要对其进行扩展,但是又不能修改原来接口的源代码,这时候就需要使用装饰器了。    有下面一个小程序,假如是别人提供给我们的调用接口:import time def sayHi():         tim...
    99+
    2023-01-31
    之旅 第四篇 Python
  • 【Python之旅】第六篇(三):Pyt
        学习Python的多线程(Multi-threading),至少应该要有进程与线程的基本概念,可以看我转载的一篇文章:《进程与线程的一个简单解释》。    在前面使用Python Socket来编写简版SSH程序的时候,其实已经有使...
    99+
    2023-01-31
    之旅 第六篇 Python
  • 【Python之旅】第五篇(三):Pyt
        前面的几个例子都是单线程的,下面再来说说多线程的。1.多线程模块    主要是socketserver模块,如下图示:2.多线程原理    如下图示说明:3.SockteServer例子说明服务器端:客户端:4.演示    还是以前...
    99+
    2023-01-31
    之旅 第五篇 Python
  • 【Python之旅】第五篇(二):Pyt
        前面第五篇(一)中的一个Socket例子其实就是单线程的,即Server端一次只能接受来自一个Client端的连接,为了更好的说明socket单线程和阻塞模式,下面对前面的例子做修改。1.单线程+阻塞+交互式    前面的例子是单线...
    99+
    2023-01-31
    之旅 第五篇 Python
  • 【Python之旅】第六篇(六):Pyt
        关于进程与线程的对比,下面的解释非常好的说明了这两者的区别:    这里主要说明关于Python多进程的下面几点:1.多进程的使用方法 2.进程间的通信之multiprocessing.Manager()使用 3.Python进程池...
    99+
    2023-01-31
    之旅 第六篇 Python
  • 【Python之旅】第五篇(一):Pyt
        只要和网络服务涉及的,就离不开Socket以及Socket编程,下面就说说Python Socket通信的基本原理。1.Socket    socket也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“...
    99+
    2023-01-31
    之旅 第五篇 Python
  • 【Python之旅】第二篇(一):Pyt
    说明:    主要是file()和open()函数的使用,但在查open()函数的帮助时,会有下面的说明:>>> help(open) …… Open a file using the file() type, retur...
    99+
    2023-01-31
    之旅 第二篇 Python
  • 【Python之旅】第五篇(四):基于P
        还是继续延续篇五中前三节的例子,通过对代码的修修补补,把它改成一个可以在连接后就能在Client端执行Server端命令的程序,所以就有点类似于SSH连接程序了。    至于还是用前面的例子来改嘛,是因为上课也一直这么干,而且老师也...
    99+
    2023-01-31
    之旅 第五篇 Python
  • Python学习之旅(三十四)
    UDP编程 相对TCP,UDP则是面向无连接的协议 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包 虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用...
    99+
    2023-01-30
    之旅 Python 三十四
  • 【Python之旅】第七篇(一):再谈P
        主要是再进一步加深Python中关于多线程相关函数join()的理解以解多线程的执行过程。这里通过下面的例子来作进一步的说明。1.多线程与主程序代码的执行顺序关系    给出下面程序代码:#!/usr/bin/env python ...
    99+
    2023-01-31
    之旅 再谈 第七篇
  • Python学习之旅(十四)
    Python内置函数 1、abs:取绝对值 abs(-1) 1 2、all:把序列中的每一个元素拿出来做布尔运算,都为真则返回True,如果序列中有None、0、“”、[]、{}、()则返回False all([1,23,0]) ...
    99+
    2023-01-30
    之旅 Python 十四
  • Python学习之旅(三十三)
    网络通信是两台计算机上的两个进程之间的通信,而网络编程就是如何在程序中实现两台计算机的通信 P协议负责把数据从一台计算机通过网络发送到另一台计算机 TCP协议则是建立在IP协议之上的。TCP协议负责在两台计算机之间建立可靠连接,保证数据...
    99+
    2023-01-30
    之旅 Python 三十三
  • python之基础篇(四)
    防伪码:忘情公子著本篇我们来说说python的内置对象类型及其运算。  python有许多的内置类型,我们为什么要使用内置类型呢?python编程时是尽量去使用自定义类型还是尽可能多的使用内置类型呢?  内置类型对python本身来讲它的理...
    99+
    2023-01-31
    基础 python
  • Python学习之旅(二十四)
    一、threadlocal 在多线程环境下,每个线程都有自己的数据 一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁 在函数间一层层调用的时候,使用局部变量很麻烦,使...
    99+
    2023-01-30
    之旅 二十四 Python
  • Python之路【第六篇】:Python
    一、迭代器 1、迭代的概念 #迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 代码如下: while True: print('==========&...
    99+
    2023-01-31
    之路 第六篇 Python
  • Python之路【第八篇】:Python
    一、模块和包 模块(module)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码会越来越长,越来越不容易维护。 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较...
    99+
    2023-01-31
    之路 第八篇 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作