python基础教程,python基础语法
高级目录01。变量的引用1.1引用的概念1.2‘变量引用的例子’1.3函数的参数传递和返回值02。可变类型和不可变类型的哈希`(哈希`)03。局部变量和全局变量3.1局部变量的作用3.2局部变量的生命周期1)函数不能直接修改全局变量的引用2)在函数内部修改全局变量的值3)全局变量的位置4)全局变量的建议变量命名高级01。参考变量和变量数据存储在存储器中。在Python中,函数的参数传递和返回值都是通过引用传递的。1.1引用的概念在Python中
变量和数据是分开存储的,存储在内存中的某个位置。变量保存数据。记录在内存地址变量中的数据地址称为引用。使用id()函数检查变量中存储数据的内存地址。注意:如果一个变量已经被定义,当给一个变量赋值时,它实质上修改了数据的引用。
变量不再引用以前的数据,而是引用新赋值的数据。1.2变量引用的例子在Python中,变量的名字像便利贴一样粘贴在数据上。
定义一个整数变量A,并将其赋给1个代码。
图示
a=1
将变量a赋给2代码
图示
a=2
定义一个整数变量B,并将变量A的值赋给B代码
图示
b=a
变量B是附在数字2上的第二个标签,其本质是将A引用到B上。
1.3传递函数的参数和返回值在Python中,函数的参数/返回值是通过引用传递的。
定义测试(数量):
打印(- * 50)
Print(函数中“% d”的内存地址是% x“%(num,id(num)))
结果=100
Print(返回值%d在内存中的地址是%x% (result,id(result)))
打印(- * 50)
回送结果
a=10
Print(调用函数前的内存地址是%x% id(a))
r=试验(a)
Print(调用函数后,实际内存地址是%x% id(a))
Print(调用函数后返回值的内存地址是%x% id(r))02。变量和不可变类型是不可变类型,内存中的数据是不允许修改的:数字类型int、bool、float、complex、long(2 . x)string str tuple tuple tuple tuple变量类型,内存中的数据是可以修改的:list list字典dict a=1
你好
a=[1,2,3]
a=[3,2,1]demo_list=[1,2,3]
Print(定义列表后内存地址%d% id(demo_list ))
demo_list.append(999)
demo_list.pop(0)
演示_列表.删除(2)
演示列表[0]=10
Print(修改的内存地址%d% id(demo_list))
Demo_dict={name: Xiaoming}
Print(字典定义后的内存地址%d% id(demo_dict ))
demo_dict[age]=18
demo_dict.pop(name )
Demo_dict[name]=老王
Print(内存地址% d % id after modified data(demo _ dict))注意:字典的键只能使用不可变的数据。
注意
可变数据的改变是通过方法实现的。如果一个变量类型的变量被赋了一个新的数据,引用会修改这个变量,不是引用以前的数据,而是引用新赋数据的散列。
Python中有一个名为hash(o)的内置函数,它接收不可变类型的数据作为参数,并返回整数哈希作为算法。它的作用是提取数据的特征码(指纹),得到相同的结果,得到不同内容的不同结果。在Python中,设置dictionary的键值对,首先会对key进行哈希处理,已经决定了如何在内存中保存dictionary的数据,以便于dictionary的后续操作:添加、删除、更改、查找键值对的key必须是不可变的数据,键值对的值可以是任意类型的数据。03.局部变量和全局变量局部变量是在函数中定义的变量。只能在函数内部使用全局变量。它是在函数外部定义的变量(不是在某个函数内部定义的)。所有函数都可以在内部使用这个变量。提示:在其他开发语言中,大多数语言不建议使用全局变量3354。变量范围太大,导致程序维护不好!
3.1局部变量局部变量是在函数内部定义的变量,只能在函数内部使用。函数执行后,函数内部的局部变量将被系统回收。可以定义同名的局部变量,但不会互相影响。它们在函数内部使用,函数内部需要的数据被临时保存。def演示1():
num=10
打印(数字)
数量=20
打印(修改的%d% num )
def demo2():
数量=100
打印(数字)
演示1()
演示2()
打印( over )局部变量的生命周期所谓生命周期,就是从变量创建到被系统回收的过程。执行该函数时,将创建局部变量。函数执行后,局部变量将被系统回收。在生命周期中,局部变量可以用来存储函数内部临时使用的数据。3.2全局变量是在函数外部定义的变量。所有函数都可以使用这个变量#来定义一个全局变量。
num=10
def演示1():
打印(数字)
def demo2():
打印(数字)
演示1()
演示2()
Print(over )注意:当函数被执行时,当变量需要被处理时,它将:
首先,找出函数内部是否有指定名称的局部变量。如果有,直接用。如果没有,找出函数外是否有指定名称的全局变量。如果有,直接用。如果没有,程序会报错!1)函数不能直接修改全局变量的引用。
全局变量是在函数外部定义的变量(不是在某个函数中定义的),它可以在所有函数内部使用。提示:在其他开发语言中,通常不建议使用全局变量3354。变量范围太大,导致程序维护不好!
在函数内部,可以通过引用全局变量来获取相应的数据。但是,不允许直接修改全局变量3354的引用。使用赋值语句修改全局变量num=10的值。
def演示1():
打印(演示1 - * 50)
#只定义了局部变量,不会修改为全局变量,但是变量名是一样的。
数量=100
打印(数字)
def demo2():
打印(演示2 - * 50)
打印(数字)
演示1()
演示2()
Print(over )注意:在函数内部只定义了一个局部变量,但是全局变量的值不能在具有相同变量名3354的函数内部直接修改。
2)修改函数内部全局变量的值。如果需要修改函数中的全局变量,需要使用global声明num=10。
def演示1():
打印(演示1 - * 50)
# global关键字,告诉Python解释器num是一个全局变量
全局编号
#只定义了局部变量,不会修改为全局变量,但是变量名是一样的。
数量=100
打印(数字)
def demo2():
打印(演示2 - * 50)
打印(数字)
演示1()
演示2()
Print(over)3)全局变量定义的位置为了保证所有函数都能正确使用全局变量,全局变量应该定义在其他函数之上a=10。
def演示():
打印( %d % a )
打印( %d % b )
打印( %d % c )
b=20
演示()
C=30注意
因为全局变量C是在函数被调用之后定义的,所以在函数执行的时候,变量还没有定义,所以程序会报错!代码结构图如下
4)关于全局变量命名的建议。为了避免局部变量和全局变量混淆,有些公司在定义全局变量时有一些开发要求,比如全局变量名称前要加前缀g_或gl_等。提示:要求的具体格式可能因公司而异。
原创作品来自岁讨厌编程的博主。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。