一、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