一、Python的函数传参
python所有的变量都可以看为内存中对象的‘引用’,
可变对象:list(列表),dict(字典),字典中的key值是不可更改的数据类型,而value是可更改的。
不可变对象:tuple(元祖),string,number(数字)
当函数中对一个不可变对象赋值时 并不会发生改变。
a = 1 print('a:{}'.format(id(a))) def fun(a): a = 2 print('fun_a{}'.format(id(a))) fun(a) print('a:{}'.format(id(a))) print(a)
而当引用的为可变对象时,对它的操作相当于定位了它的指针 其值会发生改变
v = [] def func(v): v.append('1') func(v) print(v)
总结当一个引用传递给函数的时候,函数会复制一份引用,当值为不可变引用时,不会发生变化,
除非在函数内部重新定义一个相同名称的变量并return在函数执行的时候,其值才会改变。
二、普通方法,实列方法、类方法、静态方法
普通方法在python环境中,独立于类或者对象的函数,可以直接导入。
实例方法,使用之前先通过类实例化一个对象,然后在通过对象调用实例方法。与c++类似。实例方法的第一个参数默认传入一个self,这个self会与实例绑定
类方法,与实例方法的调用方式类似,不同的是类方法第一个参数默认传入一个类cls,而不是对象。
静态方法:对于静态方法其实和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时候需要使用a.static_foo(x)
或者A.static_foo(x)
来调用.
静态方法修饰:@staticmethod
类方法修饰:@classmethod
三、类属性,实例属性
类属性就是提供类的使用属性,实例属性就是提供实例使用的属性
由于Python是动态语言,根据类创建的实例可以任意绑定属性。
给实例绑定属性的方法是通过实例变量,或者通过self
变量
#类属性 class Student(object): name = 'tom'#共有属性 __age = 12#私有属性 p = Student() print(p.name) print(Student.name) #print(p.__age)#错误,不能在类外通过实例对象访问私有的类属性 #print(Student.__age)#错误,不能在类外通过类对象访问私有的类属性 #实例属性(对象属性) class People(object): address = 'JZIT'#类属性 def __init__(self): self.name = '1807'#实例 self.age = '19'#实例 p = People() p.age = 20#实例 print(p.name) print(p.address) print(p.age) print(People.address) #print(People.name)#错误,无法访问 #print(People.age)#错误,无法访问 #通过实例(对象)修改类属性 class text(object): cullty = 'Big Data' #类属性 print(text.cullty) p = text() print(p.cullty) p.cullty='JZIT' print(p.cullty) #实例属性会屏蔽掉同名的类属性 print(text.cullty) del p.cullty#删除实例属性 print(p.cullty)
四、自省
自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型。
五、推导式
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
#列表推导
lis=[i for i in range(1,100,5)] print(lis)
#字典推导
dic={key :value for key,value in enumerate(lis)} print(dic)
来源:CSDN
作者:放弃可耻但是有用~
链接:https://blog.csdn.net/weixin_44332962/article/details/103842275