- 8
- 0
- 约3.95万字
- 约 95页
- 2021-12-08 发布于天津
- 举报
Python语言特性
1 Python的函数参数传递
看两个如下例子,分析运行结果:
代码一:
a = l
def fun(a):
a = 2
fun(a) print(a) # 1
代码二:
a = []
def fun(a):
a.append(l) fun(a) print(a) # [1]
所有的变量都可以理解是存中一个对象的〃引用〃,或者,也可以看似C中void 的感觉。 这里记住的是类型是属于对象的,而不是变量。而对象有两种,可更改(mutable )
与不可更改(immutable )对象。在 python 中,strings, tuples,和 numbers 是不可更改的对象,而listdct等则是可以修改的对氮(这就是这个问题的重点) 当一个弓I用传递给函数的时候函数自动复制T分弓I用,这个函数里的弓I用和夕卜边的 弓I用没有半毛关系了所以第一个例子里函数把弓I用指向了 f 不可变对象当函数 返回的时候外面的弓I用没半毛感觉?而第二个例子就不一样了屈数的弓I用指向的是 可变对象,对它的操作就和定位了指针地址一样,在存里进行修改.
Python 中的元类(metaclass)
元类就是用来创建类的东西。你创建类就是为了创建类的实例对象,但是我们 已经学习到了 Python中的类也是对象。好吧,元类就是用来创建这些类(对象) 的,元类就是类的类
这个非常的不常用,详情请看:《深刻理解Python中的元类(metaclass)》
staticmethod 禾口 classmethod
Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例 方法,如下:
class A(object):
def foo(self,x):
print ”executing foo(%s,%s)H%(self.x)
classmethod
def class_foo(cls,x):
print( executing class_foo(%s,%s)H%(cls,x))
staticmethod
def static_foo(x):
print (^executing static_foo(%s)H%x)
a=A()
这里先理解下函数参数里面的self和cis.这个self和cis是对类或者实例的绑定.对 于实例方法,我们知道在类里每次定义方法的时候都需要绑定这个实例,就是 foo(self, x),为什么要这么做呢?因为实例方法的调用离不开实例,我们需要把实 例自己传给函数,调用的时候是这样的a.foo(x)(其实是foo(a, x)).类方法一样, 只不过它传递的是类而不是实例,A. class_foo(x).注意这里的self和cis可以替换 别的参数但是python的约定是这俩,还是不要改的好.
对于静态方法其实和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时 候需要使用 a.static_foo(x)或者 A. static_foo(x)来调用.
\ 实例方法 类方法 静态方法
a 二 A()a.foo(x)a.class_foo(x)
a 二 A()
a.foo(x)
a.class_foo(x)
a.static_foo(x)
实例方法类方法静态方法A.class_foo(x)A.staticjoo(x)
实例方法
类方法
静态方法
A.class_foo(x)
A.staticjoo(x)
4类变量和实例变量
class Person:
name=Haaa pl=Person()
p2=Person()
=bbbH
print() # bbb
print() # aaa
print(P) # aaa
类变量就是供类使用的变量,实例变量就是供实例使用的.
这里=-bbb-是实例调用了类变量,这其实和上面第一个问题一样,就是函数 传参的问题,pl. name —开始是指向的类变量name=”aaa “,但是在实例的作用域里把 类变量的弓I用改变了,就变成了一^实例变量不再引用Person的类变量
name 了.
可以看看下面的例子:
class Person:
name=[]
pl=Person()
p2=Person()
.append( 1)
print() #[1]
print() # (1]
print(P) # [1]
5 Python 自省
这个也是python彪悍的特性.
自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型?简单一句就是 运行时能够获得对象的类型上匕如 type(),di「(),getattr(),hasattr(),isinstance().
6字典推导式
可能你见过列表推导时,却没有见过字典推导式,在2.7中才加入的:
您可能关注的文档
- 汽车吊性能表(全).docx
- 汽车理论习题课讲解的题目.docx
- 桥梁各种施工工艺框图.docx
- 人教(部编版)一年级上册jqx精选优秀教案.docx
- 人教版初一下数学期中复习压轴题专题.docx
- 人教版三年级上册数学期末教案(含复习试题).docx
- 人教版数学五年级上册第二单元位置测试题.docx
- 人教部编版六年级下册作文指导第九讲生活处处有处处生活可作文精品教案.docx
- 人教部编版落花生优秀教案1.docx
- 人教部编版四年级上册第三单元《古诗三首题西林壁》教案优秀版.docx
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 部编版(26春)小学语文一年级下册教学设计全册.docx VIP
- 春节复工煤矿工人培训教案.pptx VIP
- Haier海尔蒸箱ST450-30S说明书.pdf
- Joyoung九阳电饭煲F30S-S160使用说明书.pdf
- 2025年新疆中考物理试题(含答案详解)原卷.pdf
- 79博客-目录书签跳转版.pdf VIP
- 计算智能 课件全套 第1--11章 绪论、模糊系统理论---新型群智能优化算法.pptx
- 2025年国庆节后煤矿复产复工'六个一'安全资料汇编.docx VIP
- 2023中国生物材料大会会议手册-ok.pdf VIP
- Midea 美的 ET1065QL-01SE嵌入式电烤箱 说明书.pdf
原创力文档

文档评论(0)