网站建设资讯

NEWS

网站建设资讯

python函数传对象 python中用哪个函数来获取对象的类型?

python如何使用socket来传输对象

import socket

成都创新互联专注于广灵企业网站建设,自适应网站建设,商城网站定制开发。广灵网站建设公司,为广灵等地区提供建站服务。全流程按需定制设计,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

import struct

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

sock.connect(('localhost', 10000))

values = (1, 'ab', 2.7)

packer = struct.Struct('I 2s f')

packed_data = packer.pack(*values)

try:

sock.sendall(packed_data)

finally:

sock.close()

有个模块叫struct,可以自定义结构体,可以这样发送代码。

try:

import cPickle as pickle

except:

import pickle

class AA():

def a(self):

print "123"

ddd = AA()

data = pickle.dumps(ddd)

还有个模块叫pickle,可以打包任何python对象,打包的结果也可以拿到套接字里发。

python函数调用的参数传递

python的函数参数传递是"引用传递(地址传递)"。

python中赋值语句的过程(x = 1):先申请一段内存分配给一个整型对象来存储数据1,然后让变量x去指向这个对象,实际上就是指向这段内存(这里有点和C语言中的指针类似)。

在Python中,会为每个层次生成一个符号表,里层能调用外层中的变量,而外层不能调用里层中的变量,并且当外层和里层有同名变量时,外层变量会被里层变量屏蔽掉。函数  调用  会为函数局部变量生成一个新的符号表。

局部变量:作用于该函数内部,一旦函数执行完成,该变量就被回收。

全局变量:它是在函数外部定义的,作用域是整个文件。全局变量可以直接在函数里面应用,但是如果要在函数内部改变全局变量,必须使用global关键字进行声明。

注意 :默认值在函数  定义  作用域被解析

在定义函数时,就已经执行力它的局部变量

python中不可变类型是共享内存地址的:把相同的两个不可变类型数据赋给两个不同变量a,b,a,b在内存中的地址是一样的。

python中视图函数传值的数据类型可以传对象吗

python的一切数据类型都是对象。但是python的对象分为不可变对象和可变对象。python的变量是引用,对python变量的赋值是引用去绑定该对象。

可变对象的数据发生改变,例如列表和字典,引用不会更改绑定对象,毕竟本身就是用于增删改查的,频繁地产生新对象必然导致开销巨大,只需要该对象内部变化就行;但对于绑定了不可变对象的引用,对象一旦改变就会使引用绑定新的对象。

这一点也会反应到函数的参数上。python的传值方式是“传对象”引用。python的函数,形参实际上是引用,实参便是对象绑定到该引用上。本质是形参会被作为函数的局部变量,在开辟的函数的栈内存中被声明。

简要来讲:

如果参数是数,则类似值传递,

如果参数是列表和字典,则类似引用传递。

每个对象都会有个id, 可以用id()验证以上说法:

这个函数的参数是列表,是可变对象。


当前名称:python函数传对象 python中用哪个函数来获取对象的类型?
分享URL:http://cdweb.net/article/doogcsd.html