python 之传参

一、Python的函数传递二、python类方法外部传参

一、Python的函数传递
a = 1
def fun(a):
print(“函数里”,id(a))
a = 2
print(“赋值后”,id(a), id(2))
print(“函数外”,id(a), id(1))
fun(a)
print(a)
函数外 1954180160 1954180160

函数里 1954180160

赋值后 1954180192 1954180192

1

    可以看到,在执行完a = 2之后,a引用中保存的值,即内存地址发生变化,由原来1对象的所在的地址变成了2这个实体对象的内存地址。下面我们来看另一个例子:

a = []
def fun(a):
print(“函数里”,id(a))
a.append(1)
print(“函数外”,id(a))
fun(a)
print(a)
函数外 2066745607752

函数里 2066745607752

[1]

注意:

类型是属于对象的,而不是变量。而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。

strings, tuples, 和numbers是不可更改的对象,而 list, dict, set 等则是可修改的对象。

当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了.所以第一个例子里函数把引用指向了一个不可变对象number,当函数返回的时候,外面的引用没半毛感觉.而第二个例子就不一样了,函数内的引用指向的是可变对象list,指向了列表的内存地址,因此调用并不会改变list内存地址.

二、python类方法外部传参
class MyClass:
“”“help myclass”""
x=123
def foo(self):
print(self.x)

a = MyClass()
print(a.foo())

‘’’
123
None
‘’’
注:

    MyClass()实际上调用的是init(self)方法,可以不定义,如果没有定义会在实例后隐式调用。

作用:对实例进行初始化。

        init()方法不能有返回值,也就是只能是None.

class Employee:
‘所有员工的基类’
empCount = 0

def __init__(self, name, salary):
    self.name = name
    self.salary = salary
    Employee.empCount += 1

def displayCount(self):
    print("Total Employee %d" % Employee.empCount)

def displayEmployee(self):
    print("Name : ", self.name, ", Salary: ", self.salary)

employee = Employee(‘xiaomaili’,‘666’) #创建实例对象

访问属性:可以使用点号 . 来访问对象的属性。使用如下类的名称访问类变量:

employee.displayCount() # 访问对象的属性,返回Total Employee 1
employee.displayEmployee() # 访问对象的属性,返回Name : xiaomaili , Salary: 666

添加,删除,修改类的属性

employee.age = 7 # 添加一个 ‘age’ 属性
employee.age = 8 # 修改 ‘age’ 属性
employee emp1.age # 删除 ‘age’ 属性

‘’’
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
实例化:创建一个类的实例,类的具体对象。
方法:类中定义的函数。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
‘’’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值