全局变量&局部变量,global&nonlocal】的更多相关文章

###全局变量与局部变量 1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量 2.函数内部的变量名如果第一次出现,且出现在=后面,且该变量在全局域中已定义,则这里将引用全局变量,如果该变量在全局域中没有定义,当然会出现"变量未定义"的错误. 3.函数中使用某个变量时,该变量名既有全局变量也有同名的局部变量,则会使用局部变量 4.在函数中,如果想给全局变量赋值,则需要用关键字global生命 NAME=&…
6.函数的动态参数 *args,**kwargs:能接受动态的位置参数和动态的关键字参数 *args -- tuple *kwargs -- dict 动态参数优先级:位置参数 > 动态位置参数 > 默认参数(关键字参数) > 动态关键字参数 1.*.args: ​ 接收动态的位置参数,接受任意多个,定义阶段*为聚合,调用阶段*为打散 def func(a,b,*args):#*.args可以替换,*s print(a,b,args) print(a,b,*args) #*为打散 fun…
一.动态参数#形参 有3种动态参数#*args 动态参数,不定长参数def func (*args): print(args,type(args))func(1,2,"alex",3,4,55,5,)#输出结果 (1, 2, 'alex', 3, 4, 55, 5) <class 'tuple'> def func(a,b,c,*args): print(a) print(b) print(c) print(args,type(args))func(1,2,"al…
⼀. 函数参数--动态传参 之前我们说过了传参, 如果我们需要给⼀个函数传参, ⽽参数⼜是不确定的. 或者我给⼀个 函数传很多参数, 我的形参就要写很多, 很⿇烦, 怎么办呢. 我们可以考虑使⽤动态参数. 形参的第三种: 动态参数 动态参数分成两种:1. 动态接收位置参数⾸先我们先回顾⼀下位置参数, 位置参数, 按照位置进⾏传参 ef chi(quality_food, junk_food): print("我要吃", quality_food, junk_food) chi(&quo…
最近看 scala ,看到了它的作用域,特此回顾一下python的变量作用域问题. A = 10 B = 100 print A #10 print globals() #{'A': 10, 'B': 100, '__builtins__': <module '__builtin__' (built-in)>, '__file__': 'E:/PycharmProjects/untitled/test1.py', '__package__': None, '__name__': '__main…
前几天在做一个简单的界面,单击Radiobutton保存字符串,在一个嵌套函数里面修改外部函数.一直不知道怎么修改,上网查了一下,搜关键字“嵌套函数修改变量”,找了好久,才得以解决. 对于python 3来说 nonlocal: 嵌套函数中内部函数修改外部变量的值 没有加该关键字是不能修改的: def outside(): a = 'a' def inside(): a = 'b' print(a) inside() print(a)outside() b a 加关键字后是这样(不能 nonlo…
name = "A" def test(): name = "B" def test2(): global name # global 指的是拿到的是全局的变量,直接改变全局变量 name = "C" test2() print("1",name) # ===>首先使用局部变量 print("2",name) # ===>此处使用全局变量 test() # ===>此处使用局部变量 并将全…
函数的嵌套定义 在一个函数的内部定义另一个函数 为什么要有函数的嵌套定义: 1)函数fn2想直接使用fn1函数的局部变量,可以将fn2直接定义到fn1的内部,这样fn2就可以直接访问fn1的变凉了 2)函数fn2名字就变成fn1的局部变量了,正常只能在fn1中使用,想在外部使用,可以将fn2函数对象作为fn函数的返回值 3)在外部也用同名的变量fn2来接收fn1函数的执行结果,那么fn2也就是可以在外部被调用 global 作用:将局部的变量提升为全局变量 1)全局没有同名变量,直接提升局部变量…
global: 方法之外在modual中的变量定义为全局变量.方法内的变量为局部变量. 一般情况下,全局变量可以被使用,但是不应该被修改,不然会报错. 不过一般不建议对全局变量做修改,如果有多个方法都对全局变量修改,会乱套的. 例子(1): global_var = 123 def test(): global_var = 1 print(global_var) test() print(global_var) ---结果1123 尽管global_var 定义了一个全局变量,但是test方法中…
1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序:位置---*args---默认值---**kwargs 在形参上*聚合, **聚合 在实参上*打散, **打散 # 把列表中的每一个元素作为参数, 传递给函数. 一次都传过去 def func(*args, **kwargs): # *表示聚合,所有的位置参数, 聚合成元组 **聚合成字典 print(args) print(kwargs) def chi(good_food, bad_food,…