Python with 工作原理、装饰器、回收机制、内存管理机制、拷贝、作用域等( 六 )


loads:针对内存对象 , 将转换为dict(将转换为 dict )
data = http://www.kingceram.com/post/json.loads('{'a':'1111','b':'2222'}')
dump 和 dumps(序列化)
dump:将dict类型转换为json字符串格式 , 写入到文件(易存储)
data_dict = {'a':'1111','b':'2222'}json.dump(data_dict, open('demo.json', 'w'))
dumps:将dict转换为(易传输)
data_dict = {'a':'1111','b':'2222'}data_str = json.dumps(data_dict)
05、函数基本操作
相关的内置函数介绍:
函数的动态参数 *args , ** , 形参的顺序 , 就需要用到万能参数 , 动态参数 , *args , **
参数顺序:位置参数、*args、默认参数、**
*args 将所有实参的位置参数聚合到一个元组 , 并将这个元组赋值给args , 起作用的是* 并不是args , 但是约定俗成动态接收实参的所有位置参数就用args
def sumFun(*args):print(args)sumFun(1,2,['hello'])#是一个元组(1, 2, ['hello'])
** 将所有实参的关键字参数聚合到一个字典 , 并将这个字典赋值给
(起作用的是** 并不是 , 但是约定俗成动态接收实参的所有关键字参数就用)
def fun(*args,**kwargs):print(args)print(kwargs)fun(1,2,['a','b'],name='xiaobai',age=18)# 结果:# (1, 2, ['a', 'b'])#位置参数 , 元组# {'name': 'xiaobai', 'age': 18}#关键字参数 , 字典
06、变量的作用域
作用域就是指命名空间 , 创建、改变或查找变量名都是在所谓的命名空间中 。变量在赋值创建时 , 中代码赋值的地方决定了这个变量存在于哪个命名空间 , 也就是他的可见范围 。
对于函数 , 函数为程序增加一个额外的命名空间层来最小化相同变量之间的冲突:默认情况下 , 一个函数内赋值的所有变量名都与该函数的命名空间相互关联 。这条规则意味着:
可见 , 一个变量的作用域取决于它在代码中被赋值的位置 , 而与函数调用完全无关
我们可以通过()函数来查看全局作用域中的内容 , 也可以通过()来查看局部作用域中的变量和函数信息
作用域细节
函数的命名空间时可嵌套的 , 以便函数内部用的变量名不会与函数外(同一模块或另一函数中)的变量名冲突 。函数定义了局部作用域 , 而模块定义了全局作用域:
注意:一个函数内部任何类型的赋值都会把一个名称划定为局部的 , 包括=语句 , 的模块名 , def的函数名 , 函数形式参数名等 。如果你在def中以任何方式赋值一个名称 , 他都会默认为该函数的局部名称 。
但是 , 要注意原位置改变对象并不会把变量划分为局部变量 , 只有对变量赋值才可以 。例如L在模块顶层被赋值为列表 , 在一个函数内类似L.(X)的语句并不会将L划分为局部变量 , 而L = X却可以 。是修改对象 , 而=是赋值 , 要明白修改一个对象并不是对一个变量名赋值 。
变量名解析:LEGB规则 , 总结三条简单的规则